Sunday, 7 April 2013

Установка Apache Hadoop 1.1.2 на Ubuntu 12.04 в режиме single-node

Итак, для работы Hadoop нам в первую очередь потребуется Java. Но какая? OpenJDK или с oracle.com? Официальная документация говорит о том, что лучше взять JRE с oracle.com. Делаем это по моему мануалу.

Также нужно поставить rsync:
apt-get install -y rsync
Также перед началом работ привеодим в корректный вид хостнейм машины и прописываем его резолвинг в hosts

cat /etc/hostname
hadoop.domain.org

cat /etc/hosts
127.0.0.1 localhost
88.yy.144.xx  hadoop.domain.org

Далее, чтобы не потеряться в многообразии сборок приведу простую таблицу (источник):

  • 1.0.X - current stable version, 1.0 release
  • 1.1.X - current beta version, 1.1 release
  • 2.X.X - current alpha version
  • 0.23.X - simmilar to 2.X.X but missing NN HA.
  • 0.22.X - does not include security
  • 0.20.203.X - old legacy stable version
  • 0.20.X - old legacy version
Я выбираю 1.1.2. 

Как предпочтительный вариант устанвоки я выбираю deb пакет, стягиваем его:
cd /usr/src
wget http://www.sai.msu.su/apache/hadoop/common/hadoop-1.1.2/hadoop_1.1.2-1_x86_64.deb
dpkg -i hadoop_1.1.2-1_x86_64.deb

При устанвоке по моему мануалу пусть к папке java будет следующий: /usr/lib/jvm/jre1.7.0_17, его нужно венсти в конфигурацию Hadoop /etc/hadoop/hadoop-env.sh на строке export JAVA_HOME.

А вот бага в скрипте установки, из-за которой можно получить следующие ошибки в установке:

 * Starting Apache Hadoop Job Tracker server hadoop-jobtracker                                                               chown: changing ownership of `/var/log/hadoop/root': Operation not permitted
starting jobtracker, logging to /var/log/hadoop/root/hadoop-root-jobtracker-hadoop.domain.org.out
/usr/sbin/hadoop-daemon.sh: line 136: /var/log/hadoop/root/hadoop-root-jobtracker-hadoop.domain.org.out: Permission denied
head: cannot open `/var/log/hadoop/root/hadoop-root-jobtracker-hadoop.domain.org.out' for reading: No such file or directory
                                                                                                                      [fail]
 * Starting Apache Hadoop Task Tracker server hadoop-tasktracker                                                             chown: changing ownership of `/var/log/hadoop/root': Operation not permitted
starting tasktracker, logging to /var/log/hadoop/root/hadoop-root-tasktracker-hadoop.domain.org.out
/usr/sbin/hadoop-daemon.sh: line 136: /var/log/hadoop/root/hadoop-root-tasktracker-hadoop.domain.org.out: Permission denied
head: cannot open `/var/log/hadoop/root/hadoop-root-tasktracker-hadoop.domain.org.out' for reading: No such file or directory
                                                                                                                      [fail]


Как ее фиксить - я не знаю и смысла разбираться не вижу, так как баг еще открыт в апстриме, рано или поздно его испарвят. Пока же фикс прост (И КРАЙНЕ НЕБЕЗОПАСЕН! НЕ ДЕЛАЙТЕ ТАК В ПРОДАКШЕНЕ!):
mkdir -p /var/log/hadoop
chmod -R 777 /var/log/hadoop


После этого запускаем мастер устанвоки и отвечаем yes на всего его вопросы:

hadoop-setup-single-node.sh
Welcome to Hadoop single node setup wizard
Would you like to use default single node configuration? (y/n) y
Would you like to format name node? (y/n) y
Would you like to setup default directory structure? (y/n) y
Would you like to start up Hadoop? (y/n) y
Would you like to start up Hadoop on reboot? (y/n) y
Review your choices:
Setup single node configuration    : y
Format namenode                    : y
Setup default file system structure: y
Start up Hadoop                    : y
Start up Hadoop on reboot          : y
Proceed with setup? (y/n) y
Должно быть вадано раз [ok], это будет означать успешный запуск всего необходимого ПО.


Java откроет прослушку кучи соединений (их должно быть ровно 9 штук! Если их меньше - перезагрзите сервер, так как какой-то из компонентов Hadoop не поднялся):

netstat -lnpt|grep java
tcp        0      0 0.0.0.0:50060           0.0.0.0:*               LISTEN      1547/java    
tcp        0      0 127.0.0.1:8020          0.0.0.0:*               LISTEN      1191/java    
tcp        0      0 127.0.0.1:50070         0.0.0.0:*               LISTEN      1191/java    
tcp        0      0 0.0.0.0:50010           0.0.0.0:*               LISTEN      1316/java    
tcp        0      0 0.0.0.0:50075           0.0.0.0:*               LISTEN      1316/java    
tcp        0      0 0.0.0.0:50020           0.0.0.0:*               LISTEN      1316/java    
tcp        0      0 127.0.0.1:34086         0.0.0.0:*               LISTEN      1547/java       
В моем случае не запускался jobtracker! Баг с jobtracker в логе выглядит так:
2013-04-07 15:24:36,889 INFO org.apache.hadoop.ipc.Server: IPC Server handler 9 on 9000: starting
2013-04-07 15:24:36,889 INFO org.apache.hadoop.mapred.JobTracker: Setting safe mode to true. Requested by : root
2013-04-07 15:24:36,967 INFO org.apache.hadoop.mapred.JobTracker: Setting safe mode to false. Requested by : root
2013-04-07 15:24:36,982 INFO org.apache.hadoop.mapred.JobTracker: Cleaning up the system directory
2013-04-07 15:24:36,986 WARN org.apache.hadoop.mapred.JobTracker: Failed to operate on mapred.system.dir (hdfs://localhost:8020/mapred/mapredsystem) because of permissions.
2013-04-07 15:24:36,986 WARN org.apache.hadoop.mapred.JobTracker: Manually delete the mapred.system.dir (hdfs://localhost:8020/mapred/mapredsystem) and then start the JobTracker.
2013-04-07 15:24:36,986 WARN org.apache.hadoop.mapred.JobTracker: Bailing out ...
org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="":hdfs:supergroup:rwxr-xr-x

Источник фикса: http://blog.cuongnv.com/2011/12/how-to-setup-hadoop-100-on-rhelcentos.html

Фикс:
sudo -u hdfs hadoop fs -mkdir /mapred
sudo -u hdfs hadoop fs -chown mapred /mapred
/etc/init.d/hadoop-jobtracker start
Теперь проверяем работу Hadoop специальным тестовым скриптом:
hadoop-validate-setup.sh --user=hdfs

Выдача её ну очень объемна и выглядит вот так: teragen, terasort, teravalidate passed. Это означает, что Hadoop установлен корректно и работает полностью верно.

Для управления Hadoop имеется ряд веб-интерфейсов доступных только с  localhost:
JobTracker website: http://localhost:50030
NameNode website : http://localhost:50070
Task track website: http://localhost:50060
Источники:
http://jinutechworld.blogspot.ru/2012/01/hadoop-100-single-node-configuration-on.html
http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/
http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/


1 comment:

  1. Пофиксить HADOOP-8182 можно так

    sudo chmod g+w /var/log/hadoop/root/
    sudo chmod g+w /var/log/hadoop/root/SecurityAuth.audit

    ReplyDelete

Note: only a member of this blog may post a comment.