2017-01-28 2 views
0

Я только что начал изучать хаоп из книги Hadoop: окончательный путеводитель.Демон Namenode не начинается правильно

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

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

HDFS-site.xml

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

</configuration> 

ядро-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> 

пряжи 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) 

Это из mapred войти

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 : connection refused, который говорит

  • Убедитесь, что для вашего имени хоста не указано значение 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

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

+0

Вы упомянули адрес узла имени в core-site.xml как localhost –

+0

@siddharthajain Да, файл конфигурации не является проблемой, поскольку демон запускался в первый раз. – Faye

ответ

1

Ну это говорит в файле журнала 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 команды.

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

0

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

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

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

2.format в NameNode:

bin/hadoop namenode -format 

3.Start все процессы снова:

bin/start-all.sh 
+0

В моем вопросе я писал, что если я форматирую namenode, тогда демоны начнутся успешно, но если я что-то сделаю в fs, например 'copyFromLocal', проблема снова появится. Только YARN работает на localhost, но не hdfs и mapreduce. – Faye

+2

Также 'start-all.sh' устарел, и вы должны запустить демоны соответственно. – Faye

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