给定块名称/ID,在 HDFS 中查找与块关联的文件的最简单方法是什么
问问题
11302 次
3 回答
17
不确定何时引入,但您可以这样做
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
于 2017-03-06T21:38:48.073 回答
11
漫长而痛苦的方式,假设您对所有文件具有读取权限(并为目录执行):
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 进行搜索,但您可以查看辅助名称节点的源并查看它如何合并编辑 - 然后对辅助名称节点的保存输出进行试验名称节点(而不是冒险处理实时名称节点文件)。
祝你好运!
于 2012-06-05T01:22:47.557 回答
2
选项 1:.meta
如果将 blockId 与 generationStamp 一起使用,则需要后缀
$ hdfs fsck -blockId blk_1073823706_82968.meta
选项 2:使用不带 generationStamp 的 blockId
$ hdfs fsck -blockId blk_1073823706
于 2021-09-22T12:55:11.980 回答