SlideShare a Scribd company logo
Comparison	of	Transactional	
Libraries	for	HBase
Toshihiro	Suzuki
Solutions	Engineer,	Hortonworks
©	Hortonworks	Inc.	2011	– 2015.	All	Rights	Reserved
2 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
⾃⼰紹介
鈴⽊ 俊裕(すずき としひろ)
à Solutions Engineer, Hortonworks
à 7⽉からHortonworksにジョイン
à 前職は⼤⼿Web企業
– Hadoop/Hiveを⽤いたログ解析基盤の開発・運⽤(5年)
– HBaseを⽤いたソーシャルグラフDB(3年)
à 著書「HBase徹底⼊⾨」
à 最近はScalaを勉強しようと思っている
à Twitter: @brfrn169
3 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
アジェンダ
à 背景
– トランザクションについて
– HBaseについて
– HBaseにおけるトランザクションについて
à Tephraについて
à Omidについて
à Tephra vs Omid
– 機能
– ベンチマーク
à まとめ
4 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
背景
5 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクション処理とは
à トランザクション
– データに対する⼀連の操作を⼀つにまとめた単位のこと
à ⼀般的なOLTPでは、複数のトランザクションが同時並⾏で処
理される
à 複数のトランザクションが整合性を守って⾛るように管理す
る機構が必要
– RDBMSでは標準的に⼊っている機構
6 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクション処理とは
à 例
– ⼝座Aから⼝座Bに1,000ドル移動させたいという銀⾏のトランザ
クション
• (1)⼝座Aに1000ドル以上⼊っていたら、(2)⼝座Aから-1000ドル、(3)
⼝座Bに+1000ドル
• 起こりうる不整合ケースの例
– 引き落としが成功して、⼊⾦が失敗した場合
– 同時に上記のトランザクションが発⽣し、(1)を同時に実⾏してし
まった場合に⼝座Aの残⾦がマイナスになる可能性
» ⼝座Aの残⾦が1000ドルだった場合
• T1: (1) ok (2) A – 1000 (3) B + 1000
• T2: (1)ok (2) A – 1000 (3) B + 1000
» 結果として⼝座Aの残⾦は-1000ドルになってしまう
7 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクション処理とは
à ACIDというトランザクションが満たすべき技術要件
– Atomicity
• 結果がAll-or-Nothingとなること
– Consistency
• ⼀貫性を守ること
– Isolation
• 過程が他のトランザクションから⾒えないこと
– Durability
• (障害が発⽣したとしても)結果が永続化されること
8 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
なぜトランザクション管理機構が必要なのか
à アプリケーションの開発を容易にする
– すべてのクライアントが整合性のとれたデータを⾒ることを保証
– 同時に実⾏される更新からデータを保護
– 更新が失敗した時などのハンドリング
– インデックスとデータの整合性も保証
à 逆にトランザクション管理機構がなかったら上記の保証を全
てアプリケーションでやる必要がある
9 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
なぜトランザクション管理機構が必要なのか
à アプリケーションの開発を容易にする
– すべてのクライアントが整合性のとれたデータを⾒ることを保証
– 同時に実⾏される更新からデータを保護
– 更新が失敗した時などのハンドリング
– インデックスとデータの整合性も保証
à 逆にトランザクション管理機構がなかったら上記の保証を全
てアプリケーションでやる必要がある
HBaseでこれを実現するためのライブラリを調査した
10 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
HBaseについて
à Googleの「Bigtable」のオープンソースクローン
à いわゆる「NoSQL」の⼀つ
à ペタバイトスケールの分散ストレージ
– ⾼可⽤性
– スケーラブル
– 低レイテンシー
à よく使われるユースケース
– ユーザのセッションDB
– オブジェクトストア/メッセージストア
– センサー系のアプリケーションのストレージ
– グラフデータのためのストレージ
11 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
HBaseのアーキテクチャ
Master
RegionServer RegionServer RegionServer
HDFS
Zookeeper
Client
12 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
HBaseのアーキテクチャ
à TableのデータはRegionに分割
– RegionはいずれかのRegionServer
に割り当てられる
à RegionServerがダウンした場合
は割り当てられていたRegionは
フェイルオーバされる
à サイズが⼤きくなったRegionは分
割することが可能
Region1
RegionServers
Region2
Region3
Region4
Region4
Region6
13 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
HBaseのデータモデル
à 分散ソートマップ
– (row key, column, timestamp) -> value
• columnはcolumn familyとcolumn qualifierで構成される
• row key, columnでソートされている
• timestampはバージョンを表している
– Regionはrow keyの範囲で分割される
row key column timestamp value
row1 cf:col1 1000 value2
row1 cf:col2 1200 value4
row2 cf:col1 2000 value6
row3 cf:col1 1000 value3
row3 cf:col1 300 value1
row3 cf:col2 1500 value5
14 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
HBaseにおけるトランザクションについて
à Row内の更新はアトミックに⾏われる
– 複数columnを同時に変更しても途中の状態が⾒えることはない
– IncrementやCASも可能
à Region内のバッチ処理もアトミックに⾏うことが可能
à 複数Regionにまたがる更新をアトミックに⾏うことはできない
à 複数Tableにまたがる更新もアトミックに⾏うことはできない
à 複数RPCの更新もアトミックに⾏うことはできない
15 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
HBaseにおけるトランザクションについて
à Row内の更新はアトミックに⾏われる
– 複数columnを同時に変更しても途中の状態が⾒えることはない
– IncrementやCASも可能
à Region内のバッチ処理もアトミックに⾏うことが可能
à 複数Regionにまたがる更新をアトミックに⾏うことはできない
à 複数Tableにまたがる更新もアトミックに⾏うことはできない
à 複数RPCの更新もアトミックに⾏うことはできない
HBaseは限定されたトランザクション管理機構しかない
16 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
HBase上でトランザクションを実現しているライブラリ
à Tephra
à Omid
à Trafodion
à Themis
17 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
HBase上でトランザクションを実現しているライブラリ
à Tephra
à Omid
à Trafodion
à Themis
18 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
Tephraについて
19 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
Tephra
à Apache Incubatorプロジェクト
à Snapshot Isolationを実現
– Multi Version Concurrency Control
– Optimistic Concurrency Control
à Phoenixのトランザクション機能を実現するために⽤いられ
ている
20 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
Snapshot Isolation
à 分離レベルの⼀つ
à 以下の性質を持つ
– トランザクションは⼀貫性のあるデータベースのスナップショッ
ト(トランザクション開始時に存在していた最後にコミットされた
値)を読む
– トランザクションの更新がスナップショット以降に他のトランザ
クションがコミットした更新と競合しない場合に限りトランザク
ションが成功する
21 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
Multi Version Concurrency Control
à トランザクションを開始時点のスナップショットを読むとい
うやり⽅なので複数バージョンが存在できなければならない
à HBaseのバージョン(timestamp)を利⽤した実装
à トランザクション内すべての更新は同じバージョン(トランザ
クションID)を使って書き込まれる
à トランザクション内の読み込みは、コミットされてないトラ
ンザクションを除外する
– データ取得時にtimestampの範囲を指定する
à ⾃分のコミットされていない更新は⾒える
22 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
Optimistic Concurrency Control
à いわゆる楽観ロック
à トランザクションの開始時には特に排他制御を⾏わず、コ
ミット時に競合の検出を⾏うやり⽅
à 対照的なやり⽅としてはPessimistic Concurrency Control
– いわゆる悲観ロック
– トランザクション開始時に排他制御(主にロック等)を⾏う⽅法
à メリット
– Tableやrowに対するロックのコストの回避
– デットロックやロックエスカレーションの回避
– 短いトランザクションにおいてコストが低くなる
23 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
Tephraのアーキテクチャ
Client	1
Client	2
・
・
・
Client	N
HBase
Zookeeper
Tx Server
(active)
Tx Server
(stanby)
TransactionProcessor
Coprocessor
24 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションのライフサイクル
start	tx
in	progress
Client Tx serverRPC	API
do	work
try	commit
try	abort
start	tx
check	conflicts
complete
invalid
start
commit
none
abort
invalidate
timeout
rollback
failed
failed
succeeded
25 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1002
read	=	1001
Client	2
row
key
column time
stamp
value
row cf:col 1001 10
HBase
26 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1002
read	=	1001
write	=	1002
read	=	1001
Client	2
start
row
key
column time
stamp
value
row cf:col 1001 10
HBase
27 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1003
read	=	1001
inprogress=[1002]
write	=	1002
read	=	1001
Client	2
start
row
key
column time
stamp
value
row cf:col 1001 10
HBase
28 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1003
read	=	1001
inprogress=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
HBase
write	=	1002
read	=	1001
Client	2
increment
29 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1003
read	=	1001
inprogress=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
HBase
write	=	1002
read	=	1001
Client	2
increment
30 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1003
read	=	1001
inprogress=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
HBase
write	=	1002
read	=	1001
Client	2
start
write	=	1003
read	=	1001
exclude=[1002]
31 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[1002,	1003]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
HBase
write	=	1002
read	=	1001
Client	2
start
write	=	1003
read	=	1001
exclude=[1002]
32 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[1002,	1003]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
write	=	1003
read	=	1001
exclude=[1002]
increment
33 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[1002,	1003]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
write	=	1003
read	=	1001
exclude=[1002]
commit
34 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
write	=	1003
read	=	1001
exclude=[1002]
commit
35 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
commit
36 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
conflict!
37 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
rollback
38 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
rollback
39 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
abort
40 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
abort
41 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1004
read	=	1003
inprogress=[]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
abort
42 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1005
read	=	1003
inprogress=[]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1003 11
HBase
Client	2
write	=	1004
read	=	1003
start
43 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1
Tx Server
write	=	1005
read	=	1003
inprogress=[]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1003 11
HBase
Client	2
write	=	1004
read	=	1003
read
44 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(ロールバックに失敗した時)
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
conflict!
45 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(ロールバックに失敗した時)
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
rollback
46 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(ロールバックに失敗した時)
Client	1
Tx Server
write	=	1004
read	=	1001
inprogress=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
rollback
47 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(ロールバックに失敗した時)
Client	1
Tx Server
write	=	1004
read	=	1003
inprogress=[]
invalid=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
row cf:col 1003 11
HBase
write	=	1002
read	=	1001
Client	2
invalidate
48 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(ロールバックに失敗した時)
Client	1
Tx Server
write	=	1005
read	=	1003
inprogress=[]
invalid=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
row cf:col 1003 11
HBase
Client	2
start
write	=	1004
read	=	1003
exclude=[1002]
49 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(ロールバックに失敗した時)
Client	1
Tx Server
write	=	1005
read	=	1003
inprogress=[]
invalid=[1002]
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col 1002 11
row cf:col 1003 11
HBase
Client	2
read
write	=	1004
read	=	1003
exclude=[1002]
invisible!
50 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れのポイント
à Transaction Server
– トランザクションIDを管理
• Writeポインタ、Readポインタ
– トランザクションの状態を管理
• in-progress, committed, invalid
à トランザクション開始時にクライアントは以下を受け取る
– Writeポインタ: HBaseへ書き込むtimestamp
– Readポインタ: HBaseから読み込む上限のtimestamp
– Excludes: 読み込まないtimestamp
à 競合の検出はTransaction Serverが⾏う
à 競合が検出されたらクライアントがロールバックする
51 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
Omidについて
52 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
Omid
à Apache Incubatorプロジェクト
à Snapshot Isolation
– Multi Version Concurrency Control
– Lock-free
à HiveのMetastoreの実装に⽤いられている
à Yahooの本番環境で使われている
53 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
Omidのアーキテクチャ
Transactional
Client	
HBase
The	Server	Oracle	/
Timestamp	Oracle
Commit
Table
App	Table	/
Shadow	Cells	
Compactor
(Coprocessor)
54 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
55 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
shadow	cell
Commit	Table
commit	time
56 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1003
begin
57 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1004
begin
start	time	=	1003
58 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1004
increment
start	time	=	1003
59 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1004
increment
start	time	=	1003
取得したいcellに対応す
る(timestampが一致する)
shadow	cellを取得
60 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1004
increment
start	time	=	1003
そのshadow	cellのvalue (1002)
よりstart	time(1003)が大きいの
でスナップショットに入れること
ができる
61 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1004
increment
start	time	=	1003
62 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1004commit
start	time	=	1003
63 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1004
start	time	=	1003
競合の検出
何もなければ…
commit
64 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
1003 1004
TSO/TO
Client	2	
App	Table
Commit	Table
start	time	=	1003
timestamp	=	1005
Commit	Tableへ
書き込み
65 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
1003 1004
TSO/TO
Client	2	
App	Table
Commit	Table
start	time	=	1003
commit	time	=	1004
timestamp	=	1005
commit	time
66 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1003 1004
row cf:col_sc 1001 1002
start
time
commit
time
1003 1004
TSO/TO
Client	2	
App	Table
Commit	Table
start	time	=	1003
commit	time	=	1004
timestamp	=	1005
shadow	cellの書き込み
67 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1003 1004
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
start	time	=	1003
commit	time	=	1004
timestamp	=	1005
Commit	Table
から削除
68 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1004
increment
start	time	=	1003
69 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1004
start	time	=	1003
begin
70 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1005
start	time	=	1003
begin
start	time	=	1004
71 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1005
start	time	=	1003
start	time	=	1004
increment
72 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1005
start	time	=	1003
start	time	=	1004
increment
取得したいcellに対応する
shadow	cellが存在しない
73 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1005
start	time	=	1003
start	time	=	1004
increment
Commit	Tableに存在する
かも確認する
74 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1005
start	time	=	1003
start	time	=	1004
increment
Commit	Tableにも存在しな
いのでスナップショットに入
れることはできない
75 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1005
start	time	=	1003
start	time	=	1004
increment
取得したいcellに対応する
shadow	cellが存在する
76 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1005
start	time	=	1003
start	time	=	1004
そのshadow	cellのvalue (1002)
よりstart	time(1004)が大きいの
でスナップショットに入れること
ができる
increment
77 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1004 11
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1005
start	time	=	1003
start	time	=	1004
increment
78 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1004 11
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1005
start	time	=	1003
start	time	=	1004
commit
競合の検出
何もなければ…
79 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1004 11
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
1004 1005
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1006
start	time	=	1003
start	time	=	1004
Commit	Tableへ
書き込み
80 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1004 11
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1001 1002
start
time
commit
time
1004 1005
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1006
start	time	=	1003
start	time	=	1004
commit	time	=	1005
commit	time
81 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1004 11
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1004 1005
row cf:col_sc 1001 1002
start
time
commit
time
1004 1005
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1006
start	time	=	1003
start	time	=	1004
commit	time	=	1005
shadow	cellの書き込み
82 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1004 11
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1004 1005
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1006
start	time	=	1003
start	time	=	1004
commit	time	=	1005
Commit	Table
から削除
83 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1004 11
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1004 1005
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1006
start	time	=	1003
commit
84 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1004 11
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1004 1005
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1006
start	time	=	1003
commit
競合発生!
85 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れ(競合が発⽣した時)
Client	1	
row
key
column time
stamp
value
row cf:col 1004 11
row cf:col 1003 11
row cf:col 1001 10
row cf:col_sc 1004 1005
row cf:col_sc 1001 1002
start
time
commit
time
TSO/TO
Client	2	
App	Table
Commit	Table
timestamp	=	1006
トランザクション
はabortされ
rollbackする
86 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
トランザクションの流れのポイント
à トランザクション開始時にTSO/TOからstart timeを受け取
る
– それがトランザクションを表すトラザクションIDとなる
– 読み込みにも書き込みにも使われる
à Shadow Cell
– そのデータがコミットされているかどうかの判定
– どのtimestmapにコミットされたか(commit time)
à 競合の検出はTSO/TOで⾏われる
à 競合が検出されたらクライアントはロールバックを⾏う
87 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
Tephra	vs	Omid
88 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
TephraとOmidの⽐較表
Tephra Omid
バージョン 0.7.1 0.8.2.0
プロジェクト Apache	Incubator Apache	Incubator
実装言語 Java Java
分離レベル Snapshot	Isolation Snapshot	Isolation
実装 MVCC	+	OCC MVCC +	lock-free
API Java	API	(Phoenix経由でJDBC,	REST等) Java	API
対応している操作 get,	put,	delete,	exists,	scan,	batch get,	put,	delete,	scan
HA 対応 対応
Read	Only	Transaction 非対応 対応
大きなユースケース Phoenix Hive	Metastore
ドキュメント
(個人的な感想)
△ △
89 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
ベンチマーク
à ※結果はあくまでも参考値です。環境や設定、ワークロード
によって結果は⼤きく変わる可能性があります。もしこれら
のライブラリを使う場合は別途検証することをお勧めします
à 環境
– Master × 1 CPU 4core, Memory 8GB
– RegionServer × 3 CPU 4core, Memory 8GB
– Transaction Server, TSO × 1 CPU 4core, Memory 8GB
– 負荷を掛けるサーバ × 1 CPU 4core, Memory 8GB
90 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
ベンチマーク
à ワークロード
– トランザクション開始
– 1000個のRowの中からランダムに選択
– 選択したRowに対してGet
– 選択したRowに対してPut
– トランザクション終了
– 100スレッドで上記ワークロードを30分間実⾏
• HBase直接(ライブラリなし)、Tephra、 Omid
– 競合は3〜15%位発⽣していた
91 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
ベンチマーク
à 結果 HBase直接 スループット (req/sec)
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
0
30
60
90
120
150
180
210
240
270
300
330
360
390
420
450
480
510
540
570
600
630
660
690
720
750
780
810
840
870
900
930
960
990
1020
1050
1080
1110
1140
1170
1200
1230
1260
1290
1320
1350
1380
1410
1440
1470
1500
1530
1560
1590
1620
1650
1680
1710
1740
1770
1800
hbase	throughput	(req/sec)
92 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
ベンチマーク
à 結果 HBase直接 レイテンシ (ms)
0
5
10
15
20
25
30
35
40
45
50
0
30
60
90
120
150
180
210
240
270
300
330
360
390
420
450
480
510
540
570
600
630
660
690
720
750
780
810
840
870
900
930
960
990
1020
1050
1080
1110
1140
1170
1200
1230
1260
1290
1320
1350
1380
1410
1440
1470
1500
1530
1560
1590
1620
1650
1680
1710
1740
1770
1800
hbase	latency	(ms)
mean p50 p75 p95 p98 p99
93 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
ベンチマーク
à 結果 Tephra スループット (req/sec)
0
200
400
600
800
1000
1200
1400
1600
0
30
60
90
120
150
180
210
240
270
300
330
360
390
420
450
480
510
540
570
600
630
660
690
720
750
780
810
840
870
900
930
960
990
1020
1050
1080
1110
1140
1170
1200
1230
1260
1290
1320
1350
1380
1410
1440
1470
1500
1530
1560
1590
1620
1650
1680
1710
1740
1770
1800
tephra	throughput	(req/sec)
94 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
ベンチマーク
à 結果 Tephra レイテンシ (ms)
0
20
40
60
80
100
120
140
0
30
60
90
120
150
180
210
240
270
300
330
360
390
420
450
480
510
540
570
600
630
660
690
720
750
780
810
840
870
900
930
960
990
1020
1050
1080
1110
1140
1170
1200
1230
1260
1290
1320
1350
1380
1410
1440
1470
1500
1530
1560
1590
1620
1650
1680
1710
1740
1770
1800
tephra	latency	(ms)
mean p50 p75 p95 p98 p99
95 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
ベンチマーク
à 結果 Omid スループット (req/sec)
0
500
1000
1500
2000
2500
0
30
60
90
120
150
180
210
240
270
300
330
360
390
420
450
480
510
540
570
600
630
660
690
720
750
780
810
840
870
900
930
960
990
1020
1050
1080
1110
1140
1170
1200
1230
1260
1290
1320
1350
1380
1410
1440
1470
1500
1530
1560
1590
1620
1650
1680
1710
1740
1770
1800
omid	throughput	(req/sec)
96 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
ベンチマーク
à 結果 Omid レイテンシ (ms)
0
20
40
60
80
100
120
140
160
180
200
0
30
60
90
120
150
180
210
240
270
300
330
360
390
420
450
480
510
540
570
600
630
660
690
720
750
780
810
840
870
900
930
960
990
1020
1050
1080
1110
1140
1170
1200
1230
1260
1290
1320
1350
1380
1410
1440
1470
1500
1530
1560
1590
1620
1650
1680
1710
1740
1770
1800
omid	latency	(ms)
mean p50 p75 p95 p98 p99
97 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
ベンチマーク
à 考察
– HBase直接と⽐較して、Tephra, Omidを使うとスループットが数
分の1まで遅くなる
– TephraとOmidを⽐較すると若⼲Omidの⽅がパフォーマンスが良
かった
• 今回はパフォーマンスチューニングまではできていないので、今後やっ
てみたい
– TephraのTransaction Serverと⽐較して、OmidのTSOの⽅が負
荷が⾼かった
98 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
まとめ
99 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
まとめ
à HBase上でトランザクションを実現するライブラリについて
解説
– Tephra
– Omid
à Tephra vs Omid
– 機能の違い
– 簡単なベンチマーク
100 ©	Hortonworks	Inc.	2011	– 2016.	All	Rights	Reserved
Thank	You

More Related Content

PDF
OLAP options on Hadoop
PDF
Yifeng hadoop-present-public
PDF
Hive-sub-second-sql-on-hadoop-public
PDF
Yifeng spark-final-public
PDF
Hadoop/Spark セルフサービス系の事例まとめ
PDF
Hiveを高速化するLLAP
PDF
IoTアプリケーションで利用するApache NiFi
PDF
Deep Learning On Apache Spark
OLAP options on Hadoop
Yifeng hadoop-present-public
Hive-sub-second-sql-on-hadoop-public
Yifeng spark-final-public
Hadoop/Spark セルフサービス系の事例まとめ
Hiveを高速化するLLAP
IoTアプリケーションで利用するApache NiFi
Deep Learning On Apache Spark

What's hot (20)

PDF
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
PDF
Apache Hiveの今とこれから - 2016
PDF
Apache ambari
PDF
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
PDF
Spark at Scale
PDF
Case study of DevOps for Hadoop in Recruit.
PDF
Hadoop最新事情とHortonworks Data Platform
PDF
HDP Security Overview
PDF
Beginner must-see! A future that can be opened by learning Hadoop
PDF
Apache Ambari Overview -- Hadoop for Everyone
PPTX
sparksql-hive-bench-by-nec-hwx-at-hcj16
PDF
HDInsight & CosmosDB - Global IoT · Big data processing infrastructure
PPTX
The truth about SQL and Data Warehousing on Hadoop
PDF
Data Science on Hadoop
PPTX
Struggle against crossdomain data complexity in Recruit Group
PPTX
A Benchmark Test on Presto, Spark Sql and Hive on Tez
PDF
NTT Communications' Initiatives to Utilize Infrastructure Data
PDF
Hadoopとは
PDF
A Tour of PostgreSQL
 
PPTX
Case Study: OLAP usability on Spark and Hadoop
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
Apache Hiveの今とこれから - 2016
Apache ambari
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Spark at Scale
Case study of DevOps for Hadoop in Recruit.
Hadoop最新事情とHortonworks Data Platform
HDP Security Overview
Beginner must-see! A future that can be opened by learning Hadoop
Apache Ambari Overview -- Hadoop for Everyone
sparksql-hive-bench-by-nec-hwx-at-hcj16
HDInsight & CosmosDB - Global IoT · Big data processing infrastructure
The truth about SQL and Data Warehousing on Hadoop
Data Science on Hadoop
Struggle against crossdomain data complexity in Recruit Group
A Benchmark Test on Presto, Spark Sql and Hive on Tez
NTT Communications' Initiatives to Utilize Infrastructure Data
Hadoopとは
A Tour of PostgreSQL
 
Case Study: OLAP usability on Spark and Hadoop
Ad

Viewers also liked (20)

PPTX
Hadoop Summit Tokyo Apache NiFi Crash Course
PPTX
From a single droplet to a full bottle, our journey to Hadoop at Coca-Cola Ea...
PDF
Hadoop Summit Tokyo HDP Sandbox Workshop
PPTX
Why is my Hadoop cluster slow?
PDF
#HSTokyo16 Apache Spark Crash Course
PPTX
Apache Hadoop 3.0 What's new in YARN and MapReduce
PPTX
Major advancements in Apache Hive towards full support of SQL compliance
PPTX
How to overcome mysterious problems caused by large and multi-tenancy Hadoop ...
PDF
Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE
PPTX
Rebuilding Web Tracking Infrastructure for Scale
PDF
The real world use of Big Data to change business
PPTX
Streamline Hadoop DevOps with Apache Ambari
PPTX
Network for the Large-scale Hadoop cluster at Yahoo! JAPAN
PPTX
SEGA : Growth hacking by Spark ML for Mobile games
PPTX
Leveraging smart meter data for electric utilities: Comparison of Spark SQL w...
PPTX
Use case and Live demo : Agile data integration from Legacy system to Hadoop ...
PPTX
A Container-based Sizing Framework for Apache Hadoop/Spark Clusters
PPTX
Evolving HDFS to a Generalized Distributed Storage Subsystem
PPTX
What's new in Hadoop Common and HDFS
PPTX
A Multi Colored YARN
Hadoop Summit Tokyo Apache NiFi Crash Course
From a single droplet to a full bottle, our journey to Hadoop at Coca-Cola Ea...
Hadoop Summit Tokyo HDP Sandbox Workshop
Why is my Hadoop cluster slow?
#HSTokyo16 Apache Spark Crash Course
Apache Hadoop 3.0 What's new in YARN and MapReduce
Major advancements in Apache Hive towards full support of SQL compliance
How to overcome mysterious problems caused by large and multi-tenancy Hadoop ...
Generating Recommendations at Amazon Scale with Apache Spark and Amazon DSSTNE
Rebuilding Web Tracking Infrastructure for Scale
The real world use of Big Data to change business
Streamline Hadoop DevOps with Apache Ambari
Network for the Large-scale Hadoop cluster at Yahoo! JAPAN
SEGA : Growth hacking by Spark ML for Mobile games
Leveraging smart meter data for electric utilities: Comparison of Spark SQL w...
Use case and Live demo : Agile data integration from Legacy system to Hadoop ...
A Container-based Sizing Framework for Apache Hadoop/Spark Clusters
Evolving HDFS to a Generalized Distributed Storage Subsystem
What's new in Hadoop Common and HDFS
A Multi Colored YARN
Ad

Similar to Comparison of Transactional Libraries for HBase (20)

PDF
トランザクションの並行実行制御 rev.2
PDF
20120405 setsunaセミナー
PDF
20分でわかるHBase
PPT
Transactional Information Systems入門
PDF
Cassandraのトランザクションサポート化 & web2pyによるcms用プラグイン開発
PPTX
React+redux+saga 03
PDF
トランザクションの並行処理制御
PDF
Typesafe Reactive Platformで作るReactive System
PDF
マルチ テナント クラウド アプリケーションの設計手法
PDF
HBaseCon 2012 参加レポート
PPTX
20160115nodered design patterns
PDF
なぜリアクティブは重要か #ScalaMatsuri
PPTX
たのしいNode.js
PDF
20190219 hyperledger tokyo_meetup_min_bft
PDF
20120423 hbase勉強会
PPTX
イベント駆動プログラミングとI/O多重化
PDF
Guide to Cassandra for Production Deployments
PDF
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
PDF
Transaction description how to use it in laravel
PPTX
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能
トランザクションの並行実行制御 rev.2
20120405 setsunaセミナー
20分でわかるHBase
Transactional Information Systems入門
Cassandraのトランザクションサポート化 & web2pyによるcms用プラグイン開発
React+redux+saga 03
トランザクションの並行処理制御
Typesafe Reactive Platformで作るReactive System
マルチ テナント クラウド アプリケーションの設計手法
HBaseCon 2012 参加レポート
20160115nodered design patterns
なぜリアクティブは重要か #ScalaMatsuri
たのしいNode.js
20190219 hyperledger tokyo_meetup_min_bft
20120423 hbase勉強会
イベント駆動プログラミングとI/O多重化
Guide to Cassandra for Production Deployments
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
Transaction description how to use it in laravel
Spring I/O 2019 報告 Spring Frameworkのロードマップと5.2の新機能

More from DataWorks Summit/Hadoop Summit (20)

PPT
Running Apache Spark & Apache Zeppelin in Production
PPT
State of Security: Apache Spark & Apache Zeppelin
PDF
Unleashing the Power of Apache Atlas with Apache Ranger
PDF
Enabling Digital Diagnostics with a Data Science Platform
PDF
Revolutionize Text Mining with Spark and Zeppelin
PDF
Double Your Hadoop Performance with Hortonworks SmartSense
PDF
Hadoop Crash Course
PDF
Data Science Crash Course
PDF
Apache Spark Crash Course
PDF
Dataflow with Apache NiFi
PPTX
Schema Registry - Set you Data Free
PPTX
Building a Large-Scale, Adaptive Recommendation Engine with Apache Flink and ...
PDF
Real-Time Anomaly Detection using LSTM Auto-Encoders with Deep Learning4J on ...
PPTX
Mool - Automated Log Analysis using Data Science and ML
PPTX
How Hadoop Makes the Natixis Pack More Efficient
PPTX
HBase in Practice
PPTX
The Challenge of Driving Business Value from the Analytics of Things (AOT)
PDF
Breaking the 1 Million OPS/SEC Barrier in HOPS Hadoop
PPTX
From Regulatory Process Verification to Predictive Maintenance and Beyond wit...
PPTX
Backup and Disaster Recovery in Hadoop
Running Apache Spark & Apache Zeppelin in Production
State of Security: Apache Spark & Apache Zeppelin
Unleashing the Power of Apache Atlas with Apache Ranger
Enabling Digital Diagnostics with a Data Science Platform
Revolutionize Text Mining with Spark and Zeppelin
Double Your Hadoop Performance with Hortonworks SmartSense
Hadoop Crash Course
Data Science Crash Course
Apache Spark Crash Course
Dataflow with Apache NiFi
Schema Registry - Set you Data Free
Building a Large-Scale, Adaptive Recommendation Engine with Apache Flink and ...
Real-Time Anomaly Detection using LSTM Auto-Encoders with Deep Learning4J on ...
Mool - Automated Log Analysis using Data Science and ML
How Hadoop Makes the Natixis Pack More Efficient
HBase in Practice
The Challenge of Driving Business Value from the Analytics of Things (AOT)
Breaking the 1 Million OPS/SEC Barrier in HOPS Hadoop
From Regulatory Process Verification to Predictive Maintenance and Beyond wit...
Backup and Disaster Recovery in Hadoop

Comparison of Transactional Libraries for HBase