27

Hadoopにはhadoop.tmp.dir、ドキュメントによると、「他の一時ディレクトリのベース」である構成パラメーターがあります。このパスはローカルファイルシステムを参照していると思います。

この値をに設定しました/mnt/hadoop-tmp/hadoop-${user.name}。namenodeをフォーマットしてすべてのサービスを開始した後、HDFSで作成されたまったく同じパスが表示されます。

これは、 HDFShadoop.tmp.dir上の一時的な場所を指しますか?

4

3 に答える 3

33

紛らわしいですが、hadoop.tmp.dirローカルの一時ディレクトリのベースとして、またHDFSでも使用されます。ドキュメントは素晴らしいものではありませんがmapred.system.dir、デフォルトでに設定されています。これにより、Map/Reduceフレームワークがシステムファイルを保存するHDFS"${hadoop.tmp.dir}/mapred/system"上のパスが定義されます。

これらを結び付けないようにする場合はmapred-site.xml、mapred.system.dirの定義が結び付けられていないものになるように編集できます。${hadoop.tmp.dir}

于 2011-05-20T22:10:54.113 に答える
27

kkruglerの答えにもう少し追加しましょう:

hadoop.tmp.dirそれらの値に含まれる3つのHDFSプロパティがあります

  1. dfs.name.dir:namenodeがメタデータを格納するディレクトリ。デフォルト値は${hadoop.tmp.dir}/dfs/name
  2. dfs.data.dir:HDFSデータブロックが保存されているディレクトリ。デフォルト値は${hadoop.tmp.dir}/dfs/data
  3. fs.checkpoint.dir:セカンダリnamenodeがチェックポイントを格納するディレクトリ。デフォルト値は${hadoop.tmp.dir}/dfs/namesecondary

これが、/mnt/hadoop-tmp/hadoop-${user.name}namenodeをフォーマットした後にHDFSで表示された理由です。

于 2013-01-25T22:38:23.397 に答える
3

これに関する情報を探し回っていました。私が思いついたのは、Amazon Elastic MapReduce開発ガイドのこの投稿だけでした:

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 /)の下にマウントされます。したがって、HDFSに大量のデータを書き込むことができます。

于 2010-03-02T04:11:56.317 に答える