© Hortonworks Inc. 2011 – 2015. All Rights Reserved
HDFS  Deep  Dive
Yifeng  Jiang
Solutions  Engineer,  Hortonworks,  inc.
March  29,  2015  
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
自己紹介
蒋  逸峰  (Yifeng  Jiang)
•  Solutions  Engineer  @  Hortonworks  Japan
•  HBase  book  author
•  ⽇日本に来て10年年経ちました…
•  趣味は⼭山登り
•  Twitter:  @uprush
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
アジェンダ
•  HDFSのガチな内容
•  Erasure  Code  in  HDFS
•  Hadoop  on  EC2  少し深堀り
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
JAWSUG  DAYS  2015
http://goo.gl/9ZjNoh  
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
HDFSのガチな内容
Architecture,  Erasure  Code
Page 5
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
What  is  HDFS?
•  Hadoop  Distributed  File  System
•  分散ファイルシステム
•  ⾼高い安定性、可⽤用性、スループット
•  データ  ローカリティ
•  めっちゃスケールできる:  数千台クラスタの実績
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
HDFSの主要な新機能
•  Namenode  HA
•  スナップショット
•  Tiered Storage
•  HDFS  NFS  Gateway
•  たくさんのPerformance改善
–  DataNode  cache,  short  circuit  local  read,  etc.
•  Erasure  Code  (WIP)
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
HDFS Architecture
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Namenode
•  In-‐‑‒memory  file  system
–  Directory
–  File
–  FSのメタデータ処理理:  mkdir,  rm,  …
•  Edit  log
•  Checkpoint
•  Block管理理
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Datanode
•  実際のデータ(block)を保存
–  ローカルFS上に保存
–  dfs/data/current/…/blk_̲1073741825
•  Namenodeとやり取り
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
NamenodeとDatanodeのやり取り
•  ストレージレポート
–  ディスクのタイプ、利利⽤用率率率
•  Heart  beat
–  死活管理理
–  NNがレスポンスにコマンドを送る。
o  例例:block削除
•  Block  report:  のちほど詳しく
DN1 DN2
Namenode
I am alive
Delete blk1
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Files & Blocks
•  Fileはblocksとして保存されます
–  /home/yifeng/foo.txt:  {b1,  b2,  b3}
•  BlockはDatanodeに分散して保存
–  同じblockは3つのDNに複製
–  Block  sizeは初期値128MB
•  Blockの配置は重要
–  データ  ローカリティ
–  対障害
/home/yifeng/foo.txt
b1 | b2 | b3
128MB 128MB
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Block Management
•  Namenodeはblock  locationを保持
–  b1:  {dn1,  dn3,  dn4}
•  NamenodeはDatanodeが保存してい
るすべてのblockのリストを保持
–  dn1:  [b1,  b2]
/home/yifeng/foo.txt
b1 | b2 | b3
DN1
b1
DN2
DN3 DN4
b1
b1
b2
b2
b2
b3
b3
b3
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Block  Report
•  NNとDNのblock情報の突き合わせ(diff)
–  Full  report:  DNが定期的にNNに送る
–  Incremental  report:  block変更更があるたび
•  Diffが合った場合
–  NNがメモリ上のblock  mapを更更新か
–  NNがDNに命令令を出す
o  例例:block削除
DN1
b1
DN2
b2
b2
b3
{    dn1:  [b1,  b2]
        dn2: [b2, b3]
}
{ b1: [dn1, dn3, dn4]
b2: [dn1, dn2, dn4]
}
Namenode
b4
I have [b1,
b2]
I have [b2,
b3, b4]
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Write Operation
15
•  Client:  NNに書込み要求
•  NN:  write  lockをかけ、インメモリのFS変更更、lock解除
•  NN:  edit  log  sync
•  NN:  audit  log  sync
•  NN:  clientにレスポンス
•  Client:  write  pipeline  的にデータ書込み
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
rack1
Write  Pipeline
16
DN1
Namenode
client
switch
rack2
DN3
switch
DN2
switch
1. Add block
2. Res [dn1, dn2, dn3]
3. client write to dn1
4. dn1 to dn2
5. dn2 to dn3
•  Rack認識識
–  Dn1:  rack1
–  Dn2,  dn3:  rack2
•  書込みはpipeline
–  Client  -‐‑‒>  dn1  -‐‑‒>  dn2  -‐‑‒>  dn3
–  データを受取ったら次にパス
–  Ackは逆順
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Data  Read
•  Client:  NNに読込み要求
•  NN:  read  lockをかけ、イン
メモリFSを取得、clientにレ
スポンス、lock解除
•  Client:  DNにデータ取得
•  Rack認識識
17
rack1
DN1
Namenode
client
switch
rack2
DN3
switch
DN2
switch
1. Get block location
2. Res [dn1, dn2, dn3]
3. Client read from DNx
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Data Replication
•  HDFSはデータを3つのDNに複製
•  メリット
–  障害時データを失わない
–  ローカリティ:ローカル、あるいは同じrackのデータを処理理
–  コピーだけなのでシンプル
•  デメリット
–  ストレージコストが⾼高い
–  オーバーヘッドは2倍:1PBのストレージは実質0.33PBのデータしか保存できない
18
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Erasure  Code  in  HDFS
Page 19
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Erasure Code
•  エラー修復復の技術
•  元データ(N)はより⻑⾧長いメッセージ(N
+M)にencodingされ、障害が発⽣生時
decodeしデータを復復元できます
•  RAIDと異異なり、復復元は任意のM個(
すべてではなく)のデータブロック
でできる
•  可⽤用性は⾮非常に⾼高い
–  NとMは調整可能。(10,  4)か(6,  3)がよ
く使われる N Symbols N Symbols
M Symbols
encode
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Erasure Code in HDFS
•  (6,3)-‐‑‒Reed-‐‑‒Solomon
–  データが6のdata  blockと3のparity  blockにencodingする
–  任意の6のblock  (data  or  parity)でデータ復復元できる
•  HDFSレイアでの実装
•  Intel  ISA-‐‑‒L  library利利⽤用:通常の10倍早い
•  想定ユースケース
–  ⼤大きい(GB~∼)ファイル:節約効果が⾼高い
–  データ可⽤用性を⾼高めつつ、ストレージコストを抑えたい
–  頻繁にアクセスしないデータ:データローカリティがなくなる
21
HDFS-7285
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Replication vs. Erasure Code
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Erasure Code in HDFS: Write
c1
c2
c3
c4
c5
c6
Incoming data
c7
c8
c9
…
b1
b2
b3
b4
b5
b6
b1
b2
b3
c1
p1
p2
p3
NamenodeEC Client
1. Add block group
2. Res [dn1, dn2, dn3, …, dn9]
DN1
DN2
DN3
…
DN9
3. Write c1 to DN1
3. Write c2 to DN2
3. Write c3 to DN3
3. Write cx to DNx
3. Write p3 to DN9
64KB
64KB
Encode (6, 3) EC
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Erasure Code in HDFS: Read
c1
c2
c3
c4
c5
c6
c7
c8
c9
…
p1
p2
p3
NamenodeEC Client
1. Get block group
2. Res [dn1, dn2, dn3, …, dn6]
DN1
DN2
DN3
…
DN6
3. Read 64k from DN1
3. Read 64k from DN2
3. Read 64k from DN2
3. Read 64k from DNx
3. Read 64k from DN6
Decode (6, 3) EC
if data block is unavailable
Response
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Erasure Code in HDFS: Recovery
•  Namenodeはblockの欠損を検出し、EC Reconstructionをスケジューリング
•  EC Reconstructionは負荷が高い
–  CPU, I/O消費が多い
–  1 block障害: 無視(書込み中)か低い優先度で
–  2 blocks障害: 低い優先度で
–  3 blocks障害: 高い優先度で
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Hadoop  on  EC2
すこし深堀り
Page 26
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Best  Practices
常時稼働Hadoopと⼀一時的Hadoop(例例:  EMR)の要件が違う
(常時稼働)Hadoop  on  EC2の基本的な考え⽅方
•  ローカルストレージがポイント
•  データノードのデータはインスタンス  ストアのみ利利⽤用
•  マスタノードのデータはEBSに
•  データはS3にバックアップ
•  ディストリビューション(HDP)を使う
•  運⽤用管理理ツール、可⽤用性、セキュリティ
なぜ?
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
なぜインスタンスストア?
•  HDFSはスループットが重要
•  ⼤大きいブロックサイズ(128MB)使っている
•  ディスクseekを減らし、Sequence  IOに最適化
•  データローカリティが重要
•  インスタンスストアが⾼高速、かつ無料料。データ冗⻑⾧長化はHDFS任せ
•  EBSはお勧めしない
•  ネットワークI/Oがボトルネック
•  Random  I/Oに最適
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
HDD vs. SSD
•  Hadoopはほとんどの場合はHDDがベスト
•  大量のHDD (12本~)、1本あたり数TBのインスタンスストアがあるEC2
インスタンスタイプが望ましい
HDD SSD
Random IOPS 100 ~ 180 20,000
MB/s 160 ~ 200 400
TB 4 ~ 6 1.2
Cost $200 $1000
$/TB/(MB/s) Low High
$/TB/IOPS High Low
RDB
HDFS
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
なぜS3にバックアップ?
•  EC2のtopologyは取れない、コントロールできない
•  同じHWなのか?同じRackなのか?
•  Placement GroupはRackとみなすべき?
•  バックアップ⽅方法
•  Batch:  Distcp,  Falcon
•  Double-‐‑‒write:  Kinesis  /  Kafka  +  StormでS3とHDFSに両⽅方書込み
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
まとめ
Page 31
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Hadoop  Trends  and  Hadoop  on  EC2
•  Hadoopは常に早く進化しています
•  次世代モダン・データアーキテクチャ (MDA)はHadoopにて実現
•  Hadoopはより効率率率、安全、早くなっています
•  Hadoopの深堀りはする価値がある
•  Hadoop  on  EC2は効率率率や柔軟性が⾼高い
© Hortonworks Inc. 2011 – 2015. All Rights Reserved
Thank  you
Yifeng  Jiang,  Solutions  Engineer,  Hortonworks
@uprush

HDFS Deep Dive

  • 1.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved HDFS  Deep  Dive Yifeng  Jiang Solutions  Engineer,  Hortonworks,  inc. March  29,  2015  
  • 2.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved 自己紹介 蒋  逸峰  (Yifeng  Jiang) •  Solutions  Engineer  @  Hortonworks  Japan •  HBase  book  author •  ⽇日本に来て10年年経ちました… •  趣味は⼭山登り •  Twitter:  @uprush
  • 3.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved アジェンダ •  HDFSのガチな内容 •  Erasure  Code  in  HDFS •  Hadoop  on  EC2  少し深堀り
  • 4.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved JAWSUG  DAYS  2015 http://goo.gl/9ZjNoh  
  • 5.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved HDFSのガチな内容 Architecture,  Erasure  Code Page 5
  • 6.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved What  is  HDFS? •  Hadoop  Distributed  File  System •  分散ファイルシステム •  ⾼高い安定性、可⽤用性、スループット •  データ  ローカリティ •  めっちゃスケールできる:  数千台クラスタの実績
  • 7.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved HDFSの主要な新機能 •  Namenode  HA •  スナップショット •  Tiered Storage •  HDFS  NFS  Gateway •  たくさんのPerformance改善 –  DataNode  cache,  short  circuit  local  read,  etc. •  Erasure  Code  (WIP)
  • 8.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved HDFS Architecture
  • 9.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Namenode •  In-‐‑‒memory  file  system –  Directory –  File –  FSのメタデータ処理理:  mkdir,  rm,  … •  Edit  log •  Checkpoint •  Block管理理
  • 10.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Datanode •  実際のデータ(block)を保存 –  ローカルFS上に保存 –  dfs/data/current/…/blk_̲1073741825 •  Namenodeとやり取り
  • 11.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved NamenodeとDatanodeのやり取り •  ストレージレポート –  ディスクのタイプ、利利⽤用率率率 •  Heart  beat –  死活管理理 –  NNがレスポンスにコマンドを送る。 o  例例:block削除 •  Block  report:  のちほど詳しく DN1 DN2 Namenode I am alive Delete blk1
  • 12.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Files & Blocks •  Fileはblocksとして保存されます –  /home/yifeng/foo.txt:  {b1,  b2,  b3} •  BlockはDatanodeに分散して保存 –  同じblockは3つのDNに複製 –  Block  sizeは初期値128MB •  Blockの配置は重要 –  データ  ローカリティ –  対障害 /home/yifeng/foo.txt b1 | b2 | b3 128MB 128MB
  • 13.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Block Management •  Namenodeはblock  locationを保持 –  b1:  {dn1,  dn3,  dn4} •  NamenodeはDatanodeが保存してい るすべてのblockのリストを保持 –  dn1:  [b1,  b2] /home/yifeng/foo.txt b1 | b2 | b3 DN1 b1 DN2 DN3 DN4 b1 b1 b2 b2 b2 b3 b3 b3
  • 14.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Block  Report •  NNとDNのblock情報の突き合わせ(diff) –  Full  report:  DNが定期的にNNに送る –  Incremental  report:  block変更更があるたび •  Diffが合った場合 –  NNがメモリ上のblock  mapを更更新か –  NNがDNに命令令を出す o  例例:block削除 DN1 b1 DN2 b2 b2 b3 {    dn1:  [b1,  b2]        dn2: [b2, b3] } { b1: [dn1, dn3, dn4] b2: [dn1, dn2, dn4] } Namenode b4 I have [b1, b2] I have [b2, b3, b4]
  • 15.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Write Operation 15 •  Client:  NNに書込み要求 •  NN:  write  lockをかけ、インメモリのFS変更更、lock解除 •  NN:  edit  log  sync •  NN:  audit  log  sync •  NN:  clientにレスポンス •  Client:  write  pipeline  的にデータ書込み
  • 16.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved rack1 Write  Pipeline 16 DN1 Namenode client switch rack2 DN3 switch DN2 switch 1. Add block 2. Res [dn1, dn2, dn3] 3. client write to dn1 4. dn1 to dn2 5. dn2 to dn3 •  Rack認識識 –  Dn1:  rack1 –  Dn2,  dn3:  rack2 •  書込みはpipeline –  Client  -‐‑‒>  dn1  -‐‑‒>  dn2  -‐‑‒>  dn3 –  データを受取ったら次にパス –  Ackは逆順
  • 17.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Data  Read •  Client:  NNに読込み要求 •  NN:  read  lockをかけ、イン メモリFSを取得、clientにレ スポンス、lock解除 •  Client:  DNにデータ取得 •  Rack認識識 17 rack1 DN1 Namenode client switch rack2 DN3 switch DN2 switch 1. Get block location 2. Res [dn1, dn2, dn3] 3. Client read from DNx
  • 18.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Data Replication •  HDFSはデータを3つのDNに複製 •  メリット –  障害時データを失わない –  ローカリティ:ローカル、あるいは同じrackのデータを処理理 –  コピーだけなのでシンプル •  デメリット –  ストレージコストが⾼高い –  オーバーヘッドは2倍:1PBのストレージは実質0.33PBのデータしか保存できない 18
  • 19.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Erasure  Code  in  HDFS Page 19
  • 20.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Erasure Code •  エラー修復復の技術 •  元データ(N)はより⻑⾧長いメッセージ(N +M)にencodingされ、障害が発⽣生時 decodeしデータを復復元できます •  RAIDと異異なり、復復元は任意のM個( すべてではなく)のデータブロック でできる •  可⽤用性は⾮非常に⾼高い –  NとMは調整可能。(10,  4)か(6,  3)がよ く使われる N Symbols N Symbols M Symbols encode
  • 21.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Erasure Code in HDFS •  (6,3)-‐‑‒Reed-‐‑‒Solomon –  データが6のdata  blockと3のparity  blockにencodingする –  任意の6のblock  (data  or  parity)でデータ復復元できる •  HDFSレイアでの実装 •  Intel  ISA-‐‑‒L  library利利⽤用:通常の10倍早い •  想定ユースケース –  ⼤大きい(GB~∼)ファイル:節約効果が⾼高い –  データ可⽤用性を⾼高めつつ、ストレージコストを抑えたい –  頻繁にアクセスしないデータ:データローカリティがなくなる 21 HDFS-7285
  • 22.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Replication vs. Erasure Code
  • 23.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Erasure Code in HDFS: Write c1 c2 c3 c4 c5 c6 Incoming data c7 c8 c9 … b1 b2 b3 b4 b5 b6 b1 b2 b3 c1 p1 p2 p3 NamenodeEC Client 1. Add block group 2. Res [dn1, dn2, dn3, …, dn9] DN1 DN2 DN3 … DN9 3. Write c1 to DN1 3. Write c2 to DN2 3. Write c3 to DN3 3. Write cx to DNx 3. Write p3 to DN9 64KB 64KB Encode (6, 3) EC
  • 24.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Erasure Code in HDFS: Read c1 c2 c3 c4 c5 c6 c7 c8 c9 … p1 p2 p3 NamenodeEC Client 1. Get block group 2. Res [dn1, dn2, dn3, …, dn6] DN1 DN2 DN3 … DN6 3. Read 64k from DN1 3. Read 64k from DN2 3. Read 64k from DN2 3. Read 64k from DNx 3. Read 64k from DN6 Decode (6, 3) EC if data block is unavailable Response
  • 25.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Erasure Code in HDFS: Recovery •  Namenodeはblockの欠損を検出し、EC Reconstructionをスケジューリング •  EC Reconstructionは負荷が高い –  CPU, I/O消費が多い –  1 block障害: 無視(書込み中)か低い優先度で –  2 blocks障害: 低い優先度で –  3 blocks障害: 高い優先度で
  • 26.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Hadoop  on  EC2 すこし深堀り Page 26
  • 27.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Best  Practices 常時稼働Hadoopと⼀一時的Hadoop(例例:  EMR)の要件が違う (常時稼働)Hadoop  on  EC2の基本的な考え⽅方 •  ローカルストレージがポイント •  データノードのデータはインスタンス  ストアのみ利利⽤用 •  マスタノードのデータはEBSに •  データはS3にバックアップ •  ディストリビューション(HDP)を使う •  運⽤用管理理ツール、可⽤用性、セキュリティ なぜ?
  • 28.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved なぜインスタンスストア? •  HDFSはスループットが重要 •  ⼤大きいブロックサイズ(128MB)使っている •  ディスクseekを減らし、Sequence  IOに最適化 •  データローカリティが重要 •  インスタンスストアが⾼高速、かつ無料料。データ冗⻑⾧長化はHDFS任せ •  EBSはお勧めしない •  ネットワークI/Oがボトルネック •  Random  I/Oに最適
  • 29.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved HDD vs. SSD •  Hadoopはほとんどの場合はHDDがベスト •  大量のHDD (12本~)、1本あたり数TBのインスタンスストアがあるEC2 インスタンスタイプが望ましい HDD SSD Random IOPS 100 ~ 180 20,000 MB/s 160 ~ 200 400 TB 4 ~ 6 1.2 Cost $200 $1000 $/TB/(MB/s) Low High $/TB/IOPS High Low RDB HDFS
  • 30.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved なぜS3にバックアップ? •  EC2のtopologyは取れない、コントロールできない •  同じHWなのか?同じRackなのか? •  Placement GroupはRackとみなすべき? •  バックアップ⽅方法 •  Batch:  Distcp,  Falcon •  Double-‐‑‒write:  Kinesis  /  Kafka  +  StormでS3とHDFSに両⽅方書込み
  • 31.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved まとめ Page 31
  • 32.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Hadoop  Trends  and  Hadoop  on  EC2 •  Hadoopは常に早く進化しています •  次世代モダン・データアーキテクチャ (MDA)はHadoopにて実現 •  Hadoopはより効率率率、安全、早くなっています •  Hadoopの深堀りはする価値がある •  Hadoop  on  EC2は効率率率や柔軟性が⾼高い
  • 33.
    © Hortonworks Inc.2011 – 2015. All Rights Reserved Thank  you Yifeng  Jiang,  Solutions  Engineer,  Hortonworks @uprush