Hadoop / Yarn (v0.23.3) Настройка псевдо-распределенного режима:: Нет узла задания
Я просто установил Hadoop/Yarn 2.x (в частности, v0.23.3) в режиме Psuedo-Distributed.
Я следовал инструкциям нескольких блогов и веб-сайтов, которые более или менее предоставляют тот же рецепт для его настройки. Я также следовал за 3-м выпуском книги О'рейли о Hadoop (которая, по иронии судьбы, была наименее полезной).
ЭТА ПРОБЛЕМА:
After running "start-dfs.sh" and then "start-yarn.sh", while all of the daemons
do start (as indicated by jps(1)), the Resource Manager web portal
(Here: http://localhost:8088/cluster/nodes) indicates 0 (zero) job-nodes in the
cluster. So while submitting the example/test Hadoop job indeed does get
scheduled, it pends forever because, I assume, the configuration doesn't see a
node to run it on.
Below are the steps I performed, including resultant configuration files.
Hopefully the community help me out... (And thank you in advance).
КОНФИГУРАЦИЯ:
Следующие переменные среды установлены в профилях учетных записей UNIX my и hadoop: ~ /.profile:
export HADOOP_HOME=/home/myself/APPS.d/APACHE_HADOOP.d/latest
# Note: /home/myself/APPS.d/APACHE_HADOOP.d/latest -> hadoop-0.23.3
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_INSTALL=${HADOOP_HOME}
export HADOOP_CLASSPATH=${HADOOP_HOME}/lib
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop/conf
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export YARN_HOME=${HADOOP_HOME}
export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop/conf
export JAVA_HOME=/usr/lib/jvm/jre
hadoop $ java -version
java version "1.7.0_06-icedtea<br>
OpenJDK Runtime Environment (fedora-2.3.1.fc17.2-x86_64)<br>
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)<br>
# Although the above shows OpenJDK, the same problem happens with Sun's JRE/JDK.
Каталоги NAMENODE & DATANODE, также указанные в файле etc/hadoop/conf/hdfs-site.xml:
/home/myself/APPS.d/APACHE_HADOOP.d/latest/YARN_DATA.d/HDFS.d/DATANODE.d/
/home/myself/APPS.d/APACHE_HADOOP.d/latest/YARN_DATA.d/HDFS.d/NAMENODE.d/
Далее, различные файлы конфигурации XML (опять же, YARN/MRv2/v0.23.3 здесь):
hadoop$ pwd; ls -l
/home/myself/APPS.d/APACHE_HADOOP.d/latest/etc/hadoop/conf
lrwxrwxrwx 1 hadoop hadoop 16 Sep 20 13:14 core-site.xml -> ../core-site.xml
lrwxrwxrwx 1 hadoop hadoop 16 Sep 20 13:14 hdfs-site.xml -> ../hdfs-site.xml
lrwxrwxrwx 1 hadoop hadoop 18 Sep 20 13:14 httpfs-site.xml -> ../httpfs-site.xml
lrwxrwxrwx 1 hadoop hadoop 18 Sep 20 13:14 mapred-site.xml -> ../mapred-site.xml
-rw-rw-r-- 1 hadoop hadoop 10 Sep 20 15:36 slaves
lrwxrwxrwx 1 hadoop hadoop 16 Sep 20 13:14 yarn-site.xml -> ../yarn-site.xml
ядро-site.xml
<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
<!-- Same problem whether this (legacy) stanza is included or not. -->
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
HDFS-site.xml
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/myself/APPS.d/APACHE_HADOOP.d/YARN_DATA.d/HDFS.d/NAMENODE.d</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/myself/APPS.d/APACHE_HADOOP.d/YARN_DATA.d/HDFS.d/DATANODE.d</value>
</property>
</configuration>
Пряжа-site.xml
<?xml version="1.0"?>
<!-- yarn-site.xml -->
<configuration>
<property>
<name>yarn.resourcemanager.address</name>
<value>localhost:8032</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/myself/APPS.d/APACHE_HADOOP.d/YARN_DATA.d/TEMP.d</value>
</property>
</configuration>
и т.д. / Hadoop / CONF / сохраняет
localhost
# Community/friends, is this entry correct/needed for my psuedo-dist mode?
Разные заключительные записки:
(1) As you may have gleaned from above, all files/directories are owned
by the 'hadoop' UNIX user. There is a hadoop:hadoop, UNIX User and
Group, respectively.
(2) The following command was run after the NAMENODE & DATANODE directories
(listed above) were created (and whose paths were entered into
hdfs-site.xml):
hadoop$ hadoop namenode -format
(3) Next, I ran "start-dfs.sh", then "start-yarn.sh".
Here is jps(1) output:
hadoop@e6510$ jps
21979 DataNode
22253 ResourceManager
22384 NodeManager
22156 SecondaryNameNode
21829 NameNode
22742 Jps
Спасибо!
2 ответа
После долгих трудов по этой проблеме, но безуспешно (и, поверьте мне, я попробовал все это), я основал Hadoop, используя другое решение. В то время как выше я загрузил gzip/tar ball из дистрибутива hadoop (снова v0.23.3) с одного из зеркал загрузки, на этот раз я использовал дистрибутив RPM-пакетов Caldera CDH, который я установил через их репозитории YUM. В надежде, что это кому-то поможет, вот подробные шаги.
Шаг 1:
Для Hadoop 0.20.x (MapReduce версия 1):
# rpm -Uvh http://archive.cloudera.com/redhat/6/x86_64/cdh/cdh3-repository-1.0-1.noarch.rpm
# rpm --import http://archive.cloudera.com/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera
# yum install hadoop-0.20-conf-pseudo
-или же-
Для Hadoop 0.23.x (MapReduce версия 2):
# rpm -Uvh http://archive.cloudera.com/cdh4/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.noarch.rpm
# rpm --import http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera
# yum install hadoop-conf-pseudo
В обоих вышеупомянутых случаях установка этого пакета "psuedo" (что означает режим "псевдораспределенный Hadoop") сама по себе будет запускать установку всех других необходимых вам пакетов (через разрешение зависимостей).
Шаг 2:
Установите Java JRE от Sun / Oracle (если вы этого еще не сделали). Вы можете установить его через предоставленный ими RPM или переносную версию gzip/tar ball. Неважно, что, если вы правильно установите и экспортируете среду "JAVA_HOME" и убедитесь, что ${JAVA_HOME}/bin/java находится на вашем пути.
# echo $JAVA_HOME; which java
/home/myself/APPS.d/JAVA-JRE.d/jdk1.7.0_07
/home/myself/APPS.d/JAVA-JRE.d/jdk1.7.0_07/bin/java
Примечание. На самом деле я создаю символическую ссылку с именем "latest" и указываю / переправляю ее в каталог, специфичный для версии JAVA, всякий раз, когда обновляю JAVA. Я был явно выше для понимания читателя.
Шаг 3: Отформатируйте hdfs как пользователя Unix "hdfs" (созданный во время "yum install" выше).
# sudo su hdfs -c "hadoop namenode -format"
Шаг 4:
Запустите вручную демоны hadoop.
for file in `ls /etc/init.d/hadoop*`
do
{
${file} start
}
done
Шаг 5:
Проверьте, все ли работает. Следующее предназначено для MapReduce v1 (на MapReduce v2 на этом поверхностном уровне это не сильно отличается).
root# jps
23104 DataNode
23469 TaskTracker
23361 SecondaryNameNode
23187 JobTracker
23267 NameNode
24754 Jps
# Do the next commands as yourself (not as "root").
myself$ hadoop fs -mkdir /foo
myself$ hadoop fs -rmr /foo
myself$ hadoop jar /usr/lib/hadoop-0.20/hadoop-0.20.2-cdh3u5-examples.jar pi 2 100000
Я надеюсь, что это помогло!
Ноэль,
В этот день я следовал инструкциям, приведенным в этом руководстве: http://www.thecloudavenue.com/search?q=0.23 и мне удалось настроить небольшой кластер из 3 компьютеров Centos 6.3.