web-dev-qa-db-ja.com

DFSを使用しないとはどういう意味ですか?

これは最近Web UIで見たものです

 Configured Capacity     :   232.5 GB
 DFS Used    :   112.44 GB
 Non DFS Used    :   119.46 GB
 DFS Remaining   :   613.88 MB
 DFS Used%   :   48.36 %
 DFS Remaining%  :   0.26 %

そして、私はとても混乱していて、Used-dfsは容量の半分以上を占めています。

これは、hadoopストレージの半分が無駄になっていることを意味すると思います

意味のない時間を費やして検索した後、namenodeをフォーマットし、ゼロから始めました。

次に、1つの巨大なテキストファイル(約19ギガバイト)をローカルからHDFS(成功)にコピーしました。

今UIは言う

Configured Capacity  :   232.5 GB
DFS Used     :   38.52 GB
Non DFS Used     :   45.35 GB
DFS Remaining    :   148.62 GB
DFS Used%    :   16.57 %
DFS Remaining%   :   63.92 %

コピーする前は、DFS UsedとNon DFS Usedはどちらも0でした。

DFS Usedは元のテキストファイルサイズの約2倍であり、2つのコピーを構成したため、

DFS Usedはオリジナルとメタの2つのコピーで構成されていると思います。

しかし、私は非DFSユーズドがどこから来たのか、そしてなぜそれがDFSユーズドよりもはるかに多くの容量を必要とするのかという理由を私は知りません。

何が起こった?間違えましたか?

22

「使用されていないDFS」は、次の式で計算されます。

非DFS使用=構成済み容量-残りスペース-DFS使用

それは、少なくとも私にとってはまだ混乱しています。

なぜなら構成済み容量=合計ディスク容量-予約済み容量

したがって、使用されていないDFS = =(合計ディスク容量-予約済み容量)-残りの容量-DFSが使用されています

例を見てみましょう。 100 GBのディスクがあり、予約領域(dfs.datanode.du.reserved)を30 GBに設定していると仮定します。

ディスクでは、システムと他のファイルは最大40 GBを使用し、DFSは10 GBを使用しました。 df -hを実行すると、そのディスクボリュームに使用可能なスペースが50GBであることがわかります。

HDFS Web UIでは、次のように表示されます

使用されていないDFS = 100GB(合計)-30 GB(予約済み)-10 GB(DFS使用済み)-50GB(残り 10 GB)==

つまり、実際には、DFS以外の使用には30G、HDFSには70Gを予約するように最初に構成しました。ただし、dfs以外の使用量が30Gの予約を超え、HDFSに属するはずの10 GBのスペースを消費することが判明しました。

「非DFSを使用」という用語は、実際には次のような名前に変更する必要があります"構成されたDFS容量がDFS以外の使用によって占有されている量"

そして、df以外の使用がhadoop内で非常に高い理由を理解しようとするのをやめるべきです。

有用なコマンドの1つはlsof | grep deleteは、削除された開いているファイルを特定するのに役立ちます。場合によっては、Hadoopプロセス(Hive、yarn、mapredやhdfsなど)がすでに削除されているファイルへの参照を保持していることがあります。そして、これらの参照はディスク領域を占有します。

またdu -hsx * | sort -rh | head -10は、上位10個の最大フォルダを一覧表示するのに役立ちます。

34
Tim Fei

使用されている非DFSは、dfs.data.dirsにないデータノードのファイルシステム内のデータです。これには、ログファイル、mapreduceシャッフル出力、およびデータファイルのローカルコピー(データノードに配置した場合)が含まれます。 duまたは同様のツールを使用して、ファイルシステムのスペースを占有しているものを確認します。

7

正しい簡略化された定義は次のとおりです。「HDFSによってdfs.data.dirsと同じファイルシステムに書き込まれていないデータ。つまり、hdfs dfsコマンドを使用してデータをコピーすると、結果的にdfs.data.dirsの下では「DFSの使用」と見なされます。通常のcpコマンドを使用してファイルをdfs.data.dirsにコピーすると、「DFS以外の使用」になります。

2
haridsv

もう一つ。
Non DFS used = 100GB(Total) - 30 GB( Reserved) - 10 GB (DFS used) - 50GB(Remaining) = 10 GB
ext3/ext4のデフォルトの予約は5%(予約済みブロック数を参照)であるため、
Non DFS used = 100GB(Total) - 30 GB( Reserved from App) - 5 GB(Reserved from FS) - 10 GB (DFS used) - 50GB(Remaining) = 5 GB

Sudo tune2fs -l /dev/sdm1から「予約済みブロック数」を取得します
BTW、tune2fs -m 0.2 /dev/sdm1で予約済みスペースを調整します。

1
world watera

Non-dfsは、ノードマネージャによって格納されるいくつかのキャッシュファイルになります。あなたは、yarn-site.xmlのyarn.nodemanager.local-dirsプロパティの下のパスを確認することができます

詳細については、デフォルトの yarn-site.xml を参照できます。

0
Sumukh