如何在HDFS Hadoop中从blockName查找文件

ibps3vxo  于 2022-12-09  发布在  HDFS
关注(0)|答案(3)|浏览(244)

在给定数据块名称/ID的情况下,在HDFS中查找与数据块关联的文件的最简单方法是什么

nsc4cvqm

nsc4cvqm1#

不确定这是什么时候推出的,但你可以这样做

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
dzjeubhm

dzjeubhm2#

假设您对所有文件都具有读访问权限(并对目录具有执行权限),那么漫长而痛苦的方法是:

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文件的一部分
从编程上讲,这些不是允许您按块ID搜索的名称节点接口,但您可以查看辅助名称节点的源代码,并查看它如何合并编辑-然后在辅助名称节点的已保存输出上进行试验(而不是冒险处理活动名称节点文件)。
祝你好运!

k3bvogb1

k3bvogb13#

选项1:如果将blockId与generationStamp一起使用,则需要后缀.meta

$ hdfs fsck -blockId blk_1073823706_82968.meta

选项2:使用不带generationStamp的blockId

$ hdfs fsck -blockId blk_1073823706

相关问题