HadoopがデータをHDFSに格納する場所を理解しようとしています。私は設定ファイルを参照します:core-site.xml
およびhdfs-site.xml
私が設定したプロパティは次のとおりです。
core-site.xml
:
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
</property>
hdfs-site.xml
:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop/hdfs/datanode</value>
</property>
上記の配置では、dfs.datanode.data.dir
のように、データブロックはこのディレクトリに格納されます。これは正しいです?
私はApache hadoopリンクを参照しました、そしてそれから私はこれを見る:
core-default.xml
:hadoop.tmp.dir
->他の一時ディレクトリのベース。
hdfs-default.xml
dfs.datanode.data.dir
->ローカルファイルシステム上のDFSデータノードがブロックを保存する場所を決定します。
このプロパティのデフォルト値は-> file://${hadoop.tmp.dir}/dfs/data
です。
dfs.datanode.data.dir
(hdfs-site.xml
)の値を明示的に指定したので、データがその場所に格納されることを意味しますか?もしそうなら、dfs/dataは${dfs.datanode.data.dir}
のディレクトリに追加されますか?具体的には-> /hadoop/hdfs/datanode/dfs/data
になりますか?
しかし、私はこのディレクトリ構造が作成されるのを見ませんでした。
私の環境で見た1つの観察:
MapReduceプログラムをいくつか実行すると、このディレクトリが作成されます。つまり、/hadoop/tmp/dfs/data
が作成されます。
したがって、プロパティdfs.datanode.data.dirで提案されているように、データがディレクトリに格納されるかどうかは不明です。
誰か似たような経験はありますか?
Hdfsファイルのデータはdfs.datanode.data.dir
で指定されたディレクトリに保存され、デフォルト値に表示される/dfs/data
サフィックスは追加されません。
hdfs-site.xml
を編集した場合、変更を有効にするにはDataNodeサービスを再起動する必要があります。また、値を変更すると、以前の場所に格納されていたブロックを提供するDataNodeサービスの機能が失われます。
最後に、上記ではfile:/...
ではなくfile://...
で値を指定しています。ファイルURIには追加のスラッシュが必要なので、これらの値がデフォルトに戻る可能性があります。