Map Reduce Wprowadzenie do Apache Hadoop 8 maja 2014 Opis pliku z zadaniami Wszystkie zadania na zajęciach będą przekazywane w postaci plików PDF sformatowanych jak ten. Będą się na nie składały różne roadzje zadań, ale za każdym razem będą odpowiednio oznaczone: Zadania do wykonania na zajęciach oznaczone są symbolem nie są one punktowane, ale należy je wykonać w czasie zajęć. Punktowane zadania do wykonania na zajęciach oznaczone są symbolem należy je wykonać na zajęciach i zaprezentować prowadzącemu. Zadania do wykonania w domu oznaczone są symbolem - są one punktowane, należy je dostarczyć w sposób podany przez prowadzącego i w wyznaczonym terminie (zwykle do dwóch dni przed kolejnymi zajęciami). Po zakończeniu zajęć proszę o udzielenie odpowiedzi na kilka pytań zebranych w ankietę dostępną pod adresem http://goo.gl/x75obw 1
Wstęp Na zajęciach będziemy wykorzystywać implementację paradygmatu Map Reduce Apache Hadoop w stabilnej wersji 1.2.1. Jak zainstalować Hadoop w domu? 1. Zaleca się instalację w środowisku unixowym (np. Linux Ubuntu, Mac OS X). Użytkownikom Windows proponuje się instalację środowiska Hadoop na wirtualnej maszynie z Linuxem. 2. Należy pamiętać o zainstalowanej Javie! 3. Paczkę instalacyjną pobieramy np. stąd: http://ftp.piotrkosoft.net/pub/mirrors/ftp.apache.org/hadoop/common/hadoop- 1.2.1/. 4. Przykładowo dla Ubuntu pobieramy paczkę.deb i instalujemy za pomocą np. Ubuntu Software Center. Można pobrać również wersję portable w archiwum.tar, której nie musimy instalować. 5. Po instalacji należy pamiętać o wpisaniu odpowiedniej ścieżki do Javy w pliku konfiguracyjnym hadoop-env.sh w linijce rozpoczynającej się od export JAVA HOME=... Przy instalacji w Ubuntu paczki.deb plik znajduje się w /etc/hadoop/hadoop-env.sh, natomiast przy pobraniu archiwum w katalogu conf. 6. Gotowe! Aby uruchomić zainstalowany Hadoop wpisujemy po prostu hadoop w wierszu poleceń. Binarka Hadoopa portable znajduje się w katalogu bin. Można również pobrać wirtualną maszynę (VMware lub VirtualBox) z portalu Cloudera z preinstalowanym i skonfigurowanym Hadoopem: http://www.cloudera.com/content/support/en/downloads/download-components/downloadproducts.html?productid=f6mo278rvo 2
1 Hadoop Distributed File System Hadoop wykorzystuje rozproszony system plików HDFS (Hadoop Distributed File System). Programy uruchamiane przy pomocy frameworka Hadoop muszą odwoływać się do tego systemu plików, a nie do lokalnego systemu plików. Poruszanie się po systemie plików HDFS jest analogiczne do lokalnego systemu plików w środowisku unixowym, z tą różnicą, że wykonujemy je przez polecenie hadoop dfs z odpowiednim parametrem poprzedzonym myślnikiem -. Przykładowe polecenie kopiowania plików znajdujących się w HDFS: hadoop dfs -cp /tmp/folder1/file.txt /tmp/folder2/file.txt gdzie -cp to parametr odpowiadający poleceniu kopiowania. Żeby poćwiczyć poruszanie się w HDFS wykonaj następujące zadania (dla ułatwienia w nawiasie podano nazwę polecenia): 1. Stwórz katalog /tmp/infxxxxxx, gdzie XXXXXX to Twój numer indeksu (polecenie mkdir). 2. Stwórz katalogi /tmp/infxxxxxx/a, /tmp/infxxxxxx/b, /tmp/infxxxxxx/c (polecenia mkdir). 3. Umieść w katalogu /tmp/infxxxxxx pusty plik inf.txt (polecenie put). 4. Wyświetl zawartość katalogu /tmp/infxxxxxx (polecenie ls). 5. Wyświetl zawartość katalogu /tmp/infxxxxxx i wszystkich jego podkatalogów (polecenie lsr). 6. Usuń plik inf.txt (polecenie rm). 7. Utwórz plik tekstowy o dowolnej zawartości i wgraj go do katalogu /tmp/infxxxxxx/a, a następnie skopiuj go również do podkatalogów B i C (polecenie cp). 8. Wyświetl zawartość dodanego przed chwilą pliku (polecenie cat). 9. Pobierz plik do Twojego katalogu domowego (polecenie get). 3
2 Przykładowe programy w Hadoop W katalogu głownym Hadoop znajdziesz plik hadoop-examples-1.2.1.jar. Wykonaj polecenie hadoop jar podając ten plik jako arguemnt. Co widzisz? Wykonaj program odpowiadający za wyliczenie liczby Pi. Zapoznaj się z pomocą do tego programu. Spróbuj wykorzystać inne z przykładowych programów. Może Ci się przydać plik all-bible.txt dostępny na stronie przedmiotu. 4
3 Hello World w Hadoop 2p. Ze strony przedmiotu pobierz przykładowy projekt wykorzystujący Hadoop. Zapoznaj się z klasą DWDriver oraz klasą WordCount. uzupełnij kod klasy WordCount tak, aby liczyła wystąpienia wyrazów w podanym tekście. Przetestuj swój kod na swoim pliku tekstowym (dowolne zdanie) oraz na zbiorze all-bible.txt. 5
4 N-gram 2p. Zadanie realizujemy jeżeli wystarczy czasu. N-gramem nazywamy ciąg n kolejnych znaków pobranych z pewnej frazy. Na przyklad dla zdania Ala ma kota otrzymamy następujące 3-gramy wraz z ich licznościami: " ko" : 1 " ma" : 1 "Ala" : 1 "a k" : 1 "a m" : 1 "kot" : 1 "la " : 1 "ma " : 1 "ota" : 1 Twoim zadaniem jest napisać program wykorzystujący framework Hadoop, który dla dowolnego zbioru dokumentów tekstowych (korpusu) wygeneruje N-gramy dla każdej z linijek i policzy ich liczności w całym korpusie. Niech liczba n będzie dowolna, wybierana podczas uruchomienia programu. Możesz skorzystać z przygotowanego szablonu projektu (klasa NGramCount). Zadanie niedokończone podczas zajęć można dokończyć w domu i najpóźniej do wtorku do północy należy przesłać implementację klasy NGram- Count prowadzącemu. Uwaga: jeżeli zadania nie zdążymy rozpocząć na zajęciach to ono nie obowiązuje! 6