4

Hadoop 1.1.2 がインストールされた Red Hat Enterprise Linux Server リリース 6.4 (Santiago) ディストリビューションを実行しています。疑似分散モードを有効にするために必要な構成を行いました。しかし、hadoop を実行しようとすると、datanode と tasktracker が起動しません。

ファイルを hdfs にコピーできません。

[hduser@is-joshbloom-hadoop hadoop]$ hadoop dfs -put README.txt /input
Warning: $HADOOP_HOME is deprecated.

13/05/23 16:42:00 WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /input could only be replicated to 0 nodes, instead of 1

また、試した後hadoop-daemon.sh start datanode、次のメッセージが表示されます。

starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-hduser-datanode-is-joshbloom-hadoop.out

タスクトラッカーも同様です。しかし、namenode、secondarynamenode、jobtracker に対して同じコマンドを実行すると、それらが実行されているように見えます。

namenode running as process 32933. Stop it first. 

私は次の解決策を試しました:

  1. namenode の再フォーマット
  2. Hadoop の再インストール
  3. 異なるバージョンの Hadoop (1.0.4) のインストール

どれも機能していないようです。Mac と amazon ubuntu VM で同じインストール手順を実行しましたが、完全に機能します。

Hadoop を機能させるにはどうすればよいですか? ありがとう!

*アップデート**

これはnamenodeのログエントリです

2013-05-23 16:27:44,087 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = java.net.UnknownHostException: is-joshbloom-hadoop: is-joshbloom-hadoop
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 1.1.2
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.1 -r 1440782; compiled by 'hortonfo' on Thu Jan 31 02:03:24 UTC 2013
************************************************************/
2013-05-23 16:27:44,382 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2013-05-23 16:27:44,432 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
2013-05-23 16:27:44,446 ERROR org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Error getting localhost name. Using 'localhost'...
java.net.UnknownHostException: is-joshbloom-hadoop: is-joshbloom-hadoop
        at java.net.InetAddress.getLocalHost(InetAddress.java:1438)
        at     org.apache.hadoop.metrics2.impl.MetricsSystemImpl.getHostname(MetricsSystemImpl.java:463)
        at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.configureSystem(MetricsSystemImpl.java:394)
        at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.configure(MetricsSystemImpl.java:390)
        at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.start(MetricsSystemImpl.java:152)
        at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.init(MetricsSystemImpl.java:133)
        at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.init(DefaultMetricsSystem.java:40)
        at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.initialize(DefaultMetricsSystem.java:50)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1589)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1608)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1734)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1751)
Caused by: java.net.UnknownHostException: is-joshbloom-hadoop
        at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:866)
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1258)
        at java.net.InetAddress.getLocalHost(InetAddress.java:1434)
        ... 11 more
2013-05-23 16:27:44,453 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled     snapshot period at 10 second(s).
2013-05-23 16:27:44,453 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode     metrics system started
2013-05-23 16:27:44,768 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2013-05-23 16:27:44,914 INFO org.apache.hadoop.util.NativeCodeLoader: Loaded the native-hadoop library
2013-05-23 16:27:45,212 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:     java.net.UnknownHostException: is-joshbloom-hadoop: is-joshbloom-hadoop
        at java.net.InetAddress.getLocalHost(InetAddress.java:1438)
        at org.apache.hadoop.security.SecurityUtil.getLocalHostName(SecurityUtil.java:271)
        at org.apache.hadoop.security.SecurityUtil.login(SecurityUtil.java:289)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:301)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1651)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1590)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1608)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1734)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1751)
Caused by: java.net.UnknownHostException: is-joshbloom-hadoop
        at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:866)
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1258)
        at java.net.InetAddress.getLocalHost(InetAddress.java:1434)
        ... 8 more

2013-05-23 16:27:45,228 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at java.net.UnknownHostException: is-joshbloom-hadoop: is-joshbloom-hadoop
************************************************************/

*アップデート***

の内容/etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
4

3 に答える 3

8

/etc/hostsホスト名ループバック マッピングを含めるように修正します。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.1.1   is-joshbloom-hadoop
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

is-joshbloom-hadoopあなたの問題は、マシンがホスト名を特定の IP アドレスに解決する方法を知らないことです。通常、解決が行われる場所/方法は 2 つあります。DNS サーバーを介するか、ローカル ホスト ファイルを使用します (ホスト ファイルが優先されます)。

上記の hosts ファイルの修正により、マシンはマシン名is-joshbloom-hadoopを IP アドレスに解決できるようになります127.0.1.1。OS には範囲の内部ループバック アドレスがあるため127.0.0.0/8、ここでは任意のアドレスを指定できます。私のUbuntuラップトップでは、127.0.1.1OS間で変更されると確信していますが、使用127.0.0.1しないことで、将来マシン名を変更した場合にlocalhost行で検索する必要がなくなると思います。

于 2013-05-24T11:20:52.227 に答える
2

HADOOP_HOME/conf で core-site.xml を確認してください。これにはfs.default.nameプロパティがあります。/etc/hosts で指定されたホスト名が必要です。「is-joshbloom-hadoop」ホスト名が /etc/ にありません。 hosts.代わりに localhost を使用してください

<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:54310</value>
</property>
</configuration>
于 2013-05-24T09:12:55.150 に答える
0

問題は、conf/slaves の下のスレーブ ファイルに何もないようなものです。

conf/slaves のスレーブ ファイルを確認します。すべてを削除し、そのファイルに localhost を追加します。hdfs-site.xml の下の dfs.name.dir および dfs.data.dir プロパティに記載されている名前とデータ ディレクトリを削除します。

HDFS ファイル システムをフォーマットしてから、デーモンを再起動します。

于 2013-05-27T13:10:48.043 に答える