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