Pro dan Kontra dari Cluster Pi?

33

Saya telah melihat banyak posting yang bertanya bagaimana membangun "superkomputer" atau cluster dengan Raspberry Pis, tetapi saya telah menemukan sangat sedikit dengan pro dan kontra untuk benar-benar membuat jaringan Pis. Saya tertarik untuk membangun cluster kecil saya sendiri, tetapi saya punya beberapa pertanyaan.

Setelah berkerumun, apakah RPI bertindak sebagai komputer virtual tunggal, atau apakah Anda memiliki kendali individu atas semua RPI? Apakah satu simpul memiliki kendali atas yang lain?

Apakah ada sesuatu yang dapat dilakukan RPI yang dibatasi dalam sebuah cluster? Misalnya, apakah saya masih memiliki kendali atas semua porta GPIO individu?

Seberapa cepat itu membuat pi? Katakanlah saya membuat cluster 2 node, masing-masing clock ke 1GHz, apakah saya pada dasarnya akan memiliki prosesor "dual core 1GHz"? Apakah cluster harus berada dalam kelipatan Biner? (mis. 1,2,4,8,16,32,64)

Apakah ini menyulitkan hosting web saya berjalan melalui NGINX untuk pi? Dapatkah kekuatan pemrosesan node tertentu diberi tugas khusus yang mereka tangani? Seperti simpul 1 akan menangani permintaan layanan web, Node 2 menangani penyimpanan cloud, dll.

SuperAdmin
sumber

Jawaban:

49

Beberapa pertanyaan menarik. Saya pikir Anda mungkin sedikit salah paham bagaimana "superkomputer" dibangun dengan Raspberry Pis bekerja. Mereka tidak berfungsi sebagai sistem pembagian beban otomatis. Mereka dirancang untuk sesuatu yang disebut pemrograman paralel , di mana tugas yang rumit dipecah menjadi beberapa bagian yang dapat dilakukan secara bersamaan. Pi utama dalam gugus (simpul kepala) bertugas mengatur keseluruhan tugas, dan setiap Pi dalam gugus (simpul klien) melakukan pekerjaan yang dialokasikan dan melaporkan hasil kembali ke simpul kepala. Perpustakaan seperti OpenMPI adalah kunci untuk ini.

Selain itu, cluster Raspberry Pi yang telah dibangun belum dibangun sebagai perangkat komputasi yang efisien. Mereka telah dibangun sebagai platform pengembangan . Jauh lebih murah untuk membeli 32 Raspberry Pis daripada 32 PC desktop. Anda dapat mengembangkan dan menguji perangkat lunak pemrograman paralel Anda jauh lebih murah dengan cara itu. Satu-satunya alternatif jika Anda tidak memiliki Pis atau PC adalah meminta waktu CPU pada komputer super yang sebenarnya. Bergantung pada ukuran komputer yang bersangkutan, hal itu dapat menghabiskan biaya atau menunggu lama sebelum sumber daya tersedia. Karenanya mengapa orang telah membangun kelompok pribadi mereka sendiri. Masuk akal untuk menjalankan aplikasi Anda di komputer nyata ketika Anda tahu itu berfungsi!

Jadi, ingatlah ini dan lanjutkan ke pertanyaan spesifik Anda.

Dalam cluster yang tepat Pis tidak bertindak sebagai komputer virtual tunggal. Anda memiliki kendali yang longgar atas setiap Pi dalam bentuk tugas atau sistem alokasi sumber daya seperti Sun Grid Engine . Tugas dialokasikan ke node yang diperlukan, dan ketika tugas selesai, sumber daya dari node tersebut dibebaskan untuk tugas baru.

Dalam sebuah cluster, karena setiap Pi menjalankan salinan Linuxnya sendiri, masing-masing Pi akan mempertahankan kontrol lokal atas port GPIO-nya. Saya tidak yakin bagaimana perangkat lunak akan benar-benar menggunakannya dalam lingkungan komputasi paralel, tetapi di sanalah Anda.

Cluster tidak benar-benar membuat Pi lebih cepat, karena mereka bukan komputer tunggal. Yang Anda dapatkan hanyalah kemampuan untuk melakukan lebih banyak sekaligus. Anda tidak terbatas pada kelipatan dua. Namun ada batas atas praktis nyata untuk komputer yang dikelompokkan tergantung pada tugas yang Anda jalankan. Bayangkan jika Anda menjalankan perhitungan paralel pada banyak Pis yang membutuhkan 200 langkah. Namun, setiap langkah selanjutnya membutuhkan informasi yang dihitung setiap Pi pada langkah sebelumnya. Jadi setiap Pi perlu menerima data dari setiap Pi lainnya setiap iterasi. Bergantung pada jumlah waktu yang dibutuhkan setiap iterasi untuk menghitung, Anda bisa menghabiskan lebih banyak waktu untuk mengirim data daripada menghitung. Inilah sebabnya mengapa kebanyakan komputer super menggunakan InfiniBandjaringan. Ini sangat cepat, sehingga Anda dapat melakukan lebih banyak perhitungan. Solusi untuk ini adalah dengan menggunakan Pis lebih sedikit tetapi minta mereka melakukan lebih banyak pekerjaan setiap iterasi, tapi itu tidak mungkin tergantung pada algoritma Anda. Karenanya batas atas praktis. (Pada Pis ini akan sangat buruk karena USB Ethernet sangat lambat.)

Jadi, ke aplikasi praktis, web-hosting terdistribusi! Anda dapat memanfaatkan beberapa Pis di sini, hanya saja bukan cluster biasa. Katakanlah Anda memiliki 5 Pis. Kami akan memanggil mereka GatewayPi, WebPi1, WebPi2, WebPi3, dan DataPi. GatewayPi menghadapi internet, menjalankan Nginix untuk menangani permintaan web, tetapi tidak melakukan pemrosesan apa pun. Alih-alih yang dilakukannya adalah Load balancing. Ini menggunakan proxy dan meneruskan permintaan masuk ke WebPi1, WebPi2, atau WebPi3 secara acak. Kami baru saja melipatgandakan kekuatan infrastruktur web kami, karena sekarang kami dapat menangani lebih banyak permintaan secara bersamaan. Bagaimana dengan DataPi? DataPi telah memasang hard drive yang menyimpan semua data web kami dan menjalankan server NFS. WebPiX memasang NFS yang dibagikan sehingga memiliki akses ke data untuk diproses. Dengan cara ini kita hanya perlu menjalankan backup di satu lokasi dan dapat menghemat ruang disk.

Apa yang baru saja saya jelaskan pada dasarnya adalah model yang digunakan perusahaan besar seperti Google dan Facebook, tetapi diperkecil menjadi ukuran Raspberry Pi. Satu-satunya menangkap adalah, karena biaya Pis, yang melakukan ini pada dasarnya menciptakan platform pengembangan yang sama (tetapi untuk webserving) sebagai sekelompok Pis adalah untuk pemrograman paralel. Menggunakan beberapa Pis, karena kemampuan komputasinya yang relatif rendah segera kehilangan kinerja untuk konsumsi energi saat Anda menuju penanganan data dalam jumlah besar. Tetapi untuk sekedar belajar? Mereka sempurna.

Fred
sumber
Jadi jika saya sedang mengerjakan proyek rumah, untuk web hosting murah dari 2 situs web, mengendalikan kipas pendingin melalui GPIO, SSH, FTP, penyimpanan cloud, otomasi rumah, Apakah layak membuat cluster kecil untuk mendistribusikan tugas dengan benar?
SuperAdmin
4
+1 Saya datang ke pertanyaan ini dengan rasa ingin tahu, dan pergi dengan sedikit pendidikan. Jawaban yang bagus
jrhorn424
@iOSNoob, jika Anda adalah satu-satunya orang yang menggunakannya dan Anda hanya pernah melakukan salah satu dari hal-hal itu pada satu waktu, itu mungkin tidak layak untuk sebuah cluster, karena sumber daya dialokasikan seperlunya. Jika tidak ada cukup RAM atau Anda memiliki lebih dari satu orang maka mungkin layak. Saya menempatkan hal-hal seperti kipas dan otomatisasi rumah pada Pis yang terpisah hanya untuk keamanan. Anda benar-benar ingin 0 kesempatan bahwa seseorang akan bermain-main dengan barang-barang di rumah Anda ... Jika Anda harus melewati Pi tambahan untuk mendapatkan ke sistem itu semua lebih baik. Itu lapisan keamanan ekstra.
Fred
@ jrhorn424 Saya senang Anda menyukainya! Saya baru-baru ini menghadiri acara komputasi (super) berkinerja tinggi sehingga hal ini segar dalam pikiran saya. Waktu yang tepat untuk menuliskannya.
Fred
1
Untuk contoh konkret dari hampir semua arsitektur web hosting yang persis dijelaskan oleh Fred: pidramble.com (tautan ke kode / instruksi di GitHub di mana Anda dapat membangun milik Anda sendiri dengan rasa Pi).
geerlingguy