Plusy i minusy klastra Pi?

33

Widziałem wiele postów z pytaniem, jak zbudować „superkomputer” lub klaster z Raspberry Pis, ale bardzo mało znalazłem plusy i minusy tworzenia sieci Pis. Jestem zainteresowany budowaniem własnego małego klastra, ale mam kilka pytań.

Czy po zgrupowaniu RPI działają jak pojedynczy komputer wirtualny, czy masz indywidualną kontrolę nad wszystkimi RPI? Czy jeden węzeł ma kontrolę nad innymi?

Czy jest coś, co może zrobić RPI, co jest ograniczone w klastrze? Na przykład, czy nadal będę kontrolować wszystkie poszczególne porty GPIO?

O ile szybciej robi to pi? Powiedzmy, że tworzę klaster 2-węzłowy, taktowany zegarem do 1 GHz każdy, czy zasadniczo będę miał procesor „dwurdzeniowy 1 GHz”? Czy klaster musi być w wielokrotności binarnej? (np. 1,2,4,8,16,32,64)

Czy to skomplikuje mój hosting działający za pośrednictwem NGINX for pi? Czy mocy obliczeniowej niektórych węzłów można przypisać określone zadania, które obsługują? Na przykład węzeł 1 będzie obsługiwał żądania usług internetowych, węzeł 2 obsługuje przechowywanie w chmurze itp.

SuperAdmin
źródło

Odpowiedzi:

49

Kilka interesujących pytań. Myślę, że możesz być nieco nieporozumiony, jak działają „superkomputery” zbudowane z Raspberry Pis. Nie działają one jako automatyczny system podziału obciążenia. Są przeznaczone do czegoś, co nazywa się programowaniem równoległym , w którym złożone zadanie dzieli się na części, które można wykonywać jednocześnie. Główne Pi w klastrze (główny węzeł) odpowiada za organizację ogólnego zadania, a każde Pi w klastrze (węzły klienta) wykonuje przydzieloną pracę i zgłasza wyniki z powrotem do głównego węzła. Kluczowe są do tego biblioteki takie jak OpenMPI .

Ponadto klastry Raspberry Pi, które zostały zbudowane, nie zostały zbudowane jako wydajne urządzenia komputerowe. Zostały one zbudowane jako platformy programistyczne . Znacznie taniej jest kupić 32 Raspberry Pis niż 32 komputery stacjonarne. W ten sposób możesz opracować i przetestować oprogramowanie do programowania równoległego znacznie taniej. Jedyną alternatywą, jeśli nie masz komputera Pis lub PC, jest żądanie czasu procesora na rzeczywistym superkomputerze. W zależności od wielkości danego komputera może to kosztować pieniądze lub wydłużyć czas oczekiwania na dostępność zasobów. Dlatego ludzie zbudowali własne klastry. Uruchamianie aplikacji na prawdziwym komputerze ma sens tylko wtedy, gdy będziesz wiedział, że działa!

Mając to na uwadze i przechodząc do konkretnych pytań.

W odpowiednim klastrze Pis nie działają jak pojedynczy komputer wirtualny. Masz luźną kontrolę nad każdym Pi w postaci systemu alokacji zadań lub zasobów, takiego jak Sun Grid Engine . W razie potrzeby zadania są przydzielane do węzłów, a po zakończeniu zadań zasoby tego węzła są zwalniane na nowe zadania.

W klastrze, ponieważ każde Pi ma własną kopię systemu Linux, każde Pi zachowałoby lokalną kontrolę nad swoimi portami GPIO. Nie jestem pewien, w jaki sposób oprogramowanie rzeczywiście wykorzystałoby to w środowisku przetwarzania równoległego, ale proszę bardzo.

Klaster tak naprawdę nie przyspiesza Pi, ponieważ nie jest to pojedynczy komputer. To, co zyskujesz, to po prostu umiejętność robienia więcej naraz. Nie jesteś ograniczony do wielokrotności dwóch. Istnieje jednak praktyczna górna granica dla komputerów klastrowych w zależności od wykonywanych zadań. Wyobraź sobie, że przeprowadzasz równoległe obliczenia na wielu pisach, które wymagają 200 kroków. Jednak każdy następny krok wymaga informacji, które każde Pi obliczało na poprzednim etapie. Tak więc każde Pi musi otrzymywać dane z każdego innego Pi podczas każdej iteracji. W zależności od czasu potrzebnego na obliczenie każdej iteracji możesz poświęcić więcej czasu na wysyłanie danych niż na obliczanie. Dlatego większość superkomputerów korzysta z InfiniBandsieć. Jest bardzo szybki, więc możesz wykonać więcej obliczeń. Rozwiązaniem tego problemu jest użycie mniejszej liczby Pis, ale wymagają one większej pracy przy każdej iteracji, ale może to nie być możliwe w zależności od algorytmu. Stąd praktyczna górna granica. (W przypadku Pis byłoby to szczególnie złe, ponieważ Ethernet USB jest dość wolny).

Przejdźmy do praktycznej aplikacji, rozproszonego hostingu! Możesz skorzystać z wielu Pis tutaj, to po prostu nie jest zwykły klaster. Powiedz, że masz 5 Pis. Nazwiemy je GatewayPi, WebPi1, WebPi2, WebPi3 i DataPi. GatewayPi jest skierowany do Internetu, uruchamiając Nginix do obsługi żądań internetowych, ale nie wykonuje żadnego przetwarzania. Zamiast tego równoważenie obciążenia. Wykorzystuje proxy i losowo przekazuje przychodzące żądanie do WebPi1, WebPi2 lub WebPi3. Właśnie potroiliśmy moc naszej infrastruktury internetowej, ponieważ możemy teraz obsłużyć więcej żądań jednocześnie. Co z DataPi? DataPi dołączyło dysk twardy, na którym przechowywane są wszystkie nasze dane internetowe i działa serwer NFS. WebPiX montuje udział NFS, dzięki czemu ma dostęp do danych do przetwarzania. W ten sposób musimy uruchamiać kopie zapasowe tylko w jednym miejscu i oszczędzać miejsce na dysku.

To, co właśnie opisałem, jest zasadniczo modelem używanym przez duże firmy, takie jak Google i Facebook, ale zmniejszonym do rozmiaru Raspberry Pi. Jedyny haczyk polega na tym, że ze względu na koszty Pisa, tworzenie tego polega zasadniczo na utworzeniu tej samej platformy programistycznej (ale do webservingu), jak klaster Pisa do programowania równoległego. Używanie wielu pisów ze względu na ich stosunkowo niską zdolność obliczeniową wkrótce traci wydajność w stosunku do zużycia energii, gdy zmierzasz w kierunku obsługi dużych ilości danych. Ale tylko do nauki? Są idealne.

Fred
źródło
Więc jeśli pracuję nad projektem domowym, na tani hosting 2 stron internetowych, kontrolowanie wentylatorów chłodzących przez GPIO, SSH, FTP, przechowywanie w chmurze, automatyzację domu, czy warto zrobić mały klaster, aby poprawnie rozdzielić zadania?
SuperAdmin,
4
+1 Przyszedłem do tego pytania ciekawy i zostawiłem odrobinę edukacji. Świetna odpowiedź.
jrhorn424
@iOSNoob, jeśli jesteś jedyną osobą, która go używa i robisz tylko jedną z tych rzeczy naraz, może to nie być warte klastra nawet wtedy, ponieważ zasoby są przydzielane w razie potrzeby. Jeśli po prostu nie ma wystarczającej ilości pamięci RAM lub masz więcej obciążenia niż jedna osoba, prawdopodobnie warto. Dla bezpieczeństwa umieściłem rzeczy takie jak wentylatory i automatyka domowa na osobnych pisach. Naprawdę chcesz 0 szans, że ktoś będzie się bałagać w twoim domu ... Jeśli musisz przeskoczyć dodatkowe Pi, aby dostać się do tych systemów, tym lepiej. To dodatkowa warstwa bezpieczeństwa.
Fred
@ jrhorn424 Cieszę się, że ci się podobało! Niedawno wziąłem udział w wydarzeniu związanym z superkomputerami, dlatego te rzeczy były świeże w mojej głowie. Idealny czas na napisanie tego.
Fred
1
Na konkretny przykład niemal dokładnej architektury hostingowej, którą Fred opisał: pidramble.com (linki do kodu / instrukcji na GitHub, gdzie możesz zbudować własny z dowolnym smakiem Pi).
geerlingguy