Zainstaluj klaster wielowęzłowy Hadoop przy użyciu CDH4 w RHEL/CentOS 6.5
Hadoop to platforma programistyczna typu open source opracowana przez firmę Apache w celu przetwarzania dużych zbiorów danych. Wykorzystuje HDFS (rozproszony system plików Hadoop) do przechowywania danych we wszystkich węzłach danych w klastrze w sposób dystrybutywny i model mapreduce do przetwarzania danych.
Namenode (NN) to demon główny kontrolujący HDFS i Jobtracker (JT ) jest głównym demonem silnika mapreduce.
Wymagania
W tym samouczku używam dwóch maszyn wirtualnych CentOS 6.3 „master” i „node”, a mianowicie. (master i węzeł to moje nazwy hostów). Adres IP „głównego” to 172.21.17.175, a adres IP węzła to „172.21.17.188”. Poniższe instrukcje działają również w wersjach RHEL/CentOS 6.x.
Na Mistrzu
[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
Na węźle
[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
Najpierw upewnij się, że wszystkie hosty klastra znajdują się w pliku „/etc/hosts” (na każdym węźle), jeśli nie masz skonfigurowanego DNS.
Na Mistrzu
[root@master ~]# cat /etc/hosts
172.21.17.175 master
172.21.17.188 node
Na węźle
[root@node ~]# cat /etc/hosts
172.21.17.197 qabox
172.21.17.176 ansible-ground
Instalowanie klastra wielowęzłowego Hadoop w CentOS
Korzystamy z oficjalnego repozytorium CDH, aby zainstalować CDH4 na wszystkich hostach (Master i Node) w klastrze.
Krok 1: Pobierz Zainstaluj repozytorium CDH
Przejdź na oficjalną stronę pobierania CDH i pobierz wersję CDH4 (tj. 4.6) lub możesz użyć następującego polecenia wget, aby pobrać repozytorium i zainstalować je.
W systemie RHEL/CentOS w wersji 32-bitowej
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
W systemie RHEL/CentOS w wersji 64-bitowej
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
Przed zainstalowaniem klastra wielowęzłowego Hadoop dodaj publiczny klucz GPG Cloudera do swojego repozytorium, uruchamiając jedno z poniższych poleceń zgodnie z architekturą systemu.
## 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
Krok 2: Skonfiguruj JobTracker i NameNode
Następnie uruchom następujące polecenie, aby zainstalować i skonfigurować JobTracker i NameNode na serwerze głównym.
[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
Krok 3: Skonfiguruj węzeł nazwy dodatkowej
Ponownie uruchom następujące polecenia na serwerze głównym, aby skonfigurować węzeł nazwy dodatkowej.
[root@master ~]# yum clean all
[root@master ~]# yum install hadoop-hdfs-secondarynam
Krok 4: Skonfiguruj moduł śledzenia zadań i węzeł danych
Następnie skonfiguruj moduł śledzenia zadań i węzeł danych na wszystkich hostach klastra (węzeł) z wyjątkiem hostów JobTracker, NameNode i pomocniczych (lub rezerwowych) hostów NameNode (w tym przypadku na węźle).
[root@node ~]# yum clean all
[root@node ~]# yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode
Krok 5: Skonfiguruj klienta Hadoop
Możesz zainstalować klienta Hadoop na osobnej maszynie (w tym przypadku zainstalowałem go na datanodzie, możesz go zainstalować na dowolnym komputerze).
[root@node ~]# yum install hadoop-client
Krok 6: Wdróż system HDFS na węzłach
Teraz, jeśli skończyliśmy z powyższymi krokami, przejdźmy do wdrożenia hdfs (do zrobienia na wszystkich węzłach).
Skopiuj domyślną konfigurację do katalogu /etc/hadoop (na każdym węźle w klastrze).
[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
Użyj polecenia alternatives, aby ustawić własny katalog w następujący sposób (w każdym węźle w klastrze).
[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
Krok 7: Dostosowywanie plików konfiguracyjnych
Teraz otwórz plik „core-site.xml” i zaktualizuj „fs.defaultFS” w każdym węźle klastra.
[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>
Następna aktualizacja „dfs.permissions.superusergroup” w pliku hdfs-site.xml w każdym węźle klastra.
[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>
Uwaga: upewnij się, że powyższa konfiguracja jest obecna na wszystkich węzłach (zrób to na jednym węźle i uruchom scp, aby skopiować na spoczynku węzłów).
Krok 8: Konfiguracja lokalnych katalogów przechowywania
Zaktualizuj „dfs.name.dir lub dfs.namenode.name.dir” w „hdfs-site.xml” w NameNode (na Master i Node ). Zmień wartość zgodnie z podświetleniem.
[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>
Krok 9: Twórz katalogi i zarządzaj uprawnieniami
Wykonaj poniższe polecenia, aby utworzyć strukturę katalogów i zarządzać uprawnieniami użytkowników na komputerze Namenode (Master) i 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
Sformatuj Namenode (na Master), wydając następujące polecenie.
[root@master conf]# sudo -u hdfs hdfs namenode -format
Krok 10: Konfigurowanie dodatkowego węzła nazw
Dodaj następującą właściwość do pliku hdfs-site.xml i zamień wartość tak, jak pokazano na 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>
Uwaga: w naszym przypadku wartością powinien być adres IP głównej maszyny wirtualnej.
Teraz wdróżmy MRv1 (wersja Map-Reduce 1). Otwórz plik „mapred-site.xml”, kierując się wartościami, jak pokazano.
[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>
Następnie skopiuj plik „mapred-site.xml” na komputer węzła, używając następującego polecenia 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
Teraz skonfiguruj lokalne katalogi pamięci do użycia przez demony MRv1. Ponownie otwórz plik „mapred-site.xml” i wprowadź zmiany, jak pokazano poniżej dla każdego modułu TaskTracker.
<property>
 <name>mapred.local.dir</name>
 <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value>
</property>
Po określeniu tych katalogów w pliku „mapred-site.xml” musisz utworzyć katalogi i przypisać do nich odpowiednie uprawnienia do plików w każdym węźle w klastrze.
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
Krok 10: Uruchom HDFS
Teraz uruchom następujące polecenie, aby uruchomić system HDFS w każdym węźle w klastrze.
[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
Krok 11: Utwórz katalogi HDFS /tmp i MapReduce /var
Wymagane jest utworzenie /tmp z odpowiednimi uprawnieniami, dokładnie tak, jak opisano poniżej.
[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
Teraz sprawdź strukturę pliku 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
Po uruchomieniu HDFS i utworzeniu „/tmp”, ale przed uruchomieniem JobTrackera utwórz katalog HDFS określony parametrem „mapred.system.dir” (domyślnie &36 {hadoop.tmp .dir}/mapred/system i zmień właściciela na 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
Krok 12: Uruchom MapReduce
Aby uruchomić MapReduce: uruchom usługi TT i JT.
W każdym systemie 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
W systemie 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
Następnie utwórz katalog domowy dla każdego użytkownika hadoop. zaleca się wykonanie tej czynności w NameNode; Na przykład.
[root@master conf]# sudo -u hdfs hadoop fs -mkdir /user/<user>
[root@master conf]# sudo -u hdfs hadoop fs -chown <user> /user/<user>
Uwaga: gdzie to nazwa użytkownika systemu Linux każdego użytkownika.
Alternatywnie możesz utworzyć katalog domowy w następujący sposób.
[root@master conf]# sudo -u hdfs hadoop fs -mkdir /user/$USER
[root@master conf]# sudo -u hdfs hadoop fs -chown $USER /user/$USER
Krok 13: Otwórz interfejs JT, NN w przeglądarce
Otwórz przeglądarkę i wpisz adres URL jako http://ip_address_of_namenode:50070, aby uzyskać dostęp do Namenode.
Otwórz inną kartę w przeglądarce i wpisz adres URL jako http://ip_address_of_jobtracker:50030, aby uzyskać dostęp do JobTracker.
Ta procedura została pomyślnie przetestowana na RHEL/CentOS 5.X/6.X. Jeśli napotkasz jakiekolwiek problemy z instalacją, napisz komentarz poniżej, pomogę Ci w rozwiązaniu.