Поиск по сайту:

Установите многоузловой кластер Hadoop с помощью CDH4 в RHEL/CentOS 6.5.


Hadoop — это среда программирования с открытым исходным кодом, разработанная Apache для обработки больших данных. Он использует HDFS (Распределенная файловая система Hadoop) для хранения данных по всем узлам данных в кластере распределительным способом и модель Mapreduce для обработки данных.

Namenode (NN) — главный демон, управляющий HDFS и Jobtracker (JT). ) — главный демон для движка Mapreduce.

Требования

В этом руководстве я использую две виртуальные машины CentOS 6.3 «master» и «node», а именно. (master и node — мои имена хостов). «Главный» IP-адрес — 172.21.17.175, а IP-адрес узла — «172.21.17.188». Следующие инструкции также работают в версиях RHEL/CentOS 6.x.

На Мастере
[root@master ~]# hostname

master
[root@master ~]# ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.175  Bcast:172.21.19.255  Mask:255.255.252.0
На узле
[root@node ~]# hostname

node
[root@node ~]# ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.188  Bcast:172.21.19.255  Mask:255.255.252.0

Сначала убедитесь, что все хосты кластера присутствуют в файле /etc/hosts (на каждом узле), если у вас не настроен DNS.

На Мастере
[root@master ~]# cat /etc/hosts

172.21.17.175 master
172.21.17.188 node
На узле
[root@node ~]# cat /etc/hosts

172.21.17.197 qabox
172.21.17.176 ansible-ground

Установка многоузлового кластера Hadoop в CentOS

Мы используем официальный репозиторий CDH для установки CDH4 на все хосты (главный и узел) в кластере.

Шаг 1. Загрузите и установите репозиторий CDH.

Перейдите на официальную страницу загрузки CDH и скачайте версию CDH4 (т. е. 4.6) или используйте следующую команду wget, чтобы загрузить репозиторий и установить его.

На RHEL/CentOS 32-разрядной версии
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/i386/cloudera-cdh-4-0.i386.rpm
yum --nogpgcheck localinstall cloudera-cdh-4-0.i386.rpm
На RHEL/CentOS 64-разрядной версии
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.x86_64.rpm
yum --nogpgcheck localinstall cloudera-cdh-4-0.x86_64.rpm

Перед установкой многоузлового кластера Hadoop добавьте открытый ключ GPG Cloudera в свой репозиторий, выполнив одну из следующих команд в соответствии с архитектурой вашей системы.

## on 32-bit System ##

rpm --import http://archive.cloudera.com/cdh4/redhat/6/i386/cdh/RPM-GPG-KEY-cloudera
## on 64-bit System ##

rpm --import http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera

Шаг 2. Настройте JobTracker и NameNode.

Затем выполните следующую команду, чтобы установить и настроить JobTracker и NameNode на главном сервере.

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-0.20-mapreduce-jobtracker
[root@master ~]# yum clean all
[root@master ~]# yum install hadoop-hdfs-namenode

Шаг 3. Настройка узла вторичного имени

Снова выполните следующие команды на главном сервере, чтобы настроить узел вторичного имени.

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-hdfs-secondarynam

Шаг 4. Настройка Tasktracker и Datanode

Затем настройте TaskTracker и DataNode на всех узлах кластера (Node), кроме узлов JobTracker, NameNode и вторичного (или резервного) NameNode (в данном случае на узле).

[root@node ~]# yum clean all
[root@node ~]# yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode

Шаг 5. Настройка клиента Hadoop

Вы можете установить клиент Hadoop на отдельный компьютер (в данном случае я установил его на datanode, вы можете установить его на любой компьютер).

[root@node ~]# yum install hadoop-client

Шаг 6. Развертывание HDFS на узлах

Теперь, когда мы закончили вышеуказанные шаги, давайте перейдем к развертыванию hdfs (это необходимо сделать на всех узлах).

Скопируйте конфигурацию по умолчанию в каталог /etc/hadoop (на каждом узле кластера).

[root@master ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
[root@node ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster

Используйте команду alternatives, чтобы установить собственный каталог следующим образом (на каждом узле кластера).

[root@master ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

[root@master ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
[root@node ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

[root@node ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster

Шаг 7. Настройка файлов конфигурации

Теперь откройте файл «core-site.xml» и обновите «fs.defaultFS» на каждом узле кластера.

[root@master conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://master/</value>
</property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://master/</value>
</property>
</configuration>

Следующее обновление «dfs.permissions.superusergroup» в hdfs-site.xml на каждом узле кластера.

[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
     <name>dfs.name.dir</name>
     <value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
  </property>
  <property>
     <name>dfs.permissions.superusergroup</name>
     <value>hadoop</value>
  </property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
     <name>dfs.name.dir</name>
     <value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
  </property>
  <property>
     <name>dfs.permissions.superusergroup</name>
     <value>hadoop</value>
  </property>
</configuration>

Примечание. Убедитесь, что указанная выше конфигурация присутствует на всех узлах (сделайте это на одном узле и запустите scp для копирования на остальных узлах). узлов).

Шаг 8. Настройка каталогов локального хранилища

Обновите «dfs.name.dir или dfs.namenode.name.dir» в «hdfs-site.xml» на NameNode (на Master и Node). Пожалуйста, измените значение, как выделено.

[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
 <name>dfs.namenode.name.dir</name>
 <value>file:///data/1/dfs/nn,/nfsmount/dfs/nn</value>
</property>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
 <name>dfs.datanode.data.dir</name>
 <value>file:///data/1/dfs/dn,/data/2/dfs/dn,/data/3/dfs/dn</value>
</property>

Шаг 9. Создайте каталоги и управляйте разрешениями

Выполните приведенные ниже команды, чтобы создать структуру каталогов и управлять разрешениями пользователей на машинах Namenode (Master) и Datanode (Node).

[root@master]# mkdir -p /data/1/dfs/nn /nfsmount/dfs/nn
[root@master]# chmod 700 /data/1/dfs/nn /nfsmount/dfs/nn
[root@node]#  mkdir -p /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn
[root@node]#  chown -R hdfs:hdfs /data/1/dfs/nn /nfsmount/dfs/nn /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn

Отформатируйте Namenode (на Master), введя следующую команду.

[root@master conf]# sudo -u hdfs hdfs namenode -format

Шаг 10. Настройка вторичного NameNode

Добавьте следующее свойство в файл hdfs-site.xml и замените значение, как показано в Master.

<property>
  <name>dfs.namenode.http-address</name>
  <value>172.21.17.175:50070</value>
  <description>
    The address and port on which the NameNode UI will listen.
  </description>
</property>

Примечание. В нашем случае значение должно быть IP-адресом главной виртуальной машины.

Теперь давайте развернем MRv1 (Map-reduce версии 1). Откройте файл «mapred-site.xml», следуя значениям, как показано.

[root@master conf]# cp hdfs-site.xml mapred-site.xml
[root@master conf]# vi mapred-site.xml
[root@master conf]# cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
 <name>mapred.job.tracker</name>
 <value>master:8021</value>
</property>
</configuration>

Затем скопируйте файл «mapred-site.xml» на узел компьютера, используя следующую команду scp.

[root@master conf]# scp /etc/hadoop/conf/mapred-site.xml node:/etc/hadoop/conf/
mapred-site.xml                                                                      100%  200     0.2KB/s   00:00

Теперь настройте каталоги локального хранилища для использования демонами MRv1. Снова откройте файл «mapred-site.xml» и внесите изменения, как показано ниже, для каждого TaskTracker.

<property>
 <name>mapred.local.dir</name>
 <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value>
</property>

После указания этих каталогов в файле «mapred-site.xml» вы должны создать каталоги и назначить им правильные права доступа к файлам на каждом узле вашего кластера.

mkdir -p /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local
chown -R mapred:hadoop /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local

Шаг 10. Запустите HDFS.

Теперь выполните следующую команду, чтобы запустить HDFS на каждом узле кластера.

[root@master conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done
[root@node conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done

Шаг 11. Создайте каталоги HDFS /tmp и MapReduce /var.

Необходимо создать /tmp с соответствующими разрешениями, как указано ниже.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp
[root@master conf]# sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
[root@master conf]# sudo -u hdfs hadoop fs -mkdir -p /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chmod 1777 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chown -R mapred /var/lib/hadoop-hdfs/cache/mapred

Теперь проверьте структуру файла HDFS.

[root@node conf]# sudo -u hdfs hadoop fs -ls -R /

drwxrwxrwt   - hdfs hadoop          	0 2014-05-29 09:58 /tmp
drwxr-xr-x   	- hdfs hadoop          	0 2014-05-29 09:59 /var
drwxr-xr-x  	- hdfs hadoop          	0 2014-05-29 09:59 /var/lib
drwxr-xr-x   	- hdfs hadoop         	0 2014-05-29 09:59 /var/lib/hadoop-hdfs
drwxr-xr-x   	- hdfs hadoop          	0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache
drwxr-xr-x   	- mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred
drwxr-xr-x   	- mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred
drwxrwxrwt   - mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging

После запуска HDFS и создания «/tmp», но перед запуском JobTracker, создайте каталог HDFS, указанный параметром «mapred.system.dir» (по умолчанию $ {hadoop.tmp). .dir}/mapred/system и измените владельца на Mapred.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp/mapred/system
[root@master conf]# sudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system

Шаг 12: Запустите MapReduce

Чтобы запустить MapReduce: запустите службы TT и JT.

В каждой системе TaskTracker
[root@node conf]# service hadoop-0.20-mapreduce-tasktracker start

Starting Tasktracker:                               [  OK  ]
starting tasktracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-tasktracker-node.out
В системе JobTracker
[root@master conf]# service hadoop-0.20-mapreduce-jobtracker start

Starting Jobtracker:                                [  OK  ]

starting jobtracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-jobtracker-master.out

Затем создайте домашний каталог для каждого пользователя Hadoop. рекомендуется сделать это на NameNode; например.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir  /user/<user>
[root@master conf]# sudo -u hdfs hadoop fs -chown <user> /user/<user>

Примечание: где — имя пользователя Linux каждого пользователя.

Альтернативно вы можете создать домашний каталог следующим образом.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /user/$USER
[root@master conf]# sudo -u hdfs hadoop fs -chown $USER /user/$USER

Шаг 13. Откройте пользовательский интерфейс JT, NN из браузера.

Откройте браузер и введите URL-адрес в виде http://ip_address_of_namenode:50070 для доступа к Namenode.

Откройте другую вкладку в браузере и введите URL-адрес в виде http://ip_address_of_jobtracker:50030, чтобы получить доступ к JobTracker.

Эта процедура была успешно протестирована на RHEL/CentOS 5.X/6.X. Пожалуйста, прокомментируйте ниже, если у вас возникнут какие-либо проблемы с установкой, я помогу вам с решением.