我需要编写一个程序,用于从给定文件的特定数据节点中提取HDFS 中的块。这不是在MapReduce
作业中运行,而是以编程方式在我的集群上收集一些统计信息。
到目前为止,给定一个文件,我已经能够提取与该文件关联的块位置。对于每个块,有多个副本,我需要访问位于某个副本上的块。我理解这些主要是远程读取操作。
我做了以下事情:
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
Path inFile = new Path(args[0]);
FileStatus status = fs.getFileStatus(inFile);
BlockLocation[] locs = fs.getFileBlockLocations(status, 0, status.getLen());
String[] hosts = locs[0].getHosts ();
有人能告诉我如何从主机[0] 中获取 locs [0] 指向的块吗?