hdfs (fsimage and edits) in cdh3,cdh4

21
CDH3/CDH4 にににに fsimage に edits Tatsuo Kawasaki @kernel023

Upload: tatsuo-kawasaki

Post on 01-Dec-2014

2.257 views

Category:

Technology


1 download

DESCRIPTION

CDH3とCDH4におけるfsimage、editsの違いをまとめてみました

TRANSCRIPT

Page 1: HDFS (fsimage and edits) in CDH3,CDH4

CDH3/CDH4 における fsimage とeditsTatsuo Kawasaki@kernel023

Page 2: HDFS (fsimage and edits) in CDH3,CDH4

はじめにCDH3 と CDH4 の HDFS では fsimage, edits の管理の仕方が若干異なっています。

このスライドはそれらの違いを簡単に紹介することを目的としています。(一部検証が不十分な点がありますので、間違いを発見したらお知らせ下さい)

Page 3: HDFS (fsimage and edits) in CDH3,CDH4

CDH3 のメタデータ[root@localhost ~]# ls -ltr /var/lib/hadoop-0.20/cache/hadoop/dfs/name/current/total 1100-rw-r--r-- 1 hdfs hdfs 101 Jan 30 00:21 VERSION-rw-r--r-- 1 hdfs hdfs 8 Jan 30 00:21 fstime-rw-r--r-- 1 hdfs hdfs 57248 Jan 30 00:21 fsimage-rw-r--r-- 1 hdfs hdfs 1048580 Jan 31 16:16 edits

after checkpoint[root@localhost ~]# ls -ltr /var/lib/hadoop-0.20/cache/hadoop/dfs/name/current/total 84-rw-r--r-- 1 hdfs hdfs 101 Feb 5 14:37 VERSION-rw-r--r-- 1 hdfs hdfs 8 Feb 5 14:37 fstime-rw-r--r-- 1 hdfs hdfs 66760 Feb 5 14:37 fsimage-rw-r--r-- 1 hdfs hdfs 4 Feb 5 14:37 edits

Page 4: HDFS (fsimage and edits) in CDH3,CDH4

メタ情報の更新 (CDH3)

fsimage               fsimage.ckpt fsimage

edits edits.new edits

fstime                             fstime

t0       t1                t2             t3           t4

put file

edits 更新メモリ上のメタ情報更新

CheckPointstart

CheckPointDone

NameNode

Secondary NameNode

作成

fsimage

edits

fsimage.ckptマージ

取得 転送

リネーム

リネーム

時刻更新

Page 5: HDFS (fsimage and edits) in CDH3,CDH4

Secondary NN Web UI (CDH3)

Page 6: HDFS (fsimage and edits) in CDH3,CDH4

CDH4 のメタデータHDFS フォーマット直後-bash-4.1$ ls -l /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/total 1040-rw-r--r-- 1 hdfs hdfs 1048576 Feb 5 01:35 edits_inprogress_0000000000000000001-rw-rw-r-- 1 hdfs hdfs 119 Feb 5 01:33 fsimage_0000000000000000000-rw-rw-r-- 1 hdfs hdfs 62 Feb 5 01:33 fsimage_0000000000000000000.md5-rw-r--r-- 1 hdfs hdfs 2 Feb 5 01:35 seen_txid-rw-rw-r-- 1 hdfs hdfs 202 Feb 5 01:33 VERSION

-bash-4.1$ hexdump -C /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/seen_txid 00000000 31 0a |1.|00000002

seen_txid にはトランザクション ID が

含まれる

Page 7: HDFS (fsimage and edits) in CDH3,CDH4

ファイル追加後の挙動を確認[training@localhost ~]$ hadoop fs -put /etc/hosts hosts[training@localhost ~]$

Page 8: HDFS (fsimage and edits) in CDH3,CDH4

oiv - fsimage viewer

-bash-4.1$ hdfs oiv -i /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/fsimage_0000000000000000000 -o aaa-bash-4.1$ cat aaadrwxr-xr-x - hdfs supergroup 0 1969-12-31 19:00 /

checkpoint が発生していないのでput したファイルは

まだ fsimage に書き込まれていない

Page 9: HDFS (fsimage and edits) in CDH3,CDH4

oev – edits viewer-bash-4.1$ hdfs oev -i /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/edits_0000000000000000020-0000000000000000027 -o bbbcat bbb<?xml version="1.0" encoding="UTF-8"?><EDITS> <EDITS_VERSION>-40</EDITS_VERSION> <RECORD> <OPCODE>OP_START_LOG_SEGMENT</OPCODE> <DATA> <TXID>20</TXID> </DATA> </RECORD> <RECORD> <OPCODE>OP_SET_GENSTAMP</OPCODE> <DATA> <TXID>21</TXID> <GENSTAMP>1003</GENSTAMP> </DATA> </RECORD> <RECORD> <OPCODE>OP_ADD</OPCODE> <DATA> <TXID>22</TXID> <LENGTH>0</LENGTH> <PATH>/user/training/hosts._COPYING_</PATH> <REPLICATION>1</REPLICATION> <MTIME>1360046220628</MTIME> <ATIME>1360046220628</ATIME> <BLOCKSIZE>67108864</BLOCKSIZE> <CLIENT_NAME>DFSClient_NONMAPREDUCE_1911533003_1</CLIENT_NAME> <CLIENT_MACHINE>127.0.0.1</CLIENT_MACHINE> <PERMISSION_STATUS> <USERNAME>training</USERNAME> <GROUPNAME>supergroup</GROUPNAME> <MODE>420</MODE> </PERMISSION_STATUS> </DATA> </RECORD>

トランザクション ID

ここからput トランザクション

開始トランザクション ID

Page 10: HDFS (fsimage and edits) in CDH3,CDH4

oev – edits viewer (cont)ファイル名 edits_0000000000000000020-0000000000000000027 <RECORD> <OPCODE>OP_SET_GENSTAMP</OPCODE> <DATA> <TXID>23</TXID> <GENSTAMP>1004</GENSTAMP> </DATA> </RECORD> <RECORD> <OPCODE>OP_UPDATE_BLOCKS</OPCODE> <DATA> <TXID>24</TXID> <PATH>/user/training/hosts._COPYING_</PATH> <BLOCK> <BLOCK_ID>-3498739165311848505</BLOCK_ID> <NUM_BYTES>0</NUM_BYTES> <GENSTAMP>1004</GENSTAMP> </BLOCK> </DATA> </RECORD> <RECORD> <OPCODE>OP_CLOSE</OPCODE> <DATA> <TXID>25</TXID> <LENGTH>0</LENGTH> <PATH>/user/training/hosts._COPYING_</PATH> <REPLICATION>1</REPLICATION> <MTIME>1360046220735</MTIME> <ATIME>1360046220628</ATIME> <BLOCKSIZE>67108864</BLOCKSIZE> <CLIENT_NAME></CLIENT_NAME> <CLIENT_MACHINE></CLIENT_MACHINE> <BLOCK> <BLOCK_ID>-3498739165311848505</BLOCK_ID> <NUM_BYTES>83</NUM_BYTES> <GENSTAMP>1004</GENSTAMP> </BLOCK>

Page 11: HDFS (fsimage and edits) in CDH3,CDH4

oev – edits viewer (cont)ファイル名: edits_0000000000000000020-0000000000000000027

<PERMISSION_STATUS> <USERNAME>training</USERNAME> <GROUPNAME>supergroup</GROUPNAME> <MODE>420</MODE> </PERMISSION_STATUS> </DATA> </RECORD> <RECORD> <OPCODE>OP_RENAME_OLD</OPCODE> <DATA> <TXID>26</TXID> <LENGTH>0</LENGTH> <SRC>/user/training/hosts._COPYING_</SRC> <DST>/user/training/hosts</DST> <TIMESTAMP>1360046220738</TIMESTAMP> </DATA> </RECORD> <RECORD> <OPCODE>OP_END_LOG_SEGMENT</OPCODE> <DATA> <TXID>27</TXID> </DATA> </RECORD></EDITS>

最終トランザクション ID

Page 12: HDFS (fsimage and edits) in CDH3,CDH4

チェックポイント後チェックポイント後-bash-4.1$ ls -l /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/total 1376-rw-r--r-- 1 hdfs hdfs 1317 Feb 5 01:36 edits_0000000000000000001-0000000000000000019-rw-r--r-- 1 hdfs hdfs 471 Feb 5 01:37 edits_0000000000000000020-0000000000000000027-rw-r--r-- 1 hdfs hdfs 30 Feb 5 01:38 edits_0000000000000000028-0000000000000000029-rw-r--r-- 1 hdfs hdfs 30 Feb 5 01:39 edits_0000000000000000030-0000000000000000031-rw-r--r-- 1 hdfs hdfs 30 Feb 5 01:40 edits_0000000000000000032-0000000000000000033-rw-r--r-- 1 hdfs hdfs 30 Feb 5 01:41 edits_0000000000000000034-0000000000000000035(略)-rw-r--r-- 1 hdfs hdfs 30 Feb 5 02:53 edits_0000000000000000178-0000000000000000179-rw-r--r-- 1 hdfs hdfs 30 Feb 5 02:54 edits_0000000000000000180-0000000000000000181-rw-r--r-- 1 hdfs hdfs 30 Feb 5 02:55 edits_0000000000000000182-0000000000000000183-rw-r--r-- 1 hdfs hdfs 30 Feb 5 02:56 edits_0000000000000000184-0000000000000000185-rw-r--r-- 1 hdfs hdfs 30 Feb 5 02:58 edits_0000000000000000186-0000000000000000187-rw-r--r-- 1 hdfs hdfs 1048576 Feb 5 02:58 edits_inprogress_0000000000000000188-rw-rw-r-- 1 hdfs hdfs 119 Feb 5 01:33 fsimage_0000000000000000000-rw-rw-r-- 1 hdfs hdfs 62 Feb 5 01:33 fsimage_0000000000000000000.md5-rw-r--r-- 1 hdfs hdfs 1211 Feb 5 02:58 fsimage_0000000000000000187-rw-r--r-- 1 hdfs hdfs 62 Feb 5 02:58 fsimage_0000000000000000187.md5-rw-r--r-- 1 hdfs hdfs 4 Feb 5 02:58 seen_txid

-bash-4.1$ hexdump -C /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/seen_txid 00000000 31 38 38 0a |188.|00000004

seen_txid にはトランザクション ID が

含まれる

Page 13: HDFS (fsimage and edits) in CDH3,CDH4

oiv - fsimage viewer-bash-4.1$ hdfs oiv -i /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/fsimage_0000000000000000187 -o aaa-bash-4.1$ cat aaadrwxr-xr-x - hdfs supergroup 0 2013-02-05 01:35 /drwxr-xr-x - hdfs supergroup 0 2013-02-05 01:35 /userdrwxr-xr-x - mapred supergroup 0 2013-02-05 01:35 /vardrwxrwxrwt - hdfs supergroup 0 2013-02-05 01:37 /user/training-rw-r--r-- 1 training supergroup 83 2013-02-05 01:37 /user/training/hostsdrwxr-xr-x - mapred supergroup 0 2013-02-05 01:35 /var/libdrwxr-xr-x - mapred supergroup 0 2013-02-05 01:35 /var/lib/hadoop-hdfsdrwxr-xr-x - mapred supergroup 0 2013-02-05 01:35 /var/lib/hadoop-hdfs/cachedrwxr-xr-x - mapred supergroup 0 2013-02-05 01:35 /var/lib/hadoop-hdfs/cache/mapreddrwxr-xr-x - mapred supergroup 0 2013-02-05 01:35 /var/lib/hadoop-hdfs/cache/mapred/mapreddrwx------ - mapred supergroup 0 2013-02-05 01:35 /var/lib/hadoop-hdfs/cache/mapred/mapred/system-rw------- 1 mapred supergroup 4 2013-02-05 01:35 /var/lib/hadoop-hdfs/cache/mapred/mapred/system/jobtracker.info

checkpoint が発生したので fsimage に書き込

まれている

Page 14: HDFS (fsimage and edits) in CDH3,CDH4

oev – edits viewer-bash-4.1$ hdfs oev -i /var/lib/hadoop-hdfs/cache/hdfs/dfs/name/current/edits_inprogress_0000000000000000188 -o bbb-bash-4.1$ cat bbb<?xml version="1.0" encoding="UTF-8"?><EDITS> <EDITS_VERSION>-40</EDITS_VERSION> <RECORD> <OPCODE>OP_START_LOG_SEGMENT</OPCODE> <DATA> <TXID>188</TXID> </DATA> </RECORD></EDITS>

開始トランザクション ID

Page 15: HDFS (fsimage and edits) in CDH3,CDH4

メタ情報の更新 (CDH4)-1

fsimage_0                 

edits_inprogress_1       edits_inprogress_11 edits_inprogress_33

t0          t1                   t2

ロール ロールNameNode

Secondary NameNode

( トランザクションが 10 回あった )

     edits_1-10          edits_1-101-10 までのトランザクションをファイナライズしてリネーム

新しいトランザクション ID で新規作成

( トランザクションが 22 回あった )

                           edits_11-32

11-32 までのトランザクションをファイナライズしてリネーム最初の 10 回+今回のトラザクション 22 回

新しいトランザクション ID で新規作成

ロールの発生タイミング1) NN の開始2) saveNameSpace3) SecondaryNN の CheckPoint4) 失敗したストレージ領域が利用

可能になった5) 管理コマンド

Page 16: HDFS (fsimage and edits) in CDH3,CDH4

メタ情報の更新 (CDH4)-2

                 t4             t5          t6

CheckPointstart

CheckPointDone

NameNode

Secondary NameNode

作成

fsimage_ckpt_33マージ

取得

転送

リネームedits_inprogress_33       edits_inprogress_34

edits_1-10                           edits_1-10         edits_11-32                          edits_11-32

fsimage_0                           fsimage_0                 

edits_33-33         

fsimage_ckpt_33 fsimage_33

Page 17: HDFS (fsimage and edits) in CDH3,CDH4

メタ情報の更新 (CDH4)-3

edits_inprogress_34edits_1-10         edits_11-32

fsimage_0                 

edits_33-33         

fsimage_33

保持する世代数dfs.namenode.num.extra.edits.retained

保持する世代数dfs.namenode.num.checkpoints.retained

チェックポイントを行う間隔  dfs.namenode.checkpoint.periodチェックポイントを行うトランザクション数  dfs.namenode.checkpoint.txnsSecondaryNameNode が NameNode をポーリングする間隔  dfs.namenode.checkpoint.check.period

※ ファイル名にトランザクション ID が付与されるため、fstime は不要となった

Page 18: HDFS (fsimage and edits) in CDH3,CDH4

Secondary NN web UI (CDH4)

Page 19: HDFS (fsimage and edits) in CDH3,CDH4

リカバリ• クラッシュなどからの復旧時の挙動• _inprogress が名前に付いているファイルが存在するディレ

クトリ• Invalid になったファイルを含むディレクトリがある場合

NameNode はそのディレクトリへの書き込みを中止• 複数のストレージディレクトリがあり、一部のディレクトリだけ壊

れているようなケース• アクティブな編集ログのセットを含んでいる場合は NameNode

がクラッシュしているということ• 起動時にリプレイが必要

Page 20: HDFS (fsimage and edits) in CDH3,CDH4

失敗時のファイル名• ログリカバリ失敗• edits_inprogress_N_corrupt

• イメージリカバリ• fsimage_ckpt_N

Page 21: HDFS (fsimage and edits) in CDH3,CDH4

参考資料• HDFS のパラメータ一覧• http://archive.cloudera.com/cdh4/cdh/4/hadoop/hadoop-

project-dist/hadoop-hdfs/hdfs-default.xml• HDFS-1073• https://issues.apache.org/jira/secure/attachment/12478323/

hdfs1073.pdf• O’Reilly Hadoop: The definitive Guide, 2nd edition