1

マルチマシンモードでHadoop(2.6.0)をセットアップしました:1つの名前ノード+ 3つのデータノード。コマンド start-all.sh を使用すると、それら (namenode、datanode、Resource Manager、Node Manager) は正常に機能しました。jps コマンドで確認したところ、各ノードの結果は次のようになりました。

NameNode :

7300 リソースマネージャー

6942ネームノード

7154 二次名ノード

データノード:

3840 データノード

3924ノードマネージャー

また、サンプル テキスト ファイルを HDFS の /user/hadoop/data/sample.txt にアップロードしました。その時点で絶対にエラーはありません。

しかし、hadoop の例の jar で mapreduce を実行しようとしたとき:

hadoop jar hadoop-mapreduce-examples-2.6.0.jar ワードカウント /user/hadoop/data/sample.txt /user/hadoop/output

このエラーがあります:

15/04/08 03:31:26 INFO mapreduce.Job: Job job_1428478232474_0001 running    in uber mode : false
15/04/08 03:31:26 INFO mapreduce.Job:  map 0% reduce 0%
15/04/08 03:31:26 INFO mapreduce.Job: Job job_1428478232474_0001 failed with     state FAILED due to: Application application_1428478232474_0001 failed 2 times due to Error launching appattempt_1428478232474_0001_000002. Got exception: java.net.ConnectException: Call From hadoop/127.0.0.1 to localhost:53245 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:791)
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:731)
at org.apache.hadoop.ipc.Client.call(Client.java:1472)
at org.apache.hadoop.ipc.Client.call(Client.java:1399)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:232)
at com.sun.proxy.$Proxy31.startContainers(Unknown Source)
at org.apache.hadoop.yarn.api.impl.pb.client.ContainerManagementProtocolPBClientImpl.startContainers(ContainerManagementProtocolPBClientImpl.java:96)
at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.launch(AMLauncher.java:119)
at org.apache.hadoop.yarn.server.resourcemanager.amlauncher.AMLauncher.run(AMLauncher.java:254)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:530)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:494)
at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:607)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:705)
at org.apache.hadoop.ipc.Client$Connection.access$2800(Client.java:368)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1521)
at org.apache.hadoop.ipc.Client.call(Client.java:1438)
    ... 9 more Failing the application.
15/04/08 03:31:26 INFO mapreduce.Job: Counters: 0

構成については、namenode がプロンプト パスワードなしでデータ ノードに SSH で接続できることを確認してください。また、IP6 を無効にし、/etc/hosts ファイルを変更しました。

127.0.0.1 ローカルホスト Hadoop

192.168.56.102 hadoop-nn

192.168.56.103 hadoop-dn1

192.168.56.104 hadoop-dn2

192.168.56.105 hadoop-dn3

namenode と datanodes が正常に動作しているにもかかわらず、mapreduced が実行できない理由がわかりません。私はほとんどここで立ち往生しています.理由を見つけるのを手伝ってもらえますか??

ありがとうございました

編集: hdfs-site.xml (namenode) の設定:

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///usr/local/hadoop/hadoop_stores/hdfs/namenode</value>
    <description>NameNode directory for namespace and transaction logs storage.</description>
</property>
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
<property>
    <name>dfs.datanode.use.datanode.hostname</name>
    <value>false</value>
</property>
<property>
    <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
    <value>false</value>
</property>
<property>
     <name>dfs.namenode.http-address</name>
     <value>hadoop-nn:50070</value>
     <description>Your NameNode hostname for http access.</description>
</property>
<property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>hadoop-nn:50090</value>
     <description>Your Secondary NameNode hostname for http access.</description>
</property>

データノード内:

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///usr/local/hadoop/hadoop_stores/hdfs/data/datanode</value>
    <description>DataNode directory</description>
</property>

<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
<property>
    <name>dfs.datanode.use.datanode.hostname</name>
    <value>false</value>
</property>
<property>
     <name>dfs.namenode.http-address</name>
     <value>hadoop-nn:50070</value>
     <description>Your NameNode hostname for http access.</description>
</property>
<property>
     <name>dfs.namenode.secondary.http-address</name>
     <value>hadoop-nn:50090</value>
     <description>Your Secondary NameNode hostname for http access.</description>

コマンドの結果は次のとおりです: hadoop fs -ls /user/hadoop/data

hadoop@hadoop:~/DATA$ hadoop fs -ls /user/hadoop/data 15/04/09 00:23:27 2 アイテムが見つかりました

-rw-r--r-- 3 Hadoop スーパーグループ 29 2015-04-09 00:22 >/user/hadoop/data/sample.txt

-rw-r--r-- 3 Hadoop スーパーグループ 27 2015-04-09 00:22 >/user/hadoop/data/sample1.txt

hadoop fs -ls /ユーザー/hadoop/出力

ls: `/user/hadoop/output': そのようなファイルやディレクトリはありません

4

2 に答える 2

0

解決策が見つかりました!! このポストヤーンを参照してください。データ ノードの ID/名前が localhost として表示されます。

Call From localhost.localdomain/127.0.0.1 to localhost.localdomain:56148 failed on connection exception: java.net.ConnectException: Connection refused;

マスターとスレーブの両方が、/etc/hostname に localhost.localdomain のホスト名を持っていました。
スレーブのホスト名をslave1とslave2に変更しました。それはうまくいきました。皆様、お時間をいただきありがとうございました。

@kate namenode と datanodes の etc/hostname が localhost に設定されていないことを確認してください。ターミナルに ~# hostname と入力するだけで確認できます。同じコマンドで新しいホスト名を設定できます。

私のマスターとワーカーまたはスレーブの /etc/hosts は次のようになります-

127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
#127.0.1.1    localhost
192.168.111.72  master
192.168.111.65  worker1
192.168.111.66  worker2

worker1 のホスト名

hduser@worker1:/mnt/hdfs/datanode$ cat /etc/hostname 
worker1

と worker2

hduser@worker2:/usr/local/hadoop/logs$ cat /etc/hostname 
worker2

また、おそらく、ループバック インターフェースで「hadoop」ホスト名を使用したくないでしょう。すなわち

127.0.0.1 localhost hadoop 

このポイント (1) をhttps://wiki.apache.org/hadoop/ConnectionRefusedで確認してください。

ありがとうございました。

于 2015-05-28T16:53:06.023 に答える
0

ファイアウォールの問題:

java.net.ConnectException: 接続が拒否されました

このエラーは、ファイアウォールの問題が原因である可能性があります。ターミナルでこれを行います:

sudo apt-get install iptables-persistent
sudo iptables -L
sudo iptables-save > /usr/iptables-backup/iptables.v4.rules

続行する前に、ファイルが作成されているかどうかを確認してください (これは、何か問題が発生した場合にファイアウォールを復元するために使用されるためです)。

次に、iptable ルールをフラッシュします (つまり、ファイアウォールを停止します):

sudo iptables -F

今試してみてください、

sudo iptables -L

このコマンドはルールを返さないはずです。それでは、map/reduce ジョブを実行してみてください。

注: iptables を以前の状態に復元する場合は、ターミナルで次のように入力します。

sudo iptables-restore < /usr/iptables-backup/iptables.v4.rules

于 2015-04-09T05:32:45.590 に答える