给定一个表示文件的字符串,例如“filepath”,如何获取blockIds?
我知道我可以构造一个路径而不是创建一个文件系统,但不知道如何继续获取 blockIds。
感谢您的回复。
在命令行中,您可以使用 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 的内部机制,可能不容易暴露给客户端。