Hadoop

Wprowadzenie

http://hadoop.apache.org/core/
Hadoop = MapReduce + HDFS + ...

Rodzaje wezlow w Hadoop:

http://lab-426-1:50070/ - interfejs monitorowania HDFS
http://lab-426-1:50030/ - interfejs monitorowania zadan (MapReduce)

Lokalna instalacja Hadoop

http://sirius/~inf71395/hadoop/hadoop.tar.gz - dystrybucja Hadoop. Najwazniejsze pliki po rozpakowaniu:

Sprawdzenie instalacji

$ cd ${HADOOP_HOME}
$ bin/hadoop
# proba polaczenia z hdfs - listing glownego katalogu:
$ bin/hadoop fs -ls /
# proba polaczenia z jobtracker - listing aktywnych zadan:
$ bin/hadoop job -list

cw. 1. Zliczanie wystapien slow: implementacja map() i reduce()

WordCount.java - szkielet, pelna implementacja

Przydatna dokumentacja:

http://hadoop.apache.org/core/docs/r0.18.1/api/org/apache/hadoop/mapred/OutputCollector.html
http://hadoop.apache.org/core/docs/r0.18.1/api/org/apache/hadoop/io/Text.html
http://hadoop.apache.org/core/docs/r0.18.1/api/org/apache/hadoop/io/IntWritable.html
http://hadoop.apache.org/core/docs/r0.18.1/api/org/apache/hadoop/io/LongWritable.html
i np. http://java.sun.com/javase/6/docs/api/java/util/StringTokenizer.html

Kompilacja i przygotowanie jar z zadaniem:

$ mkdir classes
$ javac -cp hadoop-0.18.1-core.jar WordCount.java
$ jar -cvf wordcount.jar WordCount*.class

Uruchamianie zadania:

bin/hadoop jar wordcount.jar WordCount [input_HDFS_dir] [output_HDFS_dir]
# np.:
$ bin/hadoop jar wordcount.jar WordCount /user/putgrid/small_input output

Przykladowe wejscia (dostepne na HDFS):

Odczytywaniue/usuwanie wyjscia:

Przez interfejsy WWW do monitorowania (w tym statystyki), albo...
$ bin/hadoop fs -get output output
$ bin/hadoop fs -rmr output

cw 2. Wieksza wydajnosc: uzycie combine() i partition()

Combiner

http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/mapred/JobConf.html#setCombinerClass(java.lang.Class)

Partition

conf/hadoop-site.xml
...
<property>
<name>mapred.reduce.tasks</name>
<value>??</value>
</property>
...

Własna implementacja partition?
WordCount.java V2.0 - szkielet, pelna implementacja

cw 3. Sortowanie po ilosci wystapien: wielokrotne map-reduce

WordCount.java V3.0 - pelna implementacja

Przydatna dokumentacja: http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/mapred/lib/InverseMapper.html

cw 4. Obsluga ignorowanych znakow: zastosowanie DistributedCache

WordCount.java V4.0 - szkielet, pelna implementacja; przykladowy plik z wzorcami (na HDFS): /user/zawir/patterns.txt

Przydatna dokumentacja: http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/filecache/DistributedCache.html

cw 5. Eksperyment z fault tolerance

--- Inne zastosowania, feature'y?


(c) 2008 Marek Zawirski, marek.zawirski \\NA\\ gmail.com