Демон Namenode не запускается должным образом

Я только начал изучать Hadoop по книге Hadoop: полное руководство.

Я следовал руководству по установке Hadoop в режиме псевдораспространения. Я включил вход без пароля в ssh. Отформатировал файловую систему hdfs перед первым использованием. Первый раз успешно стартовал. После этого я скопировал текстовый файл с помощью copyFromLocal в HDFS, и все прошло нормально. Но если я перезапущу систему и снова запущу демонов и посмотрю веб-интерфейс, успешно запустится только YARN.

Когда я запускаю команду stop-dfs.sh, я получаю

Stopping namenodes on [localhost]
localhost: no namenode to stop
localhost: stopping datanode
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: stopping secondarynamenode

Если я отформатирую файловую систему hdfs снова, а затем попытаюсь запустить демоны, все они запустятся успешно.

Вот мои файлы конфигурации. Точно так, как сказано в полном руководстве по Hadoop.

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>    
        <value>1</value>
    </property>

</configuration>

core-site.xml

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

mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

</configuration>

yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>localhost</value>    
    </property>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

Это ошибка в файле журнала namenode

WARN org.apache.hadoop.hdfs.server.common.Storage: Storage directory /tmp/hadoop/dfs/name does not exist
 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:327)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:215)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:975)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:681)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:585)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:645)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:812)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:796)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1493)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1559)

Это из лога мапред

Caused by: java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:744)
    at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
    at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531)
    at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:495)
    at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:614)
    at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:712)
    at org.apache.hadoop.ipc.Client$Connection.access$2900(Client.java:375)
    at org.apache.hadoop.ipc.Client.getConnection(Client.java:1528)
    at org.apache.hadoop.ipc.Client.call(Client.java:1451)
    ... 33 more

Я посетил apache hadoop: соединение отклонено, которое говорит

  • Убедитесь, что для вашего имени хоста нет записи, сопоставленной с 127.0.0.1 или 127.0.1.1 в /etc/hosts (этим Ubuntu печально известна).

Я обнаружил, что в моем /etc/hosts есть запись, но если я удалю ее, мой sudo сломается, что приведет к ошибке sudo: unable to resolve host . Что мне добавить в /etc/hosts, если не удалить мое имя хоста, сопоставленное с 127.0.1.1

Я не могу понять, в чем основная причина этой проблемы.


person Faye    schedule 28.01.2017    source источник
comment
Упомянули ли вы адрес узла имени в core-site.xml как localhost?   -  person siddhartha jain    schedule 28.01.2017
comment
@siddharthajain Да, файл конфигурации не проблема, потому что демон запустился в первый раз.   -  person Faye    schedule 28.01.2017


Ответы (2)


Что ж, в вашем файле журнала Namenode сказано, что хранилище вашего каталога namenode по умолчанию — /tmp/hadoop. В некоторых системах каталог /tmp форматируется в Linux при перезагрузке. Так что это должно быть проблемой.

Вам необходимо изменить каталог namenode и datanode по умолчанию, изменив файл конфигурации hdfs-site.xml.

Добавьте это в свой hdfs-site.xml

<property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///home/"your-user-name"/hadoop</value> 
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///home/"your-user-name"/datanode</value>   
    </property>

После этого отформатируйте свой namenode командой hdfs namenode -format.

Я думаю, что это положит конец вашей проблеме.

person Totoro    schedule 30.01.2017

Если файл конфигурации не является проблемой, попробуйте следующее:

1. сначала удалите все содержимое из временной папки:

 rm -Rf <tmp dir> (my was /usr/local/hadoop/tmp)

2. отформатируйте узел имени:

bin/hadoop namenode -format

3.запустите все процессы заново:

bin/start-all.sh
person Nishu Tayal    schedule 28.01.2017
comment
Я написал в своем вопросе, что если я форматирую namenode, то демоны запускаются успешно, но если я делаю что-то в fs, например copyFromLocal, проблема возникает снова. На локальном хосте работает только YARN, но не hdfs и mapreduce. - person Faye; 28.01.2017
comment
Также start-all.sh устарел, и вы должны запускать демоны соответственно. - person Faye; 28.01.2017