클러스터는 어떻게 구축합니까?


63

- 집에서 컴퓨터 클러스터를 구축에 대해 지난 몇 년 동안 온라인 주위에 떠있는 몇 가지 기사가 있었다 여기에 예를 들어.

Pi는 저비용으로 인해 이런 종류의 것을 구축 / 테스트하기위한 좋은 플랫폼으로 나를 맞았습니다. 이와 같은 "일반적인"가이드가 Pi로 쉽게 전달되어야합니까, 아니면 그러한 프로젝트를 시도 할 때 특별히 알아야 할 것이 있습니까?



"bramble"이라는 태그를 추가했습니다. 이것이 이름입니다. "함께 묶고 hadoop 또는 그와 비슷한 것을 실행"하는 것 외에는 적절한 대답을 할 수 없습니다. 실제로, 나는 스스로 답을 찾기 위해 질문을 좋아했습니다!
23:48에

다른 Pi 사용자들 도 "bramble"이라는 마법의 단어에 대해 모른다. 재단 포럼을 검색하면 도움이되었지만 응답 속도가 느려서 투표하지 않습니다.
mlp

4
: SouthHampton의 대학은 64 파이 클러스터 (또는 "슈퍼 컴퓨터") 만드는 단계 생산 southampton.ac.uk/~sjc/raspberrypi/...
알렉스 L

답변:


35

분산 계산 파이썬 모듈 인 Dispy를 살펴 보는 것이 좋습니다 .

PC에서 여러 개의 라즈베리 파이 (노드)에서 프로그램을 실행하려면 (서버는 IP를 가정 192.168.0.100) :

  • 각 RasPi에 운영 체제 설치

  • 각 RasPi를 네트워크에 연결하십시오. 동적 IP 인 경우 IP를 찾거나 고정 IP를 설정하십시오.
    (노드가 3 개이고 IP가이라고 가정합니다 192.168.0.50-52)

  • Python을 설정하고 (아직 설치하지 않은 경우) 설치 dispy한 다음 dispynode.py -i 192.168.0.100각 RasPi에서 실행 하십시오. 그러면 dispynode가 서버에서 작업 정보를 받도록 지시합니다.

  • PC (서버) dispy에을 설치 한 후 다음 파이썬 코드를 실행하십시오.

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

/some/programpython 함수로 대체 할 수도 있습니다 ( 예 :) compute.

python 객체, 모듈 및 파일 ( dispy각 노드로 전송) 과 같은 종속성 을 추가하여 포함시킬 수도 있습니다.depends=[ClassA, moduleB, 'file1']


8
누군가이 작업을했는지 듣고 싶습니다. 작동하는지 알려주십시오.
Alex L

내 경우 (openelec + python 2.7)이 오류 "파일"./Lib/multiprocessing/__init__.py ", 줄 84, <모듈>, ImportError : /usr/lib/python2.7/lib-dynload/ _multiprocessing.so : 정의되지 않은 기호 : SemLockType ".
Guido

그러나 dispy3-3.6은 wheezy + python3으로 실행됩니다! 2013-03-13 23 : 01 : 30,664-dispynode-192.168.1.34:51348에서 1 CPU를 제공합니다. 작업을 시작하면 (예 : / bin / ls) 노드가 작업을 받고 실행 파일을 / tmp로 옮깁니다. 그러나 "[</ '/ tmp / dispy / b7e04cb4a1e144e1 / ls'] 실행에 실패했습니다. '>, OSError (8,'Exec format error '), <traceback object at 0x16f2580>) "
Guido

10

이미 수행 한 작업을 알고 있어야합니다. RasPi boxen 클러스터의 이름도 있습니다. 임베디드 리눅스 위키 ( Embedded Linux Wiki)에 따르면 Bramble 은 " Raspberry Pi 장치 의 Beowulf 클러스터 "로 정의되어있다 . Raspberry Pi Homebrew 에는 Brambles관한 많은 게시물이 있으며 Foundation 자체 포럼 참조하십시오 .


14
나는 누군가에게 구글에게 그 답을 말하는 것은이 사이트에 좋다고 생각하지 않는다. 이름을 아는 것이 유용하지만 답변에 내용과 참조 링크를 추가하는 것이 좋습니다.
Joe

컨텐츠 및 링크 추가, @Joe. downvoters가 지금 그들의 의견을 재평가하면 좋을 것입니다 ...
mlp

1
내가 실제로 당신을 다운 보트한다면 ...
Joe

당신이 가지고있는 것을 해치지 않기 위해 아주 조심스럽게 말 했어요, 조 아마도 반대 버튼을 클릭하여 역순이 아니라 동일한 버튼을 다시 클릭하여 투표를 취소 할 수 있다는 것을 모를 수도 있습니다.
mlp

10

사우 샘프 턴 유니 (Southampton Uni)의 일부 사람들은 클러스터를 구성하고 http://www.southampton.ac.uk/~sjc/raspberrypi/ 에서 그들의 작업에 대한 자세한 개요를 작성했습니다 .



실제로 MPI를 사용하여이 프로젝트에서 배울 점이 많습니다. 이 사람의 작업을 기반으로 실험을 진행하고 있습니다. 이 답변을 질문에 대한 정답으로 표시하는 것이 좋습니다.
benqus

6

완전히 가능하지만 가장 큰 문제는 달성 가능성입니다. 휴대용 병렬 컴퓨팅의 아이디어와 함께 갈 수 있으므로 생각할 수있을뿐만 아니라 유용하다고 생각합니다. 구체적으로, FORTRAN 및 C ++와 같은 코딩 언어가 가장 좋습니다.

클러스터 컴퓨팅에 대한 자세한 내용 은 beowulf.org 를 참조하십시오


1

이것은 'dispy'에 관한 Guido Garcia의 게시물에 대한 회신입니다. 그의 게시물에 회신하는 방법을 알 수 없습니다.

병렬 실행을 위해 프로그램 ( '/ bin / ls')을 'dispy'와 함께 배포하면 클라이언트 시스템의 해당 프로그램이 각 노드 ( '/ tmp')로 전송됩니다. 이는 클라이언트 시스템에서 사용자가 개발 한 프로그램이 NFS 또는 일부 공유 디렉토리없이 전송되도록하기위한 것입니다. 이것은 노드와 클라이언트 아키텍처가 호환되는 경우에만 바이너리 프로그램과 함께 작동합니다. 귀하의 경우, 클라이언트 아키텍처가 원격 노드의 아키텍처와 다르고 노드가 클라이언트에서 전송 된 바이너리 '/ bin / ls'를 실행할 수 없다고 생각합니다. 각 노드에서 / bin / ls를 실행하려면 Python 함수 나 프로그램을 작성하여 디렉토리를 인쇄하고 (예 : os.listdir 사용) 이진 실행 파일 대신 배포 할 수 있습니다.


다른 사람들의 답변 / 질문에 대해 의견을 남기려면 평판이 50이어야합니다. 그래도 환영합니다!
Impulss

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.