Ưu và nhược điểm của cụm Pi?


33

Tôi đã thấy rất nhiều bài viết hỏi cách xây dựng một "siêu máy tính" hoặc cụm với Raspberry Pis, nhưng tôi đã tìm thấy rất ít với những ưu và nhược điểm của việc tạo ra một mạng lưới Pis. Tôi quan tâm đến việc xây dựng cụm nhỏ của riêng tôi, nhưng tôi có một vài câu hỏi.

Sau khi được nhóm, các RPI hoạt động như một máy tính ảo duy nhất hoặc bạn có quyền kiểm soát riêng lẻ đối với tất cả các RPI không? Có một nút có quyền kiểm soát của những người khác?

Có bất cứ điều gì mà RPI có thể làm điều đó bị giới hạn trong một cụm không? Chẳng hạn, tôi vẫn sẽ kiểm soát tất cả các cổng GPIO riêng lẻ chứ?

Làm thế nào nhanh hơn nó làm cho pi? Hãy nói rằng tôi tạo một cụm 2 nút, mỗi xung nhịp đến 1GHz, về cơ bản tôi sẽ có bộ xử lý "lõi kép 1GHz" chứ? Có phải cụm cần phải nằm trong bội số nhị phân? (ví dụ: 1,2,4,8,16,32,64)

Điều này có làm phức tạp việc lưu trữ web của tôi chạy qua NGINX cho pi không? Sức mạnh xử lý của các nút nhất định có thể được giao nhiệm vụ cụ thể mà họ xử lý không? Chẳng hạn như nút 1 sẽ xử lý các yêu cầu dịch vụ web, Node 2 xử lý lưu trữ đám mây, v.v.

Câu trả lời:


49

Một số câu hỏi thú vị. Tôi nghĩ rằng bạn có thể hơi hiểu nhầm về cách "siêu máy tính" được xây dựng với Raspberry Pis hoạt động. Chúng không hoạt động như một hệ thống chia sẻ tải tự động. Chúng được thiết kế cho một cái gì đó gọi là lập trình song song , trong đó một tác vụ phức tạp được chia thành các phần có thể được thực hiện đồng thời. Pi chính trong cụm (nút đầu) chịu trách nhiệm tổ chức nhiệm vụ tổng thể và mỗi Pi trong cụm (các nút máy khách) thực hiện công việc được phân bổ của nó và báo cáo kết quả trở lại nút đầu. Các thư viện như OpenMPI là chìa khóa cho việc này.

Ngoài ra, các cụm Raspberry Pi đã được xây dựng chưa được xây dựng như các thiết bị tính toán hiệu quả. Họ đã được xây dựng như là nền tảng phát triển . Nó rẻ hơn đáng kể để mua 32 Raspberry Pis so với 32 máy tính để bàn. Bạn có thể phát triển và thử nghiệm phần mềm lập trình song song của mình rẻ hơn nhiều theo cách đó. Cách thay thế duy nhất nếu bạn không có Pis hoặc PC là yêu cầu thời gian CPU trên một siêu máy tính thực tế. Tùy thuộc vào kích thước của máy tính được đề cập, làm như vậy có thể tốn tiền hoặc có thời gian chờ đợi lâu trước khi tài nguyên có sẵn. Do đó tại sao mọi người đã xây dựng các cụm cá nhân của riêng họ. Nó chỉ có ý nghĩa để chạy ứng dụng của bạn trên máy tính thực khi bạn biết nó hoạt động!

Vì vậy, hãy ghi nhớ điều này và chuyển sang các câu hỏi cụ thể của bạn.

Trong một cụm thích hợp, Pis không hoạt động như một máy tính ảo. Bạn có quyền kiểm soát lỏng lẻo đối với từng Pi dưới dạng một nhiệm vụ hoặc hệ thống phân bổ tài nguyên như Sun Grid Engine . Các tác vụ được phân bổ cho các nút khi cần và khi các tác vụ kết thúc, các tài nguyên của nút đó sẽ được giải phóng cho các tác vụ mới.

Trong một cụm, vì mỗi Pi đang chạy bản sao Linux của riêng mình, mỗi Pi sẽ giữ quyền kiểm soát cục bộ các cổng GPIO của nó. Tôi không chắc phần mềm sẽ thực sự sử dụng nó như thế nào trong môi trường điện toán song song, nhưng bạn thì có.

Một cụm không thực sự làm cho Pi nhanh hơn, vì chúng không phải là một máy tính. Những gì bạn đạt được chỉ đơn giản là khả năng làm nhiều hơn cùng một lúc. Bạn không bị giới hạn trong bội số của hai. Tuy nhiên, có một giới hạn trên thực tế thực tế cho các máy tính phân cụm tùy thuộc vào các tác vụ bạn chạy. Hãy tưởng tượng nếu bạn đang chạy một phép tính song song trên nhiều Pis cần 200 bước. Tuy nhiên, mỗi bước tiếp theo yêu cầu thông tin mà mọi Pi tính trên bước trước đó. Vì vậy, mỗi Pi cần nhận dữ liệu từ mỗi Pi khác mỗi lần lặp. Tùy thuộc vào lượng thời gian mỗi lần lặp để tính toán, cuối cùng bạn có thể dành nhiều thời gian hơn để gửi dữ liệu xung quanh hơn là tính toán. Đây là lý do tại sao hầu hết các siêu máy tính sử dụng InfiniBandmạng. Nó rất nhanh, vì vậy bạn có thể tính toán nhiều hơn. Giải pháp cho vấn đề này là sử dụng ít Pis hơn nhưng để chúng thực hiện nhiều công việc hơn mỗi lần lặp, nhưng điều đó có thể không thể tùy thuộc vào thuật toán của bạn. Do đó giới hạn trên thực tế. (Trên Pis, điều này đặc biệt tệ vì USB Ethernet khá chậm.)

Vì vậy, trên một ứng dụng thực tế, lưu trữ web phân tán! Bạn có thể tận dụng nhiều Pis ở đây, nó không phải là một cụm thông thường. Nói rằng bạn có 5 Pis. Chúng tôi sẽ gọi họ là GatewayPi, WebPi1, WebPi2, WebPi3 và DataPi. GatewayPi đối mặt với internet, chạy Nginix để xử lý các yêu cầu web, nhưng không thực hiện bất kỳ xử lý nào. Thay vào đó, những gì nó làm là Cân bằng tải. Nó sử dụng ủy quyền và chuyển ngẫu nhiên yêu cầu đến WebPi1, WebPi2 hoặc WebPi3. Chúng tôi vừa tăng gấp ba sức mạnh của cơ sở hạ tầng web của mình, vì giờ đây chúng tôi có thể xử lý nhiều yêu cầu hơn cùng một lúc. DataPi thì sao? DataPi đã đính kèm một ổ cứng lưu trữ tất cả dữ liệu web của chúng tôi và đang chạy một máy chủ NFS. WebPiX gắn kết mà NFS chia sẻ để nó có quyền truy cập vào dữ liệu để xử lý. Bằng cách này, chúng tôi chỉ phải chạy sao lưu ở một vị trí và có thể tiết kiệm dung lượng đĩa.

Những gì tôi vừa mô tả về cơ bản là mô hình mà các công ty lớn như Google và Facebook sử dụng, nhưng được thu nhỏ lại thành kích thước Raspberry Pi. Điều hấp dẫn duy nhất là vì chi phí của Pis, việc thực hiện điều này về cơ bản là tạo ra cùng một nền tảng phát triển (nhưng đối với webserving) vì một cụm Pis dành cho lập trình song song. Sử dụng nhiều Pis, vì khả năng tính toán tương đối thấp của chúng sẽ sớm mất hiệu suất để tiêu thụ năng lượng khi bạn hướng tới việc xử lý một lượng lớn dữ liệu. Nhưng chỉ để học? Chúng thật hoàn hảo.


Vì vậy, nếu tôi đang làm việc trong một dự án gia đình, để lưu trữ web giá rẻ của 2 trang web, kiểm soát quạt làm mát thông qua GPIO, SSH, FTP, lưu trữ đám mây, tự động hóa gia đình, thì có đáng để tạo một cụm nhỏ để phân phối các tác vụ chính xác không?
SuperAdmin

4
+1 Tôi tò mò với câu hỏi này và rời đi với một chút học vấn. Câu trả lời chính xác.
jrhorn424

@iOSNoob, nếu bạn là người duy nhất sử dụng nó và bạn chỉ từng làm bất kỳ một trong những điều đó tại một thời điểm, thì nó có thể không có giá trị một cụm ngay cả khi đó, bởi vì tài nguyên được phân bổ khi cần thiết. Nếu đơn giản là không đủ RAM hoặc bạn đã tải nhiều hơn một người thì có lẽ nó đáng giá. Tôi muốn đặt những thứ như quạt và tự động hóa gia đình lên Pis riêng biệt chỉ để bảo mật. Bạn thực sự muốn 0 cơ hội rằng ai đó sẽ loay hoay với những thứ trong nhà bạn ... Nếu bạn phải nhảy qua một Pi phụ để có thể đến những hệ thống đó tốt hơn. Đó là một lớp bảo mật bổ sung.
Fred

@ jrhorn424 Tôi rất vui vì bạn thích nó! Gần đây tôi đã tham dự một sự kiện điện toán hiệu năng cao (siêu) vì vậy công cụ này rất mới mẻ trong tâm trí tôi. Thời gian hoàn hảo để viết nó ra.
Fred

1
Để có một ví dụ cụ thể về kiến ​​trúc lưu trữ web gần như chính xác mà Fred đã mô tả: pidramble.com (liên kết với mã / hướng dẫn trên GitHub nơi bạn có thể xây dựng sở hữu của mình với bất kỳ hương vị nào của Pi).
ge Muffguy
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.