poniedziałek, 30 sierpnia 2010

Hadoop instalacja, część I.

Platformę Hadoop możemy instalować w trzech trybach:
1. Standalone - nie rozproszona, wszystko działa w jednym procesie Javowym, użyteczna podczas debugowanie Jobów. Brak HDSF-a.
2. Pseudo-Distributed - również nie rozproszona, ale każdy z elementów działa w osobnym wątku,  wszystkie elementy są uruchomione.
3. Fully-Distributed - czyli pełnoprawny klaster.


Dziś postaram się omówić dwa pierwsze tryby.


Aby zainstalować Hadoopa potrzebne nam będą:
1. System operacyjny z rodziny Linux - ja użyłem Ubuntu 9.10 (można uruchomić Hadoopa  pod systemem Windows ale tylko jako wersję deweloperską).
2. Zainstalowana Java 6.
3. Skonfigurowane ssh.
4. Hadoop - ja używam wersji 20.02


Ok, a więc zaczynamy!
Postów na temat jak instalować Ubuntu powstało już naprawdę dużo, dlatego przejdźmy od razu do instalowania Javy, aby to zrobić wykonujemy polecenie:
sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts


Sprawdzamy czy mamy najnowsze pakiety dla ssh:
sudo apt-get install ssh
sudo apt-get install rsync


Uruchamiamy ssh:
ssh localhost


Jeśli musimy się uwierzytelniać podając hasło, dobrze jest dodać RSA dla naszego użytkownika:
Tworzymy klucz poleceniem:
ssh-keygen -t rsa -P ""
Nastepnie kopiujemy go do odpowiedniego katalogu używając polecenia:
cat /scieżka gdzie zapisalimy klucz/.ssh/nazwa_klucza.pub >> /katalog domowy/.ssh/authorized_keys
Potrzebny będzie restart!
Środowisko mamy gotowe, czas na Hadoopa.
Rozpakowujemy paczkę, w pliku conf/hadoop-env.sh ustawiamy JAVA_HOME. Hadoop w wersji Standalone powinień działać, aby się upewnić uruchamiamy przykład, który zliczy nam słowa z wszystkich plików znajdujących sie w katalogu input:
bin/hadoop jar hadoop-*-examples.jar grep input output '\w+'
Jeśli wszystko poszło dobrze w katalogu output znajdziemy plik z wynikami.


Czas na Pseudo-Distributed.
W pliku conf/core-site.xml podajemy adres węzła HDFS:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>


Skoro mamy tylko jeden węzeł Hadoopa w pliku conf/hdfs-site.xml ilość replikacji ustawiamy na jeden:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>


W pliku conf/mapred.site.xml wskazujmy gdzie będzie znajdował się węzeł, który będzie odpowiedzialny za uruchamianie jobów:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>


Opcjonalnie warto jeszcze dodać w pliku conf/hdfs-site.xml ścieżki gdzie HDFS ma przetrzymywać swoje dane:
Katalog dla metadanych NameNode:
<property>
<name>dfs.name.dir</name>
<value>/home/user/hadoop/dfs/namenode</value>
</property>
Katalog dla bloków danych:
<property>
<name>dfs.data.dir</name>
<value>/home/user/hadoop/dfs/data</value>
</property>
Gdy wszystko mamy już skonfigurowane formatujemy HDFS-a:
bin/hadoop namenode -format

Uruchamiamy Hadoopa:
bin/start-all.sh
Jeśli wszystko jest w porządku będziemy mieli możliwość obejrzenia dwóch stron:
  • NameNode - http://localhost:50070/
  • JobTracker - http:localhost:50030/
W razie jakichkolwiek problemów bardzo pomocne są logi znajdujące się w katalogu hadoopa.


Uruchamiamy przykład:
Kopiujemy katalog input do HDFS-a:
bin/hadoop fs -put input input
sprawdzamy czy udało się skopiować:
bin/hadoop fs -ls
uruchamiamy ten sam przykład co poprzednio:
bin/hadoop jar hadoop-*-examples.jar grep input output '\w+'

sprawdzamy wyniki:
bin/hadoop fs -cat output/*
Aby zatrzymać Hadoopa wywołujemy:
bin/stop-all.sh

Brak komentarzy: