如何在HDFS中,通过块的名称或ID来找到与该块相关联的文件,有什么最简单的方法?
不确定这是什么时候引入的,但你可以这样做
hdfs fsck -blockId <block_id>
hdfs fsck -blockId blk_1100790203
Connecting to namenode
FSCK started by hdfs
Block Id: blk_1100790203
Block belongs to: /tmp/1447685899336.txt
如果你可以读取所有文件(并且可以执行目录),则可以使用冗长和繁琐的方式:
hadoop fsck / -files -blocks | grep blk_520275863902385418_1002 -B 20
接着从你的块匹配位置往上扫描,直到找到前一个文件名:
/hadoop/mapred/system/jobtracker.info 4 bytes, 1 block(s): OK
0. blk_520275863902385418_1002 len=4 repl=1
在这种情况下,blk_5202... 是 /hadoop/mapred/system/jobtracker.info
文件的一部分。$ hdfs fsck -blockId blk_1073823706_82968.meta
$ hdfs fsck -blockId blk_1073823706