Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

868 views

Published on

2019年3月14日開催された Hadoop / Spark Conference Japan 2019 で発表した資料です。

Published in: Technology
  • Be the first to comment

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

  1. 1. HDFSのスケーラビリティの限界を 突破するためのさまざまな取り組み 〜エクサバイト級の分散ストレージを目指して〜 ヤフー株式会社 浅沼 孝信 2019年3月14日
  2. 2. 自己紹介 2 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  名前 – 浅沼 孝信  業務履歴 – 2012年度新卒入社 – HadoopやNiFiを用いた社内インフラの設計・開発 – Hadoopを中心としたOSS開発 – 2018年7月よりHadoopコミッター
  3. 3. もくじ 3 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  HDFSの復習  Router-based Federation (RBF)  Observer NameNode  Erasure Coding
  4. 4. もくじ 4 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  HDFSの復習  Router-based Federation (RBF)  Observer NameNode  Erasure Coding
  5. 5. HDFS: アーキテクチャー 5 NameNode DataNode File metadata Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Client
  6. 6. HDFS: アーキテクチャー 6 NameNode DataNode b1 b2 b3 128MB 128MB metadata Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Client
  7. 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. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. HDFSのすごいところ 12 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  強い一貫性 – 1台のマスターが全てのメタデータをメモリ上で管理しているので、 あるユーザーが行なったオペレーションが他のユーザーから見ても 瞬時に反映される  スケーラビリティ – 1000台ぐらい(数十PB)までならコモディティなサーバーを追加す るだけで線形にスケールする
  13. 13. HDFSのスケーラビリティの限界 13 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  数千台の大規模なクラスタやワークロードの重いク ラスタではスケーラビリティの限界に達してさまざ まな問題が生じる!
  14. 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. 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. 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. 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. 新機能でスケーラビリティ向上! 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. もくじ 19 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  HDFSの復習  Router-based Federation (RBF)  Observer NameNode  Erasure Coding
  20. 20. 問題: メタデータの肥大化 20 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  数千台のクラスタではメタデータがNameNodeのメモリ サイズの限界に達する  それ以上のデータを保存する場合は別のNameNodeが必 要なので複数のクラスタができる  複数のクラスタはユーザーにとって扱いづらい ユーザーから見て1つの大きなクラスタとして扱えるよう にして欲しい
  21. 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. 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. 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. もくじ 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. 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. 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. 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. 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. 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. 30. Observer NameNodeの状態遷移 30 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Active Standby Observer Active-Observer間は直接遷移できない
  31. 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. 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. 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. 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. 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. 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. 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. 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. 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. 開発状況 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. もくじ 41 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  HDFSの復習  Router-based Federation (RBF)  Observer NameNode  Erasure Coding
  42. 42. 問題: ストレージコストが高い 42 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  通常の3レプリケーションでは冗長性を保つために 元データの3倍のストレージコストがかかる b1 b3 b2 b1 b1b2 b2 b3 b3 DataNode
  43. 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. データ量が多いほど顕著な差が出る 44 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 レプリケーション EC 元データ ストレージコスト データ量
  45. 45. ECブロックの実装の詳細 45 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 1MB 1MB b1 b2 b3 b4 b5 b6 b7 b8 b9
  46. 46. ECブロックの実装の詳細 46 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 b1 b2 b3 b4 b5 b6 b7 b8 b9
  47. 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. 48. 番外編: Ozone 48 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止  Hadoopのオブジェクトストア  HDFSのアーキテクチャを刷新  マスターのメタデータ肥大化問題を根本的に解決
  49. 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

×