打印所有详细信息
我有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.