HDFSのデータブロックの場所確認方法


Hadoopのクラスターを構成してデータを入れると、実際にはどこに入ってるのかな?と思うことがあります。

例えばレプリケーション3にしてて、3つのレプリカがあるノードを全部停止したらほんとに読み込めなくなるのかな?といった確認をしたいとき、どこにレプリカがあるのか知りたくなります。

そんな時下記のコマンドでこんなパラメーターをつければわかります。

hdfs fsck /myfile.txt -files -blocks -locations    

すでに似たようなことで悩んでる人がいるんですね。
https://community.cloudera.com/t5/Support-Questions/hdfs-file-actual-block-paths/m-p/121411

こんな実行結果がでてきます。
IPなどすべて書き換えていますんで、重要なところ以外はちょっと変なところあるかもしれません。

$ hdfs fsck /myfile.txt -files -blocks -locations
Connecting to namenode via http://namenode01:9870/fsck?files=1&blocks=1&locations=1&path=%2Fmyfile.txt
FSCK started by hdfs (auth:SIMPLE) from /11.22.33.44 for path /myfile.txt at Fri Aug 31 12:18:04 JST 2019
/myfile.txt 1468474 bytes, replicated: replication=3, 1 block(s):  OK
0. BP-119823210215-11.22.33.81-15634343520673:blk_10737324538_402314 len=1468474 Live_repl=3  [DatanodeInfoWithStorage[11.22.33.08:9866,DS-f15a6a7a-01bd-2351-ade9-92a346adbe35,DISK], DatanodeInfoWithStorage[11.22.33.12:9866,DS-6a12346b0-74a9-4ee9-a439-f1e2b015t420f,DISK], DatanodeInfoWithStorage[11.22.33.10:9866,DS-f003dc91-8d8a-4c64-ac71-03451f69f7c0,DISK]]


Status: HEALTHY
 Number of data-nodes:  10
 Number of racks:               1
 Total dirs:                    0
 Total symlinks:                0

Replicated Blocks:
 Total size:    1468474 B
 Total files:   1
 Total blocks (validated):      1 (avg. block size 1468474 B)
 Minimally replicated blocks:   1 (100.0 %)
 Over-replicated blocks:        0 (0.0 %)
 Under-replicated blocks:       0 (0.0 %)
 Mis-replicated blocks:         0 (0.0 %)
 Default replication factor:    3
 Average block replication:     3.0
 Missing blocks:                0
 Corrupt blocks:                0
 Missing replicas:              0 (0.0 %)
 Blocks queued for replication: 0

Erasure Coded Block Groups:
 Total size:    0 B
 Total files:   0
 Total block groups (validated):        0
 Minimally erasure-coded block groups:  0
 Over-erasure-coded block groups:       0
 Under-erasure-coded block groups:      0
 Unsatisfactory placement block groups: 0
 Average block group size:      0.0
 Missing block groups:          0
 Corrupt block groups:          0
 Missing internal blocks:       0
 Blocks queued for replication: 0
FSCK ended at Fri Aug 31 12:18:04 JST 2019 in 1 milliseconds

実行結果の上から4行目のここ

[DatanodeInfoWithStorage[11.22.33.08:9866,DS-f15a6a7a-01bd-2351-ade9-92a346adbe35,DISK], DatanodeInfoWithStorage[11.22.33.12:9866,DS-6a12346b0-74a9-4ee9-a439-f1e2b015t420f,DISK], DatanodeInfoWithStorage[11.22.33.10:9866,DS-f003dc91-8d8a-4c64-ac71-03451f69f7c0,DISK]] 

で実際のノードがわかります。

整形してみると

[
DatanodeInfoWithStorage[11.22.33.08:9866,DS-f15a6a7a-01bd-2351-ade9-92a346adbe35,DISK], 
DatanodeInfoWithStorage[11.22.33.12:9866,DS-6a12346b0-74a9-4ee9-a439-f1e2b015t420f,DISK], 
DatanodeInfoWithStorage[11.22.33.10:9866,DS-f003dc91-8d8a-4c64-ac71-03451f69f7c0,DISK]
] 

11.22.33.08
11.22.33.12
11.22.33.10

に保管されていることがわかりますね。

以上マイナーな情報でしたー

関係ないですが上記のコマンドでErasure Codingの情報も出てくるんですね。