Bagaimana cara membangun kluster?


63

Ada beberapa artikel beredar online selama beberapa tahun terakhir tentang membangun sekelompok komputer di rumah - di sini misalnya.

Pi menganggap saya sebagai platform yang baik untuk membangun / menguji hal semacam ini karena biayanya yang rendah; haruskah panduan "umum" seperti transfer ini ke Pi cukup mudah, atau adakah sesuatu yang secara khusus harus saya ketahui ketika mencoba proyek semacam itu?



Saya telah menambahkan tag "bramble" karena ini adalah apa namanya. Tidak dapat memberikan jawaban yang tepat di luar "mengumpulkan banyak dan menjalankan hadoop atau sesuatu seperti itu" - memang, saya sudah menanyai pertanyaan untuk mencari jawaban sendiri!
Menang

Pengguna Pi lain juga tidak tahu tentang kata ajaib "bramble"; mencari di forum Foundation mungkin membantu tetapi sering kali lambat merespons sehingga saya tidak akan memilih Anda.
mlp

4
University of SouthHampton telah menghasilkan langkah-langkah untuk membuat klaster 64 pi (atau "superkomputer"): southampton.ac.uk/~sjc/raspberrypi/…
Alex L

Jawaban:


35

Saya sarankan melihat Dispy - modul python perhitungan terdistribusi.

Untuk menjalankan program pada sejumlah (node) Raspberry Pi dari PC (server - anggap sebagai IP 192.168.0.100):

  • Instal sistem operasi pada setiap Raspi

  • Lampirkan masing-masing Raspi ke jaringan Anda. Temukan IP (jika dinamis), atau atur IP statis.
    (Mari kita asumsikan bahwa Anda memiliki tiga node, dan IP mereka 192.168.0.50-52)

  • Atur Python (jika belum), instal dispy, lalu jalankan dispynode.py -i 192.168.0.100di setiap RasPi. Ini akan memberi tahu dispynode untuk menerima informasi pekerjaan dari server.

  • Di PC (server), instal dispy, lalu jalankan kode python berikut:

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

Anda juga dapat mengganti /some/programdengan fungsi python - mis compute.

Anda juga dapat menyertakan dependensi seperti objek python, modul, dan file (yang dispyakan ditransfer ke setiap node) dengan menambahkandepends=[ClassA, moduleB, 'file1']


8
Saya ingin mendengar jika seseorang melakukan ini - silakan tinggalkan komentar untuk memberi tahu saya jika itu berhasil!
Alex L

Dalam kasus saya (openelec + python 2.7) saya mendapatkan kesalahan ini "File" ./Lib/multiprocessing/__init__.py ", baris 84, dalam <module>, ImportError: /usr/lib/python2.7/lib-dynload/ _multiprocessing.so: simbol yang tidak terdefinisi: SemLockType ".
Guido

Tapi dispy3-3.6 berjalan dengan wheezy + python3! 2013-03-13 23: 01: 30.664 - dispynode - melayani 1 cpus pada 192.168.1.34-051348. Ketika Anda meluncurkan sebuah tugas (yaitu / bin / ls) node menerima tugas, memindahkan executable ke / tmp, tetapi ada yang salah "Menjalankan ['/ tmp / dispy / b7e04cb4a1e144e1 / ls'] gagal dengan (<class 'OSError '>, OSError (8,' Exec format error '), <objek traceback di 0x16f2580>) "
Guido

10

Anda harus mengetahui pekerjaan yang telah dilakukan - bahkan ada nama untuk sekelompok RasPi boxen. The Linux Wiki Tertanam mengatakan Bramble didefinisikan sebagai " sekelompok Beowulf perangkat Raspberry Pi". Raspberry Pi Homebrew memiliki sejumlah posting tentang Brambles , dan lihat juga forum Foundation .


14
Saya tidak berpikir mengatakan kepada seseorang kepada google jawabannya baik untuk situs ini. Sangat berguna untuk mengetahui namanya tetapi pertimbangkan untuk menambahkan beberapa konten dan tautan referensi ke jawaban Anda.
Joe

Konten dan tautan ditambahkan, @ Jo. Alangkah baiknya jika para downvoter menilai kembali pendapat mereka ...
mlp

1
Aku akan melakukannya jika aku benar-benar menurunkan kamu ...
Joe

Saya mengucapkannya dengan sangat hati-hati untuk menghindari sindiran yang Anda miliki, Joe. Mungkin mereka tidak menyadari bahwa suara di sini dapat dibatalkan dengan mengklik kembali tombol yang sama, tidak hanya dibalik dengan mengklik tombol yang berlawanan.
mlp


6

Ini sepenuhnya mungkin, tetapi masalah terbesar adalah pencapaian. Ini adalah ide yang saya pikir tidak hanya bisa diterapkan, tetapi juga berguna karena Anda bisa menggunakan gagasan komputasi paralel portabel. Sejauh spesifik, bahasa pengkodean seperti FORTRAN dan C ++ akan melakukan yang terbaik.

Lihatlah beowulf.org untuk informasi lebih lanjut tentang komputasi cluster


1

Ini adalah balasan untuk posting Guido Garcia di atas mengenai 'dispy' - Saya tidak tahu bagaimana membalas postingnya.

Ketika suatu program ('/ bin / ls') didistribusikan dengan 'dispy' untuk eksekusi paralel, maka program pada mesin klien ditransfer ke masing-masing node (ke '/ tmp'). Ini dimaksudkan agar program yang dikembangkan pengguna pada mesin klien ditransfer tanpa NFS atau direktori bersama. Ini bekerja dengan program biner hanya ketika node dan arsitektur klien kompatibel. Dalam kasus Anda, saya menduga bahwa arsitektur klien berbeda dari yang ada pada node jarak jauh dan sebuah node tidak dapat menjalankan binary '/ bin / ls' yang ditransfer dari klien. Jika Anda ingin mengeksekusi / bin / ls pada setiap node, mungkin lebih mudah untuk menulis fungsi atau program Python untuk mencetak direktori (misalnya, menggunakan os.listdir) dan mendistribusikannya daripada biner yang dapat dieksekusi.


Anda perlu 50 reputasi untuk meninggalkan komentar pada jawaban / pertanyaan orang lain. Selamat datang!
Impul

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.