19. もくじ
19 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
HDFSの復習
Router-based Federation (RBF)
Observer NameNode
Erasure Coding
20. 問題: メタデータの肥大化
20 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
数千台のクラスタではメタデータがNameNodeのメモリ
サイズの限界に達する
それ以上のデータを保存する場合は別のNameNodeが必
要なので複数のクラスタができる
複数のクラスタはユーザーにとって扱いづらい
ユーザーから見て1つの大きなクラスタとして扱えるよう
にして欲しい
21. Router-based Federation(RBF)とは
21 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Federation Layer
Cluster A
Router
DNDN DN
NN
State Store
Cluster B
Router
DNDN DN
NN
クライアントのリクエストを
ルーティングするフェデレー
ション層を導入
– Router(プロキシサーバー)
– StateStore(マウント情報管理)
クライアントからNameNode
が隠蔽されて複数のクラスタを
1つの大きなクラスタのように
扱うことができる
BA
/
/ad /log
/ /
22. RBFの処理の流れ
22 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Federation Layer
Cluster A
Router
DNDN DN
NN
State Store
Cluster B
Router
DNDN DN
NN
(1)
(2)
(3)
(5)
hadoop fs -get /log/data/file .
(1) クライアントはRouterにリクエストを
送信
(2) RouterはStateStoreに保存されている
マウントテーブルを参照
(3) 適切なNameNodeにルーティングする
(4) NameNodeはRouterを経由しながら
クライアントにレスポンスを返信
(5) クライアントはレスポンスの情報を元
に目的のDataNodeにアクセス
(4)
BA
/
/ad /log
/ /
24. もくじ
24 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
HDFSの復習
Router-based Federation (RBF)
Observer NameNode
– Consistent Reads from Standby Node
Erasure Coding
25. NameNode HAのアーキテクチャ
25 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Active NN Standby NN
Journal nodes
① Read/Write
metadata metadata
EditLog
② Write EditLog ③ Read EditLog
27. metadatametadatametadata
問題: Active NameNodeの責任が重い
27 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Active NN
Standby NNs
Journal nodes
① Read/Write
metadata
EditLog
② Write EditLog
③ Read EditLog
28. metadatametadatametadata
Observer NameNodeの登場
28 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Active NN
Standby
Journal nodes
① Read/Write
metadata
EditLog
② Write EditLog
③ Read EditLog
ObserverObserver
Read
Read処理はObserver
NameNodeから可能!!
Read
29. READリクエストの分散
29 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
READリクエストの分散は効果的である
– 一般的なユースケースではREAD/WRITEのリクエストのうち
約9割がREADリクエスト
ObserverからのREADを優先する機能
– Hadoopクライアントの機能(ObserverReadProxyProvider)
– ObserverからREADできなかったらActiveからREADする
30. Observer NameNodeの状態遷移
30 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Active Standby
Observer
Active-Observer間は直接遷移できない
31. Stale Read 問題
31 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Journal nodes
① write x
② Write EditLog
metadata metadata
EditLog
③ read x
-> doesn’t exist!
stale!
Active NN Observer NN
32. Stale Read 問題の解決: state IDの導入
32 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Journal nodes
metadata metadata
EditLog
Active NN Observer NN
33. Stale Read 問題の解決: state IDの導入
33 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Journal nodes
metadata metadata
EditLog
Active NN Observer NN
34. Stale Read 問題の解決: state IDの導入
34 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Journal nodes
metadata metadata
EditLog
Active NN Observer NN
transaction ID
② Write EditLog
35. Stale Read 問題の解決: state IDの導入
35 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Journal nodes
metadata metadata
EditLog
Active NN Observer NN
transaction ID
② Write EditLog
36. Stale Read 問題の解決: state IDの導入
36 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Journal nodes
metadata metadata
EditLog
Active NN Observer NN
transaction ID
② Write EditLog
state ID
transaction ID
④transaction IDからstate IDを作成
37. Stale Read 問題の解決: state IDの導入
37 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Journal nodes
metadata metadata
EditLog
Active NN Observer NN
transaction ID
② Write EditLog
state ID
transaction ID
④transaction IDからstate IDを作成
38. Stale Read 問題の解決: state IDの導入
38 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Journal nodes
metadata metadata
EditLog
Active NN Observer NN
transaction ID
② Write EditLog
state ID
transaction ID
④transaction IDからstate IDを作成
⑥state IDに含まれたtransaction IDの
EditLogを読み込んでから処理を行う
transaction ID
39. Stale Read 問題の解決: state IDの導入
39 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
transaction ID
Journal nodes
metadata metadata
EditLog
Active NN Observer NN
state ID
transaction ID
⑥state IDに含まれたtransaction IDの
EditLogを読み込んでから処理を行う
② Write EditLog transaction ID
④transaction IDからstate IDを作成
シングルクライアントに関しては
Read-After-Write一貫性を保つ!
40. 開発状況
40 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
開発企業: LinkedIn, Uber, PayPal, Cloudera...
マスターブランチにマージ完了!(2018/12/24)
– Hadoop-3.3.0でリリースされる
– Hadoop2系にもバックポートされそう(HDFS-14204)
41. もくじ
41 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
HDFSの復習
Router-based Federation (RBF)
Observer NameNode
Erasure Coding
42. 問題: ストレージコストが高い
42 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
通常の3レプリケーションでは冗長性を保つために
元データの3倍のストレージコストがかかる
b1
b3
b2 b1 b1b2
b2
b3
b3
DataNode