指定されたブロック ID がどのデータ ノードに存在するかを調べるためのプログラム インターフェイスはありますか。つまり、fsImage を読み取り、この情報を返す機能です。
質問する
1916 次
2 に答える
0
HDFS hadoopでblockNameからファイルを検索する方法と同様に、ブロックIDから(ファイル名のみで)情報を検索できるnamenodeへのパブリックインターフェイスはありません。
fsImageを開くことを確認できますが、ブロックをホストする実際の場所(DataNode)はこのファイルに保存されないため、ブロックIDからファイル名へのマッピングのみが提供されます。データノードはデータディレクトリをツリーウォークし、NameNodeにレポートします。何がブロックされているのか。
名前ノードにデバッガーをアタッチできれば、ブロックマップを調べることができるかもしれませんが、IDからファイル名へのマップがないため、O(n)操作になります。
于 2012-06-09T13:20:03.383 に答える
0
私が知っている大雑把な方法の 1 つは、dfs データ ディレクトリで blockName を持つファイルを探すことです。ただし、これは O(n) ソリューションであり、これには O(1) ソリューションがあると確信しています。
于 2012-06-09T05:57:18.167 に答える