Punkt wyjścia do nauki implementacji MapReduce / Hadoop w Pythonie?

Ostatnio zacząłem zajmować się analizą danych i nauczyłem się sporo w ciągu ostatniego roku (w tej chwili prawie wyłącznie przy użyciu Pythona). Czuję, że następnym krokiem jest rozpoczęcie treningu w MapReduce / Hadoop. Nie mam jednak formalnego wykształcenia informatycznego i często nie do końca rozumiem żargon, który jest używany, gdy ludzie piszą o Hadoop, stąd moje pytanie tutaj.

Liczę na przegląd na najwyższym poziomie Hadoop (chyba, że jest coś jeszcze I powinien brać?) i być może rekomendacja dla jakiegoś poradnika/książki tekstowej.

Jeśli, na przykład, chcę paralelizować sieć neuronową, którą napisałem w Pythonie, od czego miałbym zacząć? Czy istnieje stosunkowo standardowa metoda implementacji Hadoop za pomocą algorytmu, czy też każde rozwiązanie jest specyficzne dla konkretnego problemu?

Strona wiki Apache opisuje Hadoop jako "framework do uruchamiania aplikacji na dużym klastrze zbudowanym z towarowego sprzętu". Ale co to znaczy ? Słyszałem określenie "Klaster Hadoop" i Wiem, że Hadoop jest oparty na Javie. Czy to oznacza, że dla powyższego przykładu musiałbym nauczyć się Javy, skonfigurować klaster Hadoop na, powiedzmy, kilku serwerach amazon, a następnie Jython-ify mój algorytm, zanim w końcu zacznie działać na klastrze za pomocą Hadoop?

Wielkie dzięki za pomoc!

Author: iRoygbiv, 2012-08-29

5 answers

Po pierwsze, aby używać Hadoop z Pythonem (za każdym razem, gdy uruchamiasz go na własnym klastrze lub Amazon EMR lub czymkolwiek innym), potrzebujesz opcji o nazwie "Hadoop Streaming".

Przeczytaj oryginalny Rozdział (zaktualizowano link ) podręcznika Hadoop, aby dowiedzieć się, jak to działa.

Istnieje również WIELKA biblioteka "MrJob", która upraszcza uruchamianie zadań Pythona na Hadoop.

Możesz skonfigurować własny klaster lub spróbować grać z Amazon Elastic Map Reduce. The later może cię coś kosztować, ale czasami łatwiej uruchomić na początku. Istnieje świetny samouczek Jak uruchomić Pythona z Hadoop Streaming na Amazon EMR. Od razu pokazuje proste, ale praktyczne zastosowanie.

Aby nauczyć się samego Hadoop polecam przeczytać jedną z książek tam. Mówią, że "Hadoop w akcji" jest lepszy w opisywaniu rzeczy dla tych, którzy interesują się strumieniowaniem Pythona/Hadoop.

Należy również pamiętać, że do testowania / uczenia się rzeczy można można uruchomić Hadoop na komputerze lokalnym bez rzeczywistego klastra.

UPDATE:

Jeśli chodzi o zrozumienie Map Reduce (czyli jak identyfikować i wyrażać różnego rodzaju problemy w języku Map Reduce), przeczytaj świetny artykuł "MapReduce Patterns, Algorithms, and Use Cases " z przykładami w Pythonie.

 15
Author: izhak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-02 13:52:32

Polecam zacząć od pobrania Cloudera VM dla Hadoop , który jest obecnie standardem w wielu branżach i upraszcza proces konfiguracji Hadoop. Następnie wykonaj ten samouczek dla przykładu liczby słów, który jest standardowym odpowiednikiem hello world dla learning Map / Reduce

Wcześniej, prostym sposobem na zrozumienie map/reduce jest wypróbowanie wbudowanych funkcji Map/reduce w Pythonie:

x = [1, 2, 3, 4]
y = map(lambda z: z*z, x]
print y
[1, 4, 9, 16]
q = reduce(lambda m,n : m+n, y)
print q
30

Tutaj maper przekształca dane za pomocą kwadratura każdego elementu i reduktor sumuje kwadraty. Hadoop używa tego do skalowania obliczeń na dużą skalę, ale musisz opracować własne funkcje mapowania i zmniejszania.

 4
Author: Pratik Mandrekar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-29 13:57:46
 3
Author: tomaskazemekas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-13 11:47:59

Dlaczego nie zacząć od oryginalnej pracy google? Od tego właśnie zaczynały się wszystkie inne. Dla równoległości istnieje wiele różnych opcji do wyboru tutaj

 0
Author: pyCthon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-29 13:50:02

Http://blog.doughellmann.com/2009/04/implementing-mapreduce-with.html

Rozwiązanie Douga nie jest dobre dla produkcji w skali Google, ponieważ jest to tylko cienka okładka na puli wieloprocesorowej Pythona (używa tylko jednej maszyny, choć może używać wielu rdzeni na tej maszynie). Ale to wystarczy, aby zacząć, i łatwo zobaczyć, co to robi.

I want to parallelize a neural network

Nie jest łatwo. Komunikacja między węzłami byłaby bardziej kłopoty, niż są warte. Można jednak uruchomić wiele instancji sieci w celu zwiększenia przepustowości.

Problemy z ML są często bardzo łatwe do zrównoleglenia - uruchamiasz inną sieć neuronową na każdym węźle. Gradient decent może być nieco skomplikowany, ponieważ gradient decent jest bardzo liniowy, ale możesz użyć innej metody optymalizacji(wypróbuj kilka różnych rozmiarów kroków i wybierz, który jest najlepszy).

 0
Author: wisty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-29 14:02:26