Wyszukiwanie w witrynie

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.3master” 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.