2014-01-02 2 views
9

Я искал веб и stackoverflow в течение длительного времени, но это было бесполезно.hadoop - Соединение отказалось от namenode

Я установил hasoop пряжу 2.2.0 в настройке кластера двух узлов. но что-то не так. , когда я запускаю демонов daoop, используя start-dfs.sh и start-yarn.sh на главном узле, они успешно выполняются в главном и подчиненном (имя моего хозяина - RM, а имя моего slave - slv). они могут успешно ssh друг друга. но когда я хочу, чтобы выполнить задание, появляется эта ошибка:

14/01/02 04:22:53 WARN util.NativeCodeLoader: Не удалось загрузить библиотеку нативной Hadoop для платформы ... используя builtin- java classes, где применимо 14/01/02 04:22:56 WARN hdfs.DFSClient: Исключение DataStreamer org.apache.hadoop.ipc.RemoteException (java.io.IOException): Файл/пользователь/корень/QuasiMonteCarlo_1388665371850_813553673/in/part0 может быть реплицирован только на 0 узлов вместо minReplication (= 1). Работает 0 datanode (s), и ни один узел (ы) не исключен в этой операции. at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget (BlockManager.java:1384) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock (FSNamesystem.java:2477) at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock (NameNodeRpcServer.java:555) на org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock (ClientNamenodeProtocolServerSideTranslatorPB.java:387) на org.apache. hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos $ ClientNamenodeProtocol $ 2.callBlockingMethod (ClientNamenodeProtocolProtos.java:59582) на org.apache.hadoop.ipc.ProtobufRpcEngine $ сервера $ ProtoBufRpcInvoker.call (ProtobufRpcEngine.java:585) в org.apache .hadoop.ipc.RPC $ Server.call (RPC.java:928) at org.apache.hadoop.ipc.Server $ Handler $ 1.run (Server.java:2048) at org.apache.hadoop.ipc.Server $ Обработчик $ 1.run (Server.java:2044) в java. security.AccessController.doPrivileged (собственный метод) at javax.security.auth.Subject.doAs (Subject.java:416) at org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1491) at org .apache.hadoop.ipc.Server $ Handler.run (Server.java:2042)

at org.apache.hadoop.ipc.Client.call(Client.java:1347) 
at org.apache.hadoop.ipc.Client.call(Client.java:1300) 
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:206) 
at com.sun.proxy.$Proxy9.addBlock(Unknown Source) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:622) 
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:186) 
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102) 
at com.sun.proxy.$Proxy9.addBlock(Unknown Source) 
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.addBlock(ClientNamenodeProtocolTranslatorPB.java:330) 
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.locateFollowingBlock(DFSOutputStream.java:1226) 
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1078) 
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:514) 

и в DataNode журнал этот журнал существует:

2014-01-02 04: 40: 31,616 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: проблема подключения к серверу: RM/192.168.1.101: 9000 2014-01-02 04:40: 37,618 INFO org.apache.hadoop.ipc.Client: Повторная попытка подключения к серверу: RM/192.168.1.101: 9000. Уже пробовали 0 раз (а) $ 2014-01-02 04: 40: 38,619 INFO org.apache.hadoop.ipc.Client: Повторная попытка подключения к серверу: RM/192.168.1.101: 9000. Уже пробовали 1 раз (а) $ 2014-01-02 04: 40: 39,620 INFO org.apache.hadoop.ipc.Client: Повторная попытка подключения к серверу: RM/192.168.1.101: 9000. Уже пробовали 2 раз (а) $ 2014-01-02 04: 40: 40,621 INFO org.apache.hadoop.ipc.Client: Повторная попытка подключения к серверу: RM/192.168.1.101: 9000. Уже попробовал 3 раз (а)

Я проверил 9000 порт на главном узле, а выход заключается в следующем:

ТСР 0 0 127.0.0.1:9000 0.0.0.0: * СЛУШАТЬ 10227/Java

Я предполагаю, что проблема вызвана той причине, что в ведомом узле, когда я

телнет RM 9000

это говорит

Попытка 192.168.1.101 ... telnet: Не удается подключиться к удаленному хосту: Соединение отклонено

однако

телнет RM

выход:

Попытка 192.168.1.101 ... Подключение к RM. Символ выхода - '^]'. Ubuntu 12.04.2 LTS RM Логин:

для получения дополнительной информации мои/и т.д./хосты ведущего и ведомого, как показано ниже:

127.0.0.1 RM | SLV локальный

192,168 .1.101 RM

192.168.1.103 SLV

Может ли кто-нибудь предложить мне решение? любая помощь действительно оценена. благодаря

+0

Используете IPTables на NameNode? Или что-то еще, что ограничивало бы доступ к порту 9000? – highlycaffeinated

+0

Хороший отчет, спасибо. –

ответ

11

Я думаю, что проблема в том, что ваш мастер прослушивает 127.0.0.1:9000, поэтому DataNode не может подключиться, потому что он не слушает на 192.168.1.101:9000 (теоретически, хорошее место, чтобы слушать это 0.0.0.0:9000, поскольку позволяет избежать этой проблемы, но, кажется, это конфигурация не принимается).

Может исправят модифицируя /etc/hosts вычеркиванием первой строки, или попробуйте сначала просто с:

127.0.0.1 localhost 
192.168.1.101 RM 
192.168.1.103 slv 

- редактировать: читать комментарии сильфонные

+0

благодарит океан за ваш полезный ответ :) после этого изменения telnet работает правильно, а Namenode и Datanode могут связываться друг с другом, но когда я запускаю экзамен, появляется эта ошибка: – masoumeh

+0

14/01/03 02:53:46 INFO mapreduce.Job: Задание job_1388746341375_0001 не удалось с состоянием FAILED из-за: Application application_1388746341375_0001 не удалось выполнить 2 раза из-за AM Container для appattempt_1388746341375_0001_000002, выходящего с exitCode: -1000 из-за: Вызов от slv/192.168.1.103 до 0.0.0.0:9000 не удалось при отключении подключения: java.net .ConnectException: соединение отклонено; Для получения дополнительной информации см .: http://wiki.apache.org/hadoop/ConnectionRefused . Исправлена ​​эта попытка. Сбой приложения. 14/01/03 02:53:46 INFO mapreduce.Job: Счетчики: 0 – masoumeh

+0

та же ошибка в журнале Resourcemanager. Я буду обсуждать журнал nodemanager в новом ответе ниже :) – masoumeh

1

У меня была такая же проблема, я изменил

<property> 
    <name>fs.defaultFS</name> 
    <value>hdfs://localhost:8020</value> 
</property> 

в ядро-site.xml к

<property> 
    <name>fs.defaultFS</name> 
    <value>hdfs://ip-address:8020</value> 
</property> 

и он работал

0

Я столкнулся с той же проблемой. После запуска jps мы видим, что все namenode и datanode работают. но не может видеть активный узел на веб-странице. И я нашел, что положил 127.0.0.1 master в /etc/hosts. После удаления. рабы могут telnet master 9000.

Мои /etc/hosts выглядит так:

127.0.0.1 localhost 

192.168.139.129 slave1 

192.168.139.130 slave2 

192.168.139.128 master 
Смежные вопросы