Як створити кластер?


63

За останні кілька років в Інтернеті плавало кілька статей про побудову кластера комп'ютерів вдома - ось, наприклад.

Pi вважає мене гарною платформою для побудови / тестування подібних речей через їх низьку вартість; чи повинні "загальні" посібники на кшталт цього перенесення на Pi досить легко, чи є щось конкретно, про що я маю знати, намагаючись такий проект?


3
Який стосується форум Тема: raspberrypi.org/phpBB3/viewtopic.php?p=18356#p18356
finnw

Я додав тег "bramble", оскільки саме так вони названі. Не можу дати належної відповіді, крім того, щоб "зібрати купу і запустити hadoop або щось подібне" - дійсно, я полюбив питання, що слід шукати відповіді!
winwaed

Інші користувачі Pi також не знають про чарівне слово "bramble"; пошук форуму Фонду, можливо, допомогло, але часто реагувати повільно, тому я не буду вас голосувати.
mlp

4
Університет СаутГемптона здійснив кроки, щоб створити кластер 64 пі (або "суперкомп'ютер"): southampton.ac.uk/~sjc/raspberrypi/…
Alex L

Відповіді:


35

Пропоную поглянути на Dispy - розподілений обчислювальний модуль пітона.

Для запуску програми на декількох (вузлах) Raspberry Pi з ПК (сервер - припустимо, IP є 192.168.0.100):

  • Встановіть операційну систему на кожен RasPi

  • Приєднайте кожен RasPi до своєї мережі. Знайдіть IP (якщо динамічний) або встановіть статичні IP-адреси.
    (Припустимо, у вас три вузли, і їхні IP-адреси є 192.168.0.50-52)

  • Налаштуйте Python (якщо його ще немає), встановіть dispyта запустіть dispynode.py -i 192.168.0.100на кожному RasPi. Це дозволить dispynode отримувати інформацію про завдання від сервера.

  • На ПК (сервері) встановіть dispy, а потім запустіть наступний код python:

#!/usr/bin/env python
import dispy
cluster = dispy.JobCluster('/some/program', nodes=['192.168.0.50', '192.168.0.51', '192.168.0.52'])

Ви також можете замінити /some/programфункцію пітона - наприклад compute.

Ви також можете включити залежності, такі як об'єкти, модулі та файли python (які dispyбудуть передані кожному вузлу), додавшиdepends=[ClassA, moduleB, 'file1']


8
Я хотів би почути, чи хтось це зробив - будь ласка, залиште коментар, щоб повідомити мені, чи працює це!
Алекс Л

У моєму випадку (openelec + python 2.7) я отримую цю помилку "Файл" ./Lib/multiprocessing/__init__.py ", рядок 84, в <module>, ImportError: /usr/lib/python2.7/lib-dynload/ _multiprocessing.so: невизначений символ: SemLockType ".
Гвідо

Але dispy3-3.6 працює з wheezy + python3! 2013-03-13 23: 01: 30,664 - dispynode - обслуговує 1 cpus на 192.168.1.34:51348. Коли ви запускаєте завдання (тобто / bin / ls), вузол отримує завдання, переміщує виконуваний файл у / tmp, але щось піде не так "Виконання ['/ tmp / dispy / b7e04cb4a1e144e1 / ls'] не вдалося з (<class 'OSError '>, OSError (8,' Помилка формату Exec '), <об'єкт простеження за адресою 0x16f2580>) "
Guido

10

Ви повинні бути обізнані про роботу, яка вже була виконана - навіть є назва для кластера RasPi boxen. Embedded Linux Wiki говорить Bramble визначається як « кластер Beowulf пристроїв Raspberry Pi». Raspberry Pi Homebrew має ряд повідомлень про Брамблсе , і бачити також Фонд власного форуму «s.


14
Я не думаю, що говорити комусь із google відповідь не підходить для цього сайту. Корисно знати ім'я, але розглянути можливість додавання у відповідь деякого вмісту та довідкових посилань.
Джо

Вміст і посилання додані, @Joe. Було б непогано, якби нинішні переоцінили свою думку ...
mlp

1
Я б, якби насправді виступив з вами ...
Джо,

Я дуже обережно це сформулював, щоб уникнути інсинуації у вас, Джо. Можливо, вони не усвідомлюють, що голоси тут можна відмінити, повторно натиснувши ту саму кнопку, а не просто повернути, натиснувши на протилежну кнопку.
mlp

10

Деякі хлопці з Саутгемптонського університету зібрали кластер і детальний огляд їх роботи написали на веб- сайті http://www.southampton.ac.uk/~sjc/raspberrypi/ .



Насправді, з цього проекту можна багато чому навчитися за допомогою MPI. Я будую свої експерименти на основі роботи цих хлопців. Я рекомендую позначити цю відповідь правильною відповіддю на запитання.
benqus

6

Це цілком можливо, але найбільша проблема - це доступність. Це ідея, яку я не тільки вважаю працездатною, але й корисною, як ви могли б піти з ідеєю портативних паралельних обчислень. Що стосується специфіки, найкраще підійде мова кодування, як FORTRAN та C ++.

Подивіться на beowulf.org для отримання додаткових відомостей про кластерні обчислення


1

Це відповідь на публікацію Гідо Гарсія, що стосується "dispy" - я не можу зрозуміти, як відповісти на його повідомлення.

Коли програма ('/ bin / ls') поширюється з 'dispy' для паралельного виконання, то ця програма на клієнтській машині передається кожному з вузлів (до '/ tmp'). Це так, що розроблена користувачем програма на клієнтській машині передається, не маючи NFS або якоїсь спільної каталоги. Це працює з бінарними програмами лише тоді, коли вузли та архітектура клієнтів сумісні. У вашому випадку я здогадуюсь, що архітектура клієнта відрізняється від архітектури віддалених вузлів, і вузол не може виконати переданий від клієнта двійковий '/ bin / ls'. Якщо ви хочете виконати / bin / ls на кожному вузлі, можливо, простіше написати функцію або програму Python для друку каталогу (наприклад, використовуючи os.listdir) і розподілити його замість двійкового виконуваного файлу.


Вам потрібно 50 репутації, щоб залишити коментарі на відповіді / питання інших людей. Ласкаво просимо!
Імпульс

1

Також є http://pi.interworx.com, якщо ви хочете, щоб на ньому була повнофункціональна панель управління. На цій сторінці є інструкції щодо реплікації, але вам доведеться набратися терпіння, оскільки цей субдомен працює з кластеру Rasberry Pi. Ось фото на випадок, якщо воно зменшиться:

http://www.facebook.com/photo.php?fbid=596262440393836&set=a.244167858936631.60071.170159826337435&type=1

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.