3

「filepath」などのファイルを示す文字列が与えられた場合、blockIds を取得するにはどうすればよいですか?

Path を作成してから FileSystem を作成できることはわかっていますが、blockId を取得する方法がわかりません。

返信ありがとうございます。

4

1 に答える 1

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の内部メカニズムであり、おそらくクライアントに簡単に公開されないでしょう。

于 2012-07-09T11:09:47.777 に答える