web-dev-qa-db-ja.com

HDFSがデータを保存する場所

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.xmlhadoop.tmp.dir->他の一時ディレクトリのベース。

  • hdfs-default.xmldfs.datanode.data.dir->ローカルファイルシステム上のDFSデータノードがブロックを保存する場所を決定します。

    このプロパティのデフォルト値は-> file://${hadoop.tmp.dir}/dfs/dataです。

dfs.datanode.data.dirhdfs-site.xml)の値を明示的に指定したので、データがその場所に格納されることを意味しますか?もしそうなら、dfs/dataは${dfs.datanode.data.dir}のディレクトリに追加されますか?具体的には-> /hadoop/hdfs/datanode/dfs/dataになりますか?

しかし、私はこのディレクトリ構造が作成されるのを見ませんでした。

私の環境で見た1つの観察:

MapReduceプログラムをいくつか実行すると、このディレクトリが作成されます。つまり、/hadoop/tmp/dfs/dataが作成されます。

したがって、プロパティdfs.datanode.data.dirで提案されているように、データがディレクトリに格納されるかどうかは不明です。

誰か似たような経験はありますか?

19
CuriousMind

Hdfsファイルのデータはdfs.datanode.data.dirで指定されたディレクトリに保存され、デフォルト値に表示される/dfs/dataサフィックスは追加されません。

hdfs-site.xmlを編集した場合、変更を有効にするにはDataNodeサービスを再起動する必要があります。また、値を変更すると、以前の場所に格納されていたブロックを提供するDataNodeサービスの機能が失われます。

最後に、上記ではfile:/...ではなくfile://...で値を指定しています。ファイルURIには追加のスラッシュが必要なので、これらの値がデフォルトに戻る可能性があります。

14
RickH