2009-10-21 21 views
7

Czy można utworzyć klaster w Pythonie, pisząc serwer telnet, a następnie telnetując polecenia i wypuszczając dane w przód iw tył? Czy ktokolwiek ma lepszy pomysł na klaster obliczeń Pythona? PS. Najlepiej dla Pythona 3.x, jeśli ktoś wie jak.Klaster obliczeń w języku Python

+1

Do interaktywnego użytku lub jako łatwy punkt wyjścia wypróbuj ipython. –

Odpowiedz

16

Na wiki Pythona znajduje się bardzo obszerna lista Python cluster computing libraries and tools. Możesz być szczególnie zainteresowany Parallel Python.

Edytuj: Istnieje nowa biblioteka, która jest szczególnie dobra w zakresie tworzenia klastrów: execnet. Jest mały i prosty. Wygląda na to, że ma mniej błędów niż, powiedzmy, standardowy moduł multiprocessing.

4

Jakie rzeczy chcesz robić? Możesz sprawdzić numer hadoop. Backend, podnoszenie ciężkich zadań odbywa się w języku Java, ale ma interfejs Pythona, więc możesz pisać skrypty Pythona, tworzyć i wysyłać dane wejściowe, a także przetwarzać wyniki.

14

Możesz zobaczyć większość pakietów zewnętrznych dostępnych dla Pythona 3 wymienionych here; istotna dla obliczeń klastra jest mpi4py - większość innych narzędzi obliczeniowych, takich jak pyro, to wciąż tylko Python-2, ale MPI jest wiodącym standardem dla obliczeń rozproszonych w klastrze i dobrze się do niego zagląda (nie mam bezpośredniego doświadczenia przy użyciu mpi4py z Pythonem 3, , ale przez słyszenie uważam, że jest to dobre wdrożenie).

Główną alternatywą jest wbudowana w języku Python multiprocessing, która również bardzo dobrze się skaluje, jeśli nie interesuje Cię łączenie istniejących węzłów, które przestrzegają standardów MPI, ale może nie być kodowane w Pythonie.

Nie ma prawdziwej wartości dodanej przy toczeniu własnym (jak mówi Atwood, nie wymyślaj ponownie koła, chyba że twoim celem jest po prostu lepsze zrozumienie kół! -) - skorzystaj z jednego z solidnych, przetestowanych, szeroko rozpowszechnionych rozwiązań już przetestowany, debugowania i zoptymalizowany w Twoim imieniu! -)

+0

+1 za wzmiankę o "wieloprocesowości". –

-2

„Czy byłoby możliwe, aby klaster Pythona”

Tak.

Uwielbiam pytania tak/nie. Coś jeszcze chcesz wiedzieć?

(Zauważ, że Python 3 nie posiada jeszcze kilka bibliotek innych firm, więc może chcesz zostać z Pythona 2 na chwilę).

2

Jeśli trzeba pisać skrypty administracyjne, przyjrzeć Python biblioteki ClusterShell też lub jego równoległa skorupa clush. Przydaje się to również w przypadku zestawów węzłów (zestaw węzłów człowiek).

1

Myślę, że IPython.parallel jest drogą do zrobienia. Używam go intensywnie przez ostatnie półtora roku. Umożliwia interaktywną pracę z dowolną liczbą węzłów roboczych. Jeśli korzystasz z AWS, StarCluster to świetny sposób na szybkie i łatwe uruchomienie IPython. Działaj z tak wieloma węzłami EC2, na jakie możesz sobie pozwolić. (Może również automatycznie zainstalować Hadoop i wiele innych użytecznych narzędzi, jeśli zajdzie taka potrzeba.) Istnieje kilka sztuczek, aby go użyć. (Na przykład, nie chcesz wysyłać dużych ilości danych przez sam interfejs IPython.parallel. Lepiej rozprowadzić skrypt, który będzie pobierał porcje danych z każdego silnika indywidualnie.) Ale ogólnie rzecz biorąc, znalazłem to być niezwykle prostym sposobem na przetwarzanie rozproszone (WAY lepiej niż Hadoop!)