Псевдораспределенный режим Hadoop - Datanode и средство отслеживания задач не запускаются

Я использую дистрибутив Red Hat Enterprise Linux Server версии 6.4 (Сантьяго) с установленным на нем Hadoop 1.1.2. Я выполнил необходимые настройки для включения псевдораспределенного режима. Но при попытке запустить hadoop не запускаются датанод и средство отслеживания задач.

Я не могу копировать файлы на 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, и он отлично работает.

Как мне заставить работать 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

person Vijay    schedule 23.05.2013    source источник
comment
Можете ли вы опубликовать содержимое вашего /etc/hosts файла?   -  person Chris White    schedule 24.05.2013
comment
@ChrisWhite - так hosts выглядит   -  person Vijay    schedule 24.05.2013


Ответы (3)


Измените свой /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-адрес. Обычно разрешение происходит в двух местах / методах - либо через DNS-сервер, либо с использованием файла локальных хостов (файл хостов имеет приоритет).

Приведенная выше поправка к файлу hosts позволяет компьютеру преобразовывать имя машины is-joshbloom-hadoop в IP-адрес 127.0.1.1. ОС имеет внутренний адрес обратной петли для диапазона 127.0.0.0/8, поэтому вы можете указать здесь любой адрес. На моем ноутбуке с Ubuntu он использует 127.0.1.1, и я уверен, что он меняется между ОС, но я предполагаю, что, не используя 127.0.0.1, вам не нужно искать его в строке localhost, если вы измените имя своей машины в будущем.

person Chris White    schedule 24.05.2013
comment
Не могли бы вы объяснить мне, что такое отображение обратной связи имени хоста? А также почему 127.0.1.1 вместо 127.0.0.1? Я ценю твои старания. Спасибо - person Vijay; 24.05.2013
comment
Спасибо, Крис. Просто попробовали, и все работает? Вы можете мне объяснить, что мы только что сделали? - person Vijay; 24.05.2013

Проверьте свой core-site.xml в HADOOP_HOME / conf. У него будет свойство fs.default.name. Имя хоста должно быть указано в вашем /etc/hosts."is-joshbloom-hadoop "имени хоста. отсутствует в /etc/hosts. используйте вместо этого localhost

<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:54310</value>
</property>
</configuration>
person aruns    schedule 24.05.2013
comment
У меня есть core-site.xml, который выглядит именно так. Но у меня нет файла is-joshbloom-hadoop в файле hosts. Должен ли я изменить свой core-site.xml на <value>hdfs://is-joshbloom-hadoop:54310</valuse> или просто оставить его без изменений? - person Vijay; 24.05.2013

Проблема, похоже, такая, что у вас ничего нет в файле подчиненных устройств в разделе conf / slaves.

Проверьте файл подчиненных устройств в conf / slaves. Удалите все и добавьте в этот файл localhost. Удалите имя и каталог данных, указанные в свойствах dfs.name.dir и dfs.data.dir в hdfs-site.xml.

Отформатируйте файловую систему HDFS и снова запустите демонов ur.

person Kanav Narula    schedule 27.05.2013