5

デフォルトでは、Hadoop は hadoop.tmp.dir を /tmp フォルダーに設定します。これは問題です。再起動すると /tmp が Linux によって消去され、 JobTracker から次の素敵なエラーが発生するためです。

2012-10-05 07:41:13,618 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:8020. Already tried 0 time(s).    
...    
2012-10-05 07:41:22,636 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:8020. Already tried 9 time(s).
2012-10-05 07:41:22,643 INFO org.apache.hadoop.mapred.JobTracker: problem cleaning system directory: null
java.net.ConnectException: Call to localhost/127.0.0.1:8020 failed on connection exception: java.net.ConnectException: Connection refused
    at org.apache.hadoop.ipc.Client.wrapException(Client.java:767)    

これを修正するために私が見つけた唯一の方法は、名前ノードを再フォーマットすることです。これにより、/tmp/hadoop-root フォルダーが再構築されます。これはもちろん、再起動すると再び消去されます。

そこで、/hadoop_temp というフォルダーを作成し、すべてのユーザーに読み取り/書き込みアクセスを許可しました。次に、core-site.xml でこのプロパティを設定します。

 <property>
          <name>hadoop.tmp.dir</name>
          <value>file:///hadoop_temp</value>
 </property>

namenode を再フォーマットすると、Hadoop は満足しているようで、次のメッセージが表示されました。

12/10/05 07:58:54 INFO common.Storage: Storage directory file:/hadoop_temp/dfs/name has been successfully formatted.

しかし、/hadoop_temp を見てみると、フォルダーが空であることに気付きました。その後、Hadoop を再起動して JobTracker のログを確認したところ、次のように表示されました。

2012-10-05 08:02:41,988 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:8020. Already tried 0 time(s).
...
2012-10-05 08:02:51,010 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:8020. Already tried 9 time(s).
2012-10-05 08:02:51,011 INFO org.apache.hadoop.mapred.JobTracker: problem cleaning system directory: null
java.net.ConnectException: Call to localhost/127.0.0.1:8020 failed on connection exception: java.net.ConnectException: Connection refused

namenode のログを確認したところ、次のように表示されました。

2012-10-05 08:00:31,206 INFO org.apache.hadoop.hdfs.server.common.Storage: Storage directory /opt/hadoop/hadoop-0.20.2/file:/hadoop_temp/dfs/name does not exist.
2012-10-05 08:00:31,212 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /opt/hadoop/hadoop-0.20.2/file:/hadoop_temp/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.

だから、明らかに私は何かを正しく設定していませんでした。core-site.xml で hadoop.tmp.dir を /hadoop_temp に設定しても、Hadoop は /tmp フォルダーにファイルが表示されることを期待しています。私は何を間違えましたか?hadoop.tmp.dir の許容される「正しい」値は何ですか?

おまけの質問: hbase.tmp.dir には何を使用すればよいですか?

システム情報 :

Ubuntu 12.04、Apache Hadoop .20.2、Apache HBase .92.1

ご覧いただきありがとうございます。

4

2 に答える 2

3

これを手伝ってくれた Hadoop メーリング リストの Harsh に感謝します。彼を引用するには:

「0.20.x または 1.x ベースのリリースでは、hadoop.tmp.dir に file:/// プレフィックスを使用しないでください。」

file:// プレフィックスを削除したところ、機能しました。

于 2012-10-05T21:27:49.950 に答える
0

また、Hbase 0.94* では指定する必要があります

<property> <name>hbase.cluster.distributed</name> <value>true</value> </property>

于 2013-04-29T23:07:34.863 に答える