如何在运行MR作业时找到存储和读取特定文件的数据节点



我有9个文件,每个文件的大小等于集群的BlockLength,存储在hadoop中。我需要获取文件所在的数据节点的地址。复制因子为3。

有没有hadoop API可以做到这一点或任何其他可能的方式?

查找文件的块和数据节点的命令如下所示

 hadoop fsck /user/tom/part-00007 -files -blocks -racks

这显示以下结果

/user/tom/part-00007 25582428 bytes, 1 block(s): OK
0. blk_-3724870485760122836_1035 len=25582428 repl=3 [/default-rack/10.251.43.2:50010,
/default-rack/10.251.27.178:50010, /default-rack/10.251.123.163:50010]

这指定了放置复制副本的数据节点。

要使用java代码,可以使用以下类

org.apache.hadoop.hdfs.tools.DFSck

使用这种方法

doWork(final String[] args)

这将在内部创建一个URI,并使用System.out.

打印所有详细信息

相关内容

  • 没有找到相关文章

最新更新