Hadoopには設定パラメータhadoop.tmp.dir
があり、これはドキュメントに従って、 `"他の一時ディレクトリのベースです。 "私は、このパスはローカルファイルシステムへ。
この値を/mnt/hadoop-tmp/hadoop-${user.name}
に設定しました。 namenodeをフォーマットしてすべてのサービスを開始した後、HDFSで作成されたまったく同じパスが表示されます。
つまり、hadoop.tmp.dir
は[〜#〜] hdfs [〜#〜]?
混乱を招きますが、hadoop.tmp.dir
はローカルの一時ディレクトリのベースとして使用され、[〜#〜] hdfs [〜#〜]でも使用されます。ドキュメントはすばらしいですが、mapred.system.dir
はデフォルトで"${hadoop.tmp.dir}/mapred/system"
に設定されており、これにより[〜#〜] hdfs [〜#〜]のパスが定義されますMap/Reduceフレームワークがシステムファイルを格納する場所。
これらを結び付けたくない場合は、mapred-site.xml
を編集して、mapred.system.dirの定義が${hadoop.tmp.dir}
に関連付けられていないようにすることができます。
Kkruglerの答えにもう少し追加してみましょう:
値にhadoop.tmp.dir
を含む3つのHDFSプロパティがあります
dfs.name.dir
:namenodeがメタデータを保存するディレクトリ。デフォルト値は${hadoop.tmp.dir}/dfs/name
です。dfs.data.dir
:HDFSデータブロックが保存されるディレクトリ。デフォルト値は${hadoop.tmp.dir}/dfs/data
です。fs.checkpoint.dir
:セカンダリネームノードがチェックポイントを格納するディレクトリ。デフォルト値は${hadoop.tmp.dir}/dfs/namesecondary
です。これが、namenodeのフォーマット後にHDFSで/mnt/hadoop-tmp/hadoop-${user.name}
を確認した理由です。
これに関する情報を見て回った。私が思いつくことができる唯一のものは、 Amazon Elastic MapReduce Dev Guide のこの投稿でした:
Hadoop-site.xmlで、hadoop.tmp.dirを/ mnt/var/lib/hadoop/tmpに設定しました。/mntは、「追加の」EC2ボリュームをマウントする場所です。デフォルトのボリュームよりも多くのデータを含めることができます。 (正確な量はインスタンスのタイプによって異なります。)HadoopのRunJar.Java(入力JARをアンパックするモジュール)は、hadoop.tmp.dirをローカルパスではなくHadoopファイルシステムパスとして解釈するため、代わりにHDFSのパスに書き込みますローカルパスの。 HDFSは/ mnt(具体的には/ mnt/var/lib/hadoop/dfs /)の下にマウントされています。そのため、大量のデータを書き込むことができます。