HDFSのスケーラビリティの限界を
突破するためのさまざまな取り組み
〜エクサバイト級の分散ストレージを目指して〜
ヤフー株式会社 浅沼 孝信
2019年3月14日
自己紹介
2 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 名前
– 浅沼 孝信
 業務履歴
– 2012年度新卒入社
– HadoopやNiFiを用いた社内インフラの設計・開発
– Hadoopを中心としたOSS開発
– 2018年7月よりHadoopコミッター
もくじ
3 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 HDFSの復習
 Router-based Federation (RBF)
 Observer NameNode
 Erasure Coding
もくじ
4 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 HDFSの復習
 Router-based Federation (RBF)
 Observer NameNode
 Erasure Coding
HDFS: アーキテクチャー
5
NameNode
DataNode
File
metadata
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Client
HDFS: アーキテクチャー
6
NameNode
DataNode
b1
b2
b3
128MB
128MB
metadata
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Client
HDFS: アーキテクチャー
7
NameNode
DataNode
b1
b2
b3
128MB
128MB
metadatab1を保存したいです
d1, d3, d5に保存してください
d1 d2 d3 d4 d5 d6
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Client
HDFS: アーキテクチャー
8
b1 b1 b1
NameNode
DataNode
b1
b2
b3
128MB
128MB
metadata
Block Report
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Client
HDFS: アーキテクチャー
9
b1
b3
b2 b1 b1b2
b2
b3
b3
NameNode
DataNode
b1
b2
b3
128MB
128MB
metadata
Block Report
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Client
HDFS: NameNodeのメタデータ
10
b1
b3
b2 b1 b1b2
b2
b3
b3
NameNode
DataNode
b1
b2
b3
128MB
128MB
metadata
NameSpace
Block Map
File -> BlockID BlockID -> DN
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Client
HDFS: NameNodeのメタデータ
11
b1
b3
b2 b1 b1b2
b2
b3
b3
NameNode
DataNode
b1
b2
b3
128MB
128MB
metadata
NameSpace
Block Map
File -> BlockID BlockID -> DN
EditLog
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
persist
Client
HDFSのすごいところ
12 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 強い一貫性
– 1台のマスターが全てのメタデータをメモリ上で管理しているので、
あるユーザーが行なったオペレーションが他のユーザーから見ても
瞬時に反映される
 スケーラビリティ
– 1000台ぐらい(数十PB)までならコモディティなサーバーを追加す
るだけで線形にスケールする
HDFSのスケーラビリティの限界
13 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 数千台の大規模なクラスタやワークロードの重いク
ラスタではスケーラビリティの限界に達してさまざ
まな問題が生じる!
HDFSのスケーラビリティの限界
14 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
b1
b3
b2 b1 b1b2
b2
b3
b3
NameNode
metadata
NameSpace
Block Map
File -> BlockID BlockID -> DN
b1
b2
b3
128MB
128MB
Client
DataNode
HDFSのスケーラビリティの限界
15 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
b1
b3
b2 b1 b1b2
b2
b3
b3
NameNode
metadata
NameSpace
Block Map
File -> BlockID BlockID -> DN
b1
b2
b3
128MB
128MB
Client
①メタデータの肥大化
DataNode
HDFSのスケーラビリティの限界
16 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
b1
b3
b2 b1 b1b2
b2
b3
b3
NameNode
metadata
NameSpace
Block Map
File -> BlockID BlockID -> DN
b1
b2
b3
128MB
128MB
Client
①メタデータの肥大化
②リクエスト量の増大
DataNode
HDFSのスケーラビリティの限界
17 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
b1
b3
b2 b1 b1b2
b2
b3
b3
NameNode
metadata
NameSpace
Block Map
File -> BlockID BlockID -> DN
b1
b2
b3
128MB
128MB
Client
①メタデータの肥大化
②リクエスト量の増大
③レプリケーションのストレージコストが高い
DataNode
新機能でスケーラビリティ向上!
18 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
b1
b3
b2 b1 b1b2
b2
b3
b3
NameNode
metadata
NameSpace
Block Map
File -> BlockID BlockID -> DN
b1
b2
b3
128MB
128MB
Client
①メタデータの肥大化
→ Router-based Federation
②リクエスト量の増大
→ Observer NameNode
③レプリケーションのストレージコストが高い → Erasure Coding
DataNode
もくじ
19 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 HDFSの復習
 Router-based Federation (RBF)
 Observer NameNode
 Erasure Coding
問題: メタデータの肥大化
20 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 数千台のクラスタではメタデータがNameNodeのメモリ
サイズの限界に達する
 それ以上のデータを保存する場合は別のNameNodeが必
要なので複数のクラスタができる
 複数のクラスタはユーザーにとって扱いづらい
ユーザーから見て1つの大きなクラスタとして扱えるよう
にして欲しい
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
/ /
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
/ /
RBFの開発状況
23 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 開発企業
– Microsoft, Uber, VipShop, Huawei, LinkedIn, Cloudera,
Yahoo! JAPAN...
 現在はセキュリティ機能を開発中(HDFS-13532)
– UberやMicrosoftが中心
– ケルベロス認証のベースの実装が完了
– デリゲーショントークンに対応
– Hadoop-3.3.0に入りそう
もくじ
24 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 HDFSの復習
 Router-based Federation (RBF)
 Observer NameNode
– Consistent Reads from Standby Node
 Erasure Coding
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
metadatametadatametadata
複数NameNodeの機能(HDFS-6440)
26 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Active NN
Standby NNs
Journal nodes
① Read/Write
metadata
EditLog
② Write EditLog
③ Read EditLog
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
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
READリクエストの分散
29 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 READリクエストの分散は効果的である
– 一般的なユースケースではREAD/WRITEのリクエストのうち
約9割がREADリクエスト
 ObserverからのREADを優先する機能
– Hadoopクライアントの機能(ObserverReadProxyProvider)
– ObserverからREADできなかったらActiveからREADする
Observer NameNodeの状態遷移
30 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Active Standby
Observer
Active-Observer間は直接遷移できない
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
Stale Read 問題の解決: state IDの導入
32 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Journal nodes
metadata metadata
EditLog
Active NN Observer NN
Stale Read 問題の解決: state IDの導入
33 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Journal nodes
metadata metadata
EditLog
Active NN Observer NN
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
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
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を作成
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を作成
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
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 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 開発企業: LinkedIn, Uber, PayPal, Cloudera...
 マスターブランチにマージ完了!(2018/12/24)
– Hadoop-3.3.0でリリースされる
– Hadoop2系にもバックポートされそう(HDFS-14204)
もくじ
41 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 HDFSの復習
 Router-based Federation (RBF)
 Observer NameNode
 Erasure Coding
問題: ストレージコストが高い
42 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 通常の3レプリケーションでは冗長性を保つために
元データの3倍のストレージコストがかかる
b1
b3
b2 b1 b1b2
b2
b3
b3
DataNode
 6個のデータブロックから3個のパリティブロックを生成
 9個のブロックうち任意の6個ブロックから元データを復元可能
 レプリケーションの半分のストレージコストで同等の冗長性を実現!
Erasure Coding(EC)とは
43 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
b1 b3 b4 b6 b7 b8b2 b5 b9
Replication Erasure Coding (6, 3)
損失の許容できるブロック数 2 3
元データに対するストレージコスト 3倍 1.5倍
encode
データ量が多いほど顕著な差が出る
44 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
レプリケーション EC 元データ
ストレージコスト
データ量
ECブロックの実装の詳細
45 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
1MB
1MB
b1 b2 b3 b4 b5 b6 b7 b8 b9
ECブロックの実装の詳細
46 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
b1 b2 b3 b4 b5 b6 b7 b8 b9
開発状況など
47 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 開発自体はだいぶ前に完了
– 新機能の開発はしばらく無し
– 細かい改善・バグ修正が行われている
 利用できるのはHadoop3系から
– ユーザーが増えるのはこれから
 解説記事(拙著)
– HDFS Erasure Codingの紹介とYahoo! JAPANにおける運用事例
https://techblog.yahoo.co.jp/infrastructure/hdfs_erasure_coding
番外編: Ozone
48 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
 Hadoopのオブジェクトストア
 HDFSのアーキテクチャを刷新
 マスターのメタデータ肥大化問題を根本的に解決
HDFSの新機能のリリースプラン
49 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Router-based
Federation
Erasure Coding
RBF with Security
Observer NameNode
Ozone
trunk
~ 3.2.0 (2019/01) 3.3.0

HDFSのスケーラビリティの限界を突破するためのさまざまな取り組み | Hadoop / Spark Conference Japan 2019 #hcj2019

  • 1.
  • 2.
    自己紹介 2 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  名前 – 浅沼 孝信  業務履歴 – 2012年度新卒入社 – HadoopやNiFiを用いた社内インフラの設計・開発 – Hadoopを中心としたOSS開発 – 2018年7月よりHadoopコミッター
  • 3.
    もくじ 3 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  HDFSの復習  Router-based Federation (RBF)  Observer NameNode  Erasure Coding
  • 4.
    もくじ 4 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  HDFSの復習  Router-based Federation (RBF)  Observer NameNode  Erasure Coding
  • 5.
    HDFS: アーキテクチャー 5 NameNode DataNode File metadata Copyright (C)2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Client
  • 6.
    HDFS: アーキテクチャー 6 NameNode DataNode b1 b2 b3 128MB 128MB metadata Copyright (C)2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Client
  • 7.
    HDFS: アーキテクチャー 7 NameNode DataNode b1 b2 b3 128MB 128MB metadatab1を保存したいです d1, d3,d5に保存してください d1 d2 d3 d4 d5 d6 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Client
  • 8.
    HDFS: アーキテクチャー 8 b1 b1b1 NameNode DataNode b1 b2 b3 128MB 128MB metadata Block Report Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Client
  • 9.
    HDFS: アーキテクチャー 9 b1 b3 b2 b1b1b2 b2 b3 b3 NameNode DataNode b1 b2 b3 128MB 128MB metadata Block Report Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Client
  • 10.
    HDFS: NameNodeのメタデータ 10 b1 b3 b2 b1b1b2 b2 b3 b3 NameNode DataNode b1 b2 b3 128MB 128MB metadata NameSpace Block Map File -> BlockID BlockID -> DN Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Client
  • 11.
    HDFS: NameNodeのメタデータ 11 b1 b3 b2 b1b1b2 b2 b3 b3 NameNode DataNode b1 b2 b3 128MB 128MB metadata NameSpace Block Map File -> BlockID BlockID -> DN EditLog Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 persist Client
  • 12.
    HDFSのすごいところ 12 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  強い一貫性 – 1台のマスターが全てのメタデータをメモリ上で管理しているので、 あるユーザーが行なったオペレーションが他のユーザーから見ても 瞬時に反映される  スケーラビリティ – 1000台ぐらい(数十PB)までならコモディティなサーバーを追加す るだけで線形にスケールする
  • 13.
    HDFSのスケーラビリティの限界 13 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  数千台の大規模なクラスタやワークロードの重いク ラスタではスケーラビリティの限界に達してさまざ まな問題が生じる!
  • 14.
    HDFSのスケーラビリティの限界 14 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 b1 b3 b2 b1 b1b2 b2 b3 b3 NameNode metadata NameSpace Block Map File -> BlockID BlockID -> DN b1 b2 b3 128MB 128MB Client DataNode
  • 15.
    HDFSのスケーラビリティの限界 15 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 b1 b3 b2 b1 b1b2 b2 b3 b3 NameNode metadata NameSpace Block Map File -> BlockID BlockID -> DN b1 b2 b3 128MB 128MB Client ①メタデータの肥大化 DataNode
  • 16.
    HDFSのスケーラビリティの限界 16 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 b1 b3 b2 b1 b1b2 b2 b3 b3 NameNode metadata NameSpace Block Map File -> BlockID BlockID -> DN b1 b2 b3 128MB 128MB Client ①メタデータの肥大化 ②リクエスト量の増大 DataNode
  • 17.
    HDFSのスケーラビリティの限界 17 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 b1 b3 b2 b1 b1b2 b2 b3 b3 NameNode metadata NameSpace Block Map File -> BlockID BlockID -> DN b1 b2 b3 128MB 128MB Client ①メタデータの肥大化 ②リクエスト量の増大 ③レプリケーションのストレージコストが高い DataNode
  • 18.
    新機能でスケーラビリティ向上! 18 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 b1 b3 b2 b1 b1b2 b2 b3 b3 NameNode metadata NameSpace Block Map File -> BlockID BlockID -> DN b1 b2 b3 128MB 128MB Client ①メタデータの肥大化 → Router-based Federation ②リクエスト量の増大 → Observer NameNode ③レプリケーションのストレージコストが高い → Erasure Coding DataNode
  • 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 / /
  • 23.
    RBFの開発状況 23 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  開発企業 – Microsoft, Uber, VipShop, Huawei, LinkedIn, Cloudera, Yahoo! JAPAN...  現在はセキュリティ機能を開発中(HDFS-13532) – UberやMicrosoftが中心 – ケルベロス認証のベースの実装が完了 – デリゲーショントークンに対応 – Hadoop-3.3.0に入りそう
  • 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
  • 26.
    metadatametadatametadata 複数NameNodeの機能(HDFS-6440) 26 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Active NN Standby NNs Journal nodes ① Read/Write metadata EditLog ② Write EditLog ③ Read EditLog
  • 27.
    metadatametadatametadata 問題: Active NameNodeの責任が重い 27Copyright (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 問題 31Copyright (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
  • 43.
     6個のデータブロックから3個のパリティブロックを生成  9個のブロックうち任意の6個ブロックから元データを復元可能 レプリケーションの半分のストレージコストで同等の冗長性を実現! Erasure Coding(EC)とは 43 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 b1 b3 b4 b6 b7 b8b2 b5 b9 Replication Erasure Coding (6, 3) 損失の許容できるブロック数 2 3 元データに対するストレージコスト 3倍 1.5倍 encode
  • 44.
    データ量が多いほど顕著な差が出る 44 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 レプリケーション EC 元データ ストレージコスト データ量
  • 45.
    ECブロックの実装の詳細 45 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 1MB 1MB b1 b2 b3 b4 b5 b6 b7 b8 b9
  • 46.
    ECブロックの実装の詳細 46 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 b1 b2 b3 b4 b5 b6 b7 b8 b9
  • 47.
    開発状況など 47 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  開発自体はだいぶ前に完了 – 新機能の開発はしばらく無し – 細かい改善・バグ修正が行われている  利用できるのはHadoop3系から – ユーザーが増えるのはこれから  解説記事(拙著) – HDFS Erasure Codingの紹介とYahoo! JAPANにおける運用事例 https://techblog.yahoo.co.jp/infrastructure/hdfs_erasure_coding
  • 48.
    番外編: Ozone 48 Copyright(C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  Hadoopのオブジェクトストア  HDFSのアーキテクチャを刷新  マスターのメタデータ肥大化問題を根本的に解決
  • 49.
    HDFSの新機能のリリースプラン 49 Copyright (C)2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Router-based Federation Erasure Coding RBF with Security Observer NameNode Ozone trunk ~ 3.2.0 (2019/01) 3.3.0