Плюси і мінуси кластеру Пі?


33

Я бачив багато публікацій, які запитують, як створити "суперкомп'ютер" або кластер з Raspberry Pis, але я знайшов дуже мало з плюсів і мінусів, як насправді зробити мережу Pis. Мені цікаво створити власний невеликий кластер, але у мене є кілька питань.

Після кластеризації, чи є RPI, як єдиний віртуальний комп'ютер, або ви маєте індивідуальний контроль над усіма RPI? Чи має один вузол управління іншими?

Чи є щось, що може зробити RPI, що обмежено в кластері? Наприклад, чи все ще я матиму контроль над усіма окремими портами GPIO?

На скільки швидше це робить пі? Скажімо, я роблю кластер з 2 вузлами, над тактовою частотою до 1 ГГц кожен, я буду мати по суті "двоядерний 1 ГГц" процесор? Чи повинен кластер бути у двійкових кратних? (напр., 1,2,4,8,16,32,64)

Чи ускладнить це мій веб-хостинг, який працює через NGINX для pi? Чи можна обробці потужності певних вузлів присвоїти конкретні завдання, якими вони займаються? Наприклад, вузол 1 буде обробляти запити веб-служб, вузол 2 обробляє хмарне сховище тощо.

Відповіді:


49

Кілька цікавих питань. Я думаю, ви можете трохи не зрозуміти, як працюють "суперкомп'ютери", побудовані за допомогою Raspberry Pis. Вони не функціонують як система автоматичного розподілу навантаження. Вони розроблені для чогось, що називається паралельним програмуванням , де складне завдання розбивається на частини, які можна виконати одночасно. Головний Pi в кластері (головний вузол) відповідає за організацію загального завдання, і кожен Pi в кластері (клієнтські вузли) виконує свою виділену роботу і повідомляє результати назад до головного вузла. Ключові слова для цього є бібліотеки, такі як OpenMPI .

Крім того, створені кластери Raspberry Pi не були побудовані як ефективні обчислювальні пристрої. Вони були побудовані як платформи розвитку . Купувати 32 Raspberry Pis значно дешевше, ніж 32 настільних ПК. Ви можете розробити та протестувати програмне забезпечення для паралельного програмування набагато дешевше. Єдиною альтернативою, якщо у вас немає Pis або ПК, є запит часу на процесор на фактичному суперкомп'ютері. Залежно від розміру комп’ютера, про який йде мова, це може коштувати грошей або мати тривалий час очікування, перш ніж ресурси будуть доступні. Отже, чому люди створили свої власні особисті кластери. Запустити додаток на реальному комп'ютері має сенс лише тоді, коли ви знаєте, що це працює!

Отже, маючи це на увазі та переходячи до ваших конкретних питань.

У належному кластері Pis не виступають як єдиний віртуальний комп'ютер. Ви маєте слабкий контроль над кожним Pi у вигляді завдання або системи розподілу ресурсів, як-от Sun Grid Engine . Завдання розподіляються на вузли за потребою, а після завершення завдань ресурси цього вузла звільняються для нових завдань.

У кластері, оскільки кожен Pi працює з власною копією Linux, кожен Pi зберігає локальний контроль над своїми портами GPIO. Я не впевнений, як програмне забезпечення насправді використовує це в паралельному обчислювальному середовищі, але ви є.

Кластер насправді не робить Pi швидше, тому що це не один комп'ютер. Що ви отримуєте - це просто можливість зробити більше за один раз. Ви не обмежуєтесь кратними двома. Однак існує реальна практична верхня межа для кластеризованих комп'ютерів залежно від завдань, які ви виконуєте. Уявіть, що ви проводите паралельний обчислення для багатьох Pis, для яких потрібно 200 кроків. Однак для кожного наступного кроку потрібна інформація, яку кожен Pi розраховував на своєму попередньому кроці. Отже, кожному Pi потрібно отримувати дані від кожної іншої Pi кожної ітерації. Залежно від часу, який кожна ітерація потребує на обчислення, ви можете витратити більше часу на надсилання даних, ніж на обчислення. Ось чому більшість суперкомп'ютерів використовують InfiniBandмережа. Це дуже швидко, тому ви можете зробити більше обчислень. Рішення цього полягає в тому, щоб використовувати меншу кількість Pis, але змусити їх робити більшу роботу з кожною ітерацією, але це може бути неможливим залежно від алгоритму. Звідси практична верхня межа. (Для Pis це було б особливо погано, оскільки USB Ethernet досить повільний.)

Отже, до практичного застосування, розповсюдженого веб-хостингу! Ви можете скористатися кількома Pis тут, це просто не звичайний кластер. Скажіть, у вас є 5 піс. Ми будемо називати їх GatewayPi, WebPi1, WebPi2, WebPi3 та DataPi. GatewayPi стикається з Інтернетом, запускаючи Nginix для обробки веб-запитів, але не робить ніякої обробки. Натомість це балансування навантаження. Він використовує проксі і випадковим чином пересилає вхідний запит на WebPi1, WebPi2 або WebPi3. Ми лише втричі підвищили потужність нашої веб-інфраструктури, тому що тепер ми можемо обробляти більше запитів одночасно. Що з DataPi? DataPi підключив жорсткий диск, який зберігає всі наші веб-дані та працює на сервері NFS. WebPiX змонтує спільний доступ до NFS, щоб він отримав доступ до даних для обробки. Таким чином, нам потрібно запускати резервні копії лише в одному місці та економити на диску.

Що я тільки що описав - це по суті модель, якою користуються великі компанії, такі як Google і Facebook, але зменшується до розміру Raspberry Pi. Єдина уловка - через витрати на Піс - це, по суті, створення тієї самої платформи розробки (але для веб-сервісу), що і кластер Pis для паралельного програмування. Використовуючи декілька Pis, через їх відносно низьку обчислювальну здатність незабаром втрачається продуктивність до енергоспоживання, коли ви рухаєтесь до обробки великої кількості даних. Але тільки для навчання? Вони ідеальні.


Тож якщо я працюю над домашнім проектом, для дешевого веб-хостингу двох веб-сайтів, управління вентиляторами охолодження за допомогою GPIO, SSH, FTP, хмарного зберігання, домашньої автоматизації, варто було б зробити невеликий кластер, щоб правильно розподілити завдання?
SuperAdmin

4
+1 Я прийшов до цього питання цікавим і залишив крихітну освіту. Чудова відповідь.
jrhorn424

@iOSNoob, якщо ви єдиний користувач, який ним користується, і ви займаєтесь лише будь-якою з цих речей за один раз, можливо, це не варто навіть кластеру, тому що ресурси розподіляються за необхідності. Якщо просто не вистачає оперативної пам’яті або у вас більше навантаження, ніж у однієї людини, то, мабуть, того варто. Я б поклав такі речі, як вентилятори та домашню автоматику на окремий Піс просто для безпеки. Ви дійсно хочете 0 шансів, що хтось буде возитися з речами у вашому домі ... Якщо вам доведеться перестрибнути додатковий Пі, щоб все краще дістатися до цих систем. Це додатковий рівень безпеки.
Фред

@ jrhorn424 Я радий, що тобі сподобалось! Нещодавно я відвідав високу (супер) обчислювальну подію, тому ця штука була свіжою у моїй свідомості. Ідеальний термін, щоб виписати це.
Фред

1
Конкретний приклад майже точної архітектури веб-хостингу, описаний Фредом: pidramble.com (посилання на код / ​​інструкції на GitHub, де ви можете побудувати свій власний будь-який аромат Pi).
geerlingguy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.