在给定文件Path的情况下,是否有任何API可以顺序获取文件的blockIds?

时间:2012-07-09 03:55:21

标签: hadoop hdfs

给定一个表示文件的字符串,例如“filepath”,如何获取blockIds?

我知道我可以构建Path而不是创建FileSystem,但不知道如何继续获取blockIds。

感谢您的回复。

1 个答案:

答案 0 :(得分:1)

从命令行,您可以使用fsck命令获取文件阻止列表:

hadoop@Studio-1555:/opt/hadoop/hadoop-1.0.2/bin$ ./hadoop fsck /hadoop/mapred/system/jobtracker.info -files -blocks
FSCK started by hadoop from /127.0.0.1 for path /hadoop/mapred/system/jobtracker.info at Mon Jul 09 06:57:14 EDT 2012
/hadoop/mapred/system/jobtracker.info 4 bytes, 1 block(s):  OK
0. blk_-9148080207111019586_1001 len=4 repl=1

至于编程方式,我不确定你能做什么比DFSck程序更多的事情,并对FsckServlet执行查询并解析结果。从FileSystem.getBlockLocations(..)返回的BlockLocation对象没有给出块ID,但我猜它们是HDFS的内部机制,可能不容易暴露给客户端。