Bir kümeyi nasıl kurarım?


63

- Evde bilgisayarların bir küme oluşturma konusunda son yıllarda çevrimiçi etrafında yüzen birkaç yazılar gördük burada örneğin.

Pi, düşük maliyetlerinden dolayı bu tür şeyleri inşa etmek / test etmek için iyi bir platform olarak beni vurur; “jenerik” bu şekilde Pi'ye kolaylıkla aktarılabilir mi, yoksa böyle bir projeye çalışırken bilmem gereken özel bir şey var mı?



Bunlara "bramble" etiketini ekledim. "Birlikte bir demet koymak ve hadoop veya bunun gibi bir şey koşmak" ötesinde doğru bir cevap veremiyorum - gerçekten, cevapları kendim izlemek için soruyu onayladım!
winwaed

Diğer Pi kullanıcıları da "bramble" kelimesini bilmezler; Vakfın forumunda arama yapmak size yardımcı olmuş olabilir, ancak yanıt vermek genellikle yavaştır, bu yüzden size oy vermem.
mlp

4
SouthHampton Üniversitesi 64 pi'lik bir küme (veya "süper bilgisayar") yapmak için adımlar attı: southampton.ac.uk/~sjc/raspberrypi/…
Alex L

Yanıtlar:


35

Dispy'ye bakmayı öneririm - dağıtılmış hesaplama python modülü.

Bir bilgisayardan bir dizi Ahududu Pi'nin (düğümleri) bir programını çalıştırmak için (sunucu - IP'nin olduğunu varsayalım 192.168.0.100):

  • Her RasPi'ye bir işletim sistemi kurun

  • Her RasPi'yi ağınıza bağlayın. IP'yi bulun (dinamikse) veya statik IP'ler ayarlayın.
    (Üç düğümünüz olduğunu ve onların IP'lerinin olduğunu varsayalım 192.168.0.50-52)

  • Python'u (zaten değilse) kurun dispy, kurun , sonra dispynode.py -i 192.168.0.100her RasPi'de çalıştırın . Bu, dispynode'a sunucudan iş bilgisi almasını söyler.

  • PC'de (sunucuda) kurun dispy, sonra aşağıdaki python kodunu çalıştırın:

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

Ayrıca /some/programbir python işleviyle de değiştirebilirsiniz - örneğin compute.

Ayrıca, python nesneleri, modüller ve dosyalar ( dispyher düğüme aktarılacak olan) gibi bağımlılıklar ekleyebilirsiniz.depends=[ClassA, moduleB, 'file1']


8
Birisi bunu yaptıysa duymak isterim - lütfen çalışıp çalışmadığını bana bildiren bir yorum bırakın!
Alex L

Benim durumumda (openelec + python 2.7) Bu hatayı "Dosya" ./Lib/multiprocessing/__init__.py ", satır 84, <module>, ImportError: /usr/lib/python2.7/lib-dynload/ _multiprocessing.so: tanımsız simge: SemLockType ".
Guido

Ancak dispy3-3.6 wheezy + python3 ile çalışır! 2013-03-13 23: 01: 30,664 - dispynode - 192.168.1.34:51348'de 1 cus'a hizmet veriyor. Bir görevi başlattığınızda (yani / bin / ls), düğüm görevi alır, yürütülebilir dosyayı / tmp konumuna taşır, ancak bir şeyler ters gider "[[/ / tmp / dispy / b7e04cb4a1e144e1 / ls '] yürütülmesi başarısız oldu (<sınıf' OSError ile) '>, OSError (8,' Exec format error '), <0x16f2580'deki izleme nesnesi>) "
Guido

10

Yapılmış olan işin farkında olmalısınız - bir RasPi boxen kümesi için bir isim bile var. Gömülü Linux Wiki bir diyor Bramble "olarak tanımlanmaktadır Beowulf küme Ahududu Pi cihazların". Ahududu Pi Homebrew bir numarası vardır mesajların hakkında Brambles'den ve bakın da Vakfı 'nın kendi forumu.


14
Birine Google’dan cevap söylemenin bu site için iyi olduğunu sanmıyorum. Adı bilmek faydalıdır, ancak cevabınıza bazı içerik ve referans linkleri eklemeyi düşünebilirsiniz.
Joe,

İçerik ve bağlantılar eklendi, @Joe. Karşı taraf seçmenlerin şimdi görüşlerini yeniden değerlendirmeleri güzel olurdu ...
mlp

1
Gerçekten seni reddetmiş olsaydım ...
Joe

Sahip olduğunuzu ima etmekten kaçınmak için çok dikkatli bir şekilde ifade ettim, Joe. Belki de buradaki oyların aynı butona tekrar basılarak geri alınabileceğinin farkında değiller, sadece karşı butona tıklanarak değiştirilemez.
mlp


6

Tamamen mümkün, ancak en büyük sorun ulaşılabilirlik. Sadece uygulanabilir düşünmekle kalmayıp aynı zamanda taşınabilir paralel hesaplama fikriyle kullanabileceğiniz kadar faydalı bir fikir. Özelliklere göre, FORTRAN ve C ++ gibi kodlama dilleri en iyisini yapacaktır.

Küme hesaplama hakkında daha fazla bilgi için beowulf.org sitesine bakın.


1

Bu Guido Garcia'nın 'dispy' ile ilgili yukarıdaki gönderisine verilen cevaptır - Gönderisine nasıl cevap vereceğimi bilemiyorum.

Paralel yürütme için bir program ('/ bin / ls') 'dispy' ile dağıtıldığında, istemci makinedeki bu program düğümlerin her birine ('/ tmp' ye) aktarılır. Bu, kullanıcının makinede geliştirdiği programı NFS veya bir miktar paylaşılan zorunluluk olmadan transfer etmesidir. Bu, yalnızca düğümler ve istemci mimarileri uyumlu olduğunda ikili programlarla çalışır. Sizin durumunuzda, istemci mimarisinin uzak düğümlerinkinden farklı olduğunu ve bir düğümün istemciden aktarılan '/ bin / ls' ikilisini çalıştıramayacağını tahmin ediyorum. Her düğümde / bin / ls yürütmek istiyorsanız, dizini yazdırmak için bir Python işlevi veya programı yazmak (örneğin, os.listdir kullanarak) kullanmak ve bunu ikili çalıştırılabilir yerine dağıtmak daha kolay olabilir.


Diğer insanların cevapları / soruları hakkında yorum yapmak için 50 itibara ihtiyacınız var. Yine de hoşgeldin!
Impulss

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.