我有一个安装了hadoop-2.1.0-beta的集群。有没有办法了解每个文件拆分在我的集群中的位置?我正在寻找的是如下列表
filesplit_0001 node1
filesplit_0002 node4
...
编辑:我知道这样的列表在 Azure Microsoft可用。
fsck 工具提供了一种简单的方法来找出任何特定文件中的块。例如:
% hadoop fsck <path> -files -blocks -locations -racks
参考 : Hadoop命令行指南.
编辑:
输入分割是由单个地图处理的输入块。每个映射处理一个拆分。每个拆分都分为多个记录,映射依次处理每个记录一个键值对。拆分和记录是合乎逻辑的,但 HDFS 块是物理的。
InputSplit
具有以字节为单位的长度和一组存储位置,这些位置只是主机名字符串。拆分不包含输入数据;它只是对数据的引用。
您可以在map
方法中获取InputSplit
实例。
InputSplit inputSplit=context.getInputSplit(); //Input split instance
String[] splitLocations = inputSplit.getLocations();