파이 클러스터의 장단점?


33

Raspberry Pis로 "슈퍼 컴퓨터"또는 클러스터를 구축하는 방법을 묻는 많은 게시물을 보았지만 실제로 Pis 네트워크를 만드는 장단점은 거의 발견하지 못했습니다. 내 작은 클러스터를 만드는 데 관심이 있지만 몇 가지 질문이 있습니다.

클러스터 된 RPI가 단일 가상 컴퓨터 역할을합니까? 아니면 모든 RPI를 개별적으로 제어 할 수 있습니까? 한 노드가 다른 노드를 제어합니까?

클러스터에서 RPI로 수행 할 수있는 작업이 있습니까? 예를 들어, 여전히 모든 개별 GPIO 포트를 제어 할 수 있습니까?

파이를 얼마나 빨리 만들 수 있습니까? 각각 1GHz로 오버 클럭 된 2 노드 클러스터를 만들 때 기본적으로 "이중 코어 1GHz"프로세서가 있습니까? 클러스터가 이진 배수 여야합니까? (예 : 1,2,4,8,16,32,64)

이로 인해 NGINX를 통해 pi를 실행하는 웹 호스팅이 복잡합니까? 특정 노드의 처리 능력에 처리 할 특정 작업을 할당 할 수 있습니까? 노드 1과 같은 웹 서비스 요청을 처리하고 노드 2는 클라우드 스토리지를 처리합니다.

답변:


49

몇 가지 흥미로운 질문이 있습니다. Raspberry Pis로 구축 된 "슈퍼 컴퓨터"가 어떻게 작동하는지 약간 이해하지 못할 수도 있습니다. 자동로드 공유 시스템으로는 작동하지 않습니다. 복잡한 작업이 동시에 수행 될 수있는 조각으로 분류되는 병렬 프로그래밍 이라는 것을 위해 설계되었습니다 . 클러스터 (헤드 노드)의 기본 Pi는 전체 작업 구성을 담당하며 클러스터 (클라이언트 노드)의 각 Pi는 할당 된 작업을 수행하고 결과를 헤드 노드에 다시보고합니다. OpenMPI 와 같은 라이브러리 가 핵심입니다.

또한, 구축 된 Raspberry Pi 클러스터는 효율적인 컴퓨팅 장치로 구축되지 않았습니다. 그것들은 개발 플랫폼 으로 만들어졌습니다 . 32 대의 데스크탑 PC보다 32 대의 라즈베리 파이를 구입하는 것이 훨씬 저렴합니다. 병렬 프로그래밍 소프트웨어를 훨씬 저렴하게 개발하고 테스트 할 수 있습니다. Pis 또는 PC가없는 경우 유일한 대안은 실제 슈퍼 컴퓨터에서 CPU 시간을 요청하는 것입니다. 문제의 컴퓨터 크기에 따라 그렇게하려면 리소스를 사용하기 전에 비용이 많이 들거나 대기 시간이 길어질 수 있습니다. 따라서 사람들이 자신의 개인 클러스터를 구축 한 이유는 무엇입니까? 응용 프로그램이 작동한다는 것을 알면 실제 컴퓨터에서 응용 프로그램을 실행하는 것이 좋습니다.

따라서이 점을 명심하고 구체적인 질문으로 넘어가십시오.

적절한 클러스터에서 Pis는 단일 가상 컴퓨터로 작동하지 않습니다. Sun Grid Engine 과 같은 작업 또는 자원 할당 시스템의 형태로 각 Pi를 느슨하게 제어 할 수 있습니다 . 작업은 필요에 따라 노드에 할당되며 작업이 완료되면 해당 노드의 리소스가 새 작업을 위해 비워집니다.

클러스터에서 각 Pi는 자체 Linux 사본을 실행하므로 각 Pi는 GPIO 포트에 대한 로컬 제어를 유지합니다. 병렬 컴퓨팅 환경에서 소프트웨어가 실제로 어떻게 그것을 사용할지 잘 모르겠습니다.

클러스터는 단일 컴퓨터가 아니기 때문에 실제로 Pi를 더 빠르게 만들지는 않습니다. 당신이 얻는 것은 단순히 한 번에 더 많은 것을 할 수있는 능력입니다. 당신은 2의 배수로 제한되지 않습니다. 그러나 실행 한 작업에 따라 클러스터 된 컴퓨터에는 실제 상한이 있습니다. 200 단계가 필요한 많은 Pis에서 병렬 계산을 실행한다고 가정하십시오. 그러나 다음 단계마다 모든 Pi가 이전 단계에서 계산 한 정보가 필요합니다. 따라서 각 Pi는 반복마다 다른 모든 Pi로부터 데이터를 수신해야합니다. 각 반복 계산에 걸리는 시간에 따라 계산보다 데이터를 보내는 데 더 많은 시간을 소비 할 수 있습니다. 이것이 대부분의 슈퍼 컴퓨터가 InfiniBand를 사용하는 이유입니다회로망. 매우 빠르므로 더 많은 계산을 할 수 있습니다. 이에 대한 해결책은 적은 수의 Pi를 사용하지만 각 반복마다 더 많은 작업을 수행하도록하는 것이지만 알고리즘에 따라 불가능할 수도 있습니다. 따라서 실제 상한입니다. Pis에서는 USB 이더넷이 매우 느리기 때문에 특히 나쁩니다.

따라서 실제 응용 프로그램에서 분산 웹 호스팅! 여기에서 여러 Pi를 활용할 수 있습니다. 단순한 클러스터가 아닙니다. 5 파이가 있다고 가정 해보십시오. 이를 GatewayPi, WebPi1, WebPi2, WebPi3 및 DataPi라고합니다. GatewayPi는 인터넷을 통해 Nginix를 실행하여 웹 요청을 처리하지만 처리는하지 않습니다. 대신에 그것은 부하 분산입니다. 프록시를 사용하고 들어오는 요청을 WebPi1, WebPi2 또는 WebPi3에 무작위로 전달합니다. 이제 더 많은 요청을 동시에 처리 할 수 ​​있기 때문에 웹 인프라의 성능을 세 배로 향상 시켰습니다. DataPi는 어떻습니까? DataPi는 모든 웹 데이터를 저장하고 NFS 서버를 실행하는 하드 드라이브를 연결했습니다. WebPiX는 NFS 공유를 마운트하여 처리 할 데이터에 액세스 할 수 있도록합니다. 이 방법으로 한 위치에서만 백업을 실행하면되며 디스크 공간을 절약 할 수 있습니다.

방금 설명한 것은 본질적으로 Google 및 Facebook과 같은 대기업이 사용하는 모델이지만 Raspberry Pi 크기로 축소되었습니다. 유일한 비용은 Pis의 비용으로 인해이를 수행하는 것이 본질적으로 Pis 클러스터와 동일한 개발 플랫폼 (웹 서비스 용)을 생성하는 것이 병렬 프로그래밍을위한 것입니다. 상대적으로 낮은 계산 능력으로 인해 여러 Pi를 사용하면 대량의 데이터를 처리 할 때 에너지 소비로 성능이 저하됩니다. 그러나 단지 학습을 위해서? 그들은 완벽합니다.


따라서 2 개의 웹 사이트의 저렴한 웹 호스팅을 위해 GPIO, SSH, FTP, 클라우드 스토리지, 홈 자동화를 통해 냉각 팬을 제어하는 ​​홈 프로젝트를 수행하는 경우 작은 클러스터를 만들어 작업을 올바르게 분배하는 것이 가치가 있습니까?
SuperAdmin

4
+1이 질문에 호기심이 생겨서 약간의 교육을 받았습니다. 좋은 대답입니다.
jrhorn424

@iOSNoob, 당신이 그것을 사용하는 유일한 사람이고 한 번에 그중 하나만 수행한다면, 리소스는 필요에 따라 할당되기 때문에 클러스터의 가치가 없을 수도 있습니다. 단순히 RAM이 충분하지 않거나 한 사람보다 더 많은 부하가 있다면 아마도 그만한 가치가 있습니다. 보안을 위해 팬 및 홈 자동화와 같은 것을 별도의 Pis에 배치했습니다. 당신은 정말로 누군가가 당신의 집에있는 물건들을 엉망으로 만들 가능성을 원치 않습니다 ... 만약 당신이 여분의 Pi를 뛰어 넘어 그 시스템들에 더 잘 가야한다면. 이는 추가적인 보안 계층입니다.
Fred

@ jrhorn424 당신이 그것을 좋아해서 기뻐요! 나는 최근에 고성능 (슈퍼) 컴퓨팅 이벤트에 참석하여 내 마음에 새롭습니다. 그것을 쓸 완벽한 타이밍.
Fred

1
Fred가 묘사 한 거의 정확한 웹 호스팅 아키텍처의 구체적인 예를 들어, pidramble.com (Pi의 맛으로 자신을 구축 할 수있는 GitHub의 코드 / 지침에 연결)입니다.
geerlingguy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.