wtorek, 28 września 2010

Hadoop instalacja, część II.

Do tej pory pracowaliśmy na Hadoopie w wersie Pseudo-Distributed, czyli nie rozproszonej. W tym poście postaram się opisać konfiguracje klastra złożonego z dwóch maszyn:
  1. Master (ip 192.xxx.xx.101) - będzie pełnił rolę NameNode, oraz JobTrackera. Jako że nasz klaster składa się zaledwie z dwóch maszyn, uruchomimy na nim DataNode oraz TaskTracker.
  2. Slave (ip 192.xxx.xx.102) - uruchomimy na nim DataNode oraz TaskNode.
Dla zapewnienia bezpieczeństwa oraz ułatwienia konfiguracji na obu maszynach, dodajemy grupę oraz użytkownika:
sudo addgroup hadoop
sudo adduser --ingroup hadoop hadoop
.

Logujemy się na nowo stworzonego użytkownika. Instalujemy oraz testujemy Hadoopa na obu maszynach, tak jak to pisałem w części pierwszej tego artykułu.

Możemy dla wygody ustawić na obydwóch maszynach:
etc/hosts
192.xxx.xx.101 master
192.xxx.xx.102 slave

Ponieważ Hadoop do komunikacji między Nodami używa ssh do poprawnego działania, użytkownik zalogowany na maszynę Master musi mieć możliwość zalogowania się przez ssh bez podawania hasła na maszyne Slave. W tym celu kopiujemy klucz z Mastera z katalogu <HOME>/.ssh/nazwa_klucza.pub do <HOME>/.ssh/authorized_keys na Slavie.

Przechodzimy do konfiguracji Hadoopa.
Najpierw konfigurujemy maszynę Master:
W pliku conf/masters dodajemy namiar na maszynę gdzie uruchomiony będzie NameNode oraz JobTracker:
master

Wpliku conf/slaves ustawiamy maszyny gdzie znajdują się DataNode oraz TaskNode:
master
slave

Na wszystkich maszynach modyfikujemy konfiguracje w następujący sposób:
W pliku conf/core-site.xml:
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>

W pliku conf/mapred-site.xml:
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property> 
W pliku conf/hdfs-site.xml:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
Warto ustawić dodatkowe parametry, choć są one opcjonalne:
W pliku conf/mapred-site.xml:
mapred.local.dir - lista lokalnych katalogow dla tymczasowych danych - jeśli na maszynie mamy kilka dysków możemy je tutaj podać poprawi to czas operacji I/O.
mapred.map.tasks - maksymalna ilosc maperów - dokumentacja mówi, że najlepszym ustawieniem jest 10x ilość maszyn Slave.
mapred.reduce.tasks - maksymalna liczba reducerów - dokumentacja mówi, że najlepszym ustawieniem jest  2x ilość rdzeni na wszystkich maszynach Slave.

Uruchamiamy klaster:
Najpierw formatujemy NameNode:
bin/hadoop namenode -format
Uruchamiamy HDFS:
bin/start-dfs.sh

Uruchamiamy MapReduce:
bin/start-mapred.sh

Jeśli wszystko pójdzie po naszej myśli, na maszynie Master oraz Slave w katalogu <HADOOP_HOME>/logs pojawią się logi mówiące o poprawnym uruchomieniu poszczególnych elementów klastra.

Brak komentarzy: