Làm thế nào để tôi xây dựng một cụm?


63

Đã có một vài bài báo nổi trên mạng trong vài năm qua về việc xây dựng một cụm máy tính tại nhà - ví dụ ở đây .

Pi tạo cho tôi một nền tảng tốt để xây dựng / thử nghiệm loại điều này do chi phí thấp; các hướng dẫn "chung chung" như việc chuyển giao này sang Pi khá dễ dàng, hoặc có điều gì đặc biệt tôi nên biết khi thử một dự án như vậy không?


3
Chủ đề diễn đàn liên quan: raspberrypi.org/phpBB3/viewtopic.php?p=18356#p18356
finnw

Tôi đã thêm thẻ "bramble" vì đây là những gì chúng được đặt tên. Không thể đưa ra một câu trả lời thích hợp ngoài việc "tập hợp một nhóm và chạy hadoop hoặc một cái gì đó tương tự" - thực sự, tôi đã bỏ qua câu hỏi để xem câu trả lời cho chính mình!
winwaed

Những người dùng Pi khác cũng không biết về từ ma thuật "bramble"; tìm kiếm diễn đàn của Quỹ có thể có ích nhưng thường phản hồi chậm nên tôi sẽ không bỏ phiếu cho bạn.
mlp

4
Đại học SouthHampton đã tạo ra các bước để tạo ra một cụm 64 pi (hay "siêu máy tính"): southampton.ac.uk/~sjc/raspberrypi/ Lỗi
Alex L

Câu trả lời:


35

Tôi đề nghị nhìn vào Dispy - mô-đun python tính toán phân tán.

Để chạy một chương trình trên một số Raspberry Pi (nút) từ PC (máy chủ - giả sử IP là 192.168.0.100):

  • Cài đặt hệ điều hành trên mỗi RasPi

  • Đính kèm mỗi RasPi vào mạng của bạn. Tìm IP (nếu động) hoặc thiết lập IP tĩnh.
    (Giả sử rằng bạn có ba nút và IP của chúng là 192.168.0.50-52)

  • Thiết lập Python (nếu chưa có), cài đặt dispy, sau đó chạy dispynode.py -i 192.168.0.100trên mỗi RasPi. Điều này sẽ báo cho disynode để nhận thông tin công việc từ máy chủ.

  • Trên PC (máy chủ), cài đặt dispy, sau đó chạy mã python sau:

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

Bạn cũng có thể thay thế /some/programbằng một hàm python - ví dụ compute.

Bạn cũng có thể bao gồm các phụ thuộc như các đối tượng python, mô-đun và tệp ( dispysẽ chuyển đến từng nút) bằng cách thêmdepends=[ClassA, moduleB, 'file1']


8
Tôi rất muốn nghe nếu ai đó đã làm điều này - xin vui lòng để lại nhận xét cho tôi biết nếu nó hoạt động!
Alex L

Trong trường hợp của tôi (openelec + python 2.7) Tôi gặp lỗi này "Tệp" ./Lib/multiprocessing/__init__.py ", dòng 84, trong <module>, ImportError: /usr/lib/python2.7/lib-dynload/ _multiprocessing.so: ký hiệu không xác định: SemLockType ".
Guido

Nhưng dispy3-3.6 chạy với wheezy + python3! 2013/03/13 23: 01: 30.664 - phân tán - phục vụ 1 cpus ở 192.168.1.34 giáp1348. Khi bạn khởi chạy một tác vụ (ví dụ / bin / ls), nút nhận được tác vụ, di chuyển tệp thực thi sang / tmp, nhưng đã xảy ra lỗi "Thực thi ['/ tmp / dispy / b7e04cb4a1e144e1 / ls'] với (<class 'OSError '>, OSError (8,' Lỗi định dạng Exec '), <đối tượng truy nguyên tại 0x16f2580>) "
Guido

10

Bạn nên chú ý đến công việc đã được thực hiện - thậm chí còn có tên cho một cụm của võ sĩ RasPi. Các Linux Wiki Embedded nói một Bramble được định nghĩa là "một cụm Beowulf các thiết bị Raspberry Pi". Raspberry Pi Homebrew có một số bài viết về Brambles , và thấy cũng các Quỹ diễn đàn riêng 's.


14
Tôi không nghĩ việc nói với ai đó để google câu trả lời là tốt cho trang web này. Thật hữu ích khi biết tên nhưng xem xét thêm một số nội dung và liên kết tham chiếu vào câu trả lời của bạn.
Joe

Nội dung và các liên kết được thêm vào, @Joe. Sẽ thật tuyệt nếu bây giờ những người xuống cấp đánh giá lại ý kiến ​​của họ ...
mlp

1
Tôi sẽ làm gì nếu tôi thực sự đánh giá thấp bạn ...
Joe

Tôi nói rất cẩn thận để tránh ẩn ý rằng bạn có, Joe. Có lẽ họ không nhận ra rằng phiếu bầu ở đây có thể được hoàn tác bằng cách nhấp lại vào cùng một nút, không chỉ đảo ngược bằng cách nhấp vào nút đối diện.
mlp

10

Một số chàng trai tại Southampton Uni đã tập hợp một nhóm và viết một cái nhìn tổng quan chi tiết về công việc của họ tại http://www.southampton.ac.uk/~sjc/raspberrypi/ .



Trên thực tế, có rất nhiều điều để học hỏi từ dự án này bằng cách sử dụng MPI. Tôi đang thử nghiệm các thí nghiệm của mình dựa trên công việc của những người này. Tôi khuyên bạn nên đánh dấu câu trả lời này câu trả lời đúng cho câu hỏi.
benqus

6

Điều đó là hoàn toàn có thể, nhưng vấn đề lớn nhất là sự đạt được. Đó là một ý tưởng tôi không chỉ nghĩ là khả thi, mà còn hữu ích khi bạn có thể đi với ý tưởng về điện toán song song di động. Theo như chi tiết cụ thể, các ngôn ngữ mã hóa như FORTRAN và C ++ sẽ làm tốt nhất.

Nhìn vào beowulf.org để biết thêm về điện toán cụm


1

Đây là câu trả lời cho bài đăng của Guido Garcia ở trên liên quan đến 'dispy' - Tôi không thể tìm ra cách trả lời bài đăng của anh ấy.

Khi một chương trình ('/ bin / ls') được phân phối với 'dispy' để thực thi song song, thì chương trình đó trên máy khách sẽ được chuyển đến từng nút (đến '/ tmp'). Điều này là để người dùng phát triển chương trình trên máy khách được chuyển mà không có NFS hoặc một số diretory được chia sẻ. Điều này chỉ hoạt động với các chương trình nhị phân khi các nút và kiến ​​trúc máy khách tương thích. Trong trường hợp của bạn, tôi đoán rằng kiến ​​trúc máy khách khác với kiến ​​trúc của các nút từ xa và một nút không thể thực thi nhị phân '/ bin / ls' được truyền từ máy khách. Nếu bạn muốn thực thi / bin / ls trên mỗi nút, có thể dễ dàng hơn để viết một hàm hoặc chương trình Python để in thư mục (ví dụ: sử dụng os.listdir) và phân phối thay vì thực thi nhị phân.


Bạn cần 50 danh tiếng để để lại nhận xét về câu trả lời / câu hỏi của người khác. Chào mừng bạn!
Impulss

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.