로컬 네트워크에 manjaro를 실행하는 컴퓨터가 3대 있습니다. 나는 첫 번째 컴퓨터에서 CPU를 최대화하는 dask, pandas 등을 사용하여 Python 스크립트를 실행하고 있으며 작업이 완료될 때까지 30분 이상 기다려야 하는 경우가 많습니다. 다른 목적으로 로컬 네트워크에 이미 3개의 컴퓨터가 설정되어 있으므로 해당 CPU의 이점도 활용하고 싶습니다. 저는 Linux 배포판을 변경하고 싶지 않고 이 컴퓨터에서 다른 서버를 계속 실행하고 싶습니다. 저는 보통 다중 처리(독립 데이터에서만 작동하는 루프)에 쉽게 최적화할 수 있는 Python 스크립트를 실행합니다. 이를 달성할 수 있는 방법이 있나요?
답변1
여기서 자세히 논의하기에는 너무 광범위한 주제이지만 간략한 개요를 보려면 다음이 필요합니다.
- 일종의 공유 저장소(예:네트워크 파일 시스템) 모든 컴퓨터가 스크립트와 데이터에 액세스할 수 있도록 합니다.
- 작업 스케줄러 및 리소스/워크로드 관리자(예:진흙
mpi4py
Python 프로세스가 서로 통신해야 하는 경우(완전히 별도의 프로세스인 경우에는 통신하지 않음) 일종의 메시징 라이브러리가 필요할 수 있습니다(예를 들어).- 그런데 단순히 권한 문제를 피하려면 모든 사용자로 작업을 실행하세요.~ 해야 하다모든 시스템에서 동일한 UID와 GID를 갖습니다.
머신 중 하나를 헤드 노드 또는 제어 노드로 설정합니다. 이는 아마도 스토리지 서버여야 합니다. a) 가장 적게 사용되고 b) 가장 많은 저장 공간(또는 더 많은 저장 공간을 위한 드라이브 베이)이 있는 컴퓨터는 LAN에 있는 컴퓨터일 것입니다. 이 시스템에서 일괄 작업을 제출해야 합니다.
그런데 제어 노드는 컴퓨팅 노드 역할도 할 수 있습니다.
다른 두 머신은 "컴퓨팅 노드"이자 스토리지 서버의 클라이언트여야 합니다(예: NFS를 사용하는 경우 NFS 서버에서 내보낸 NFS 디렉터리를 마운트해야 합니다).
여기까지는 원하지 않을 수도 있지만 전용 클러스터에는 스토리지 노드(nfs 또는세팔로스포린또는 기타), 일부 중앙 집중식 인증 서버(멋진또는LDAP또는 기타), 헤드 노드 및 컴퓨팅 노드의 모든 사용자는 파일 서버에서 홈 디렉터리를 마운트합니다.
그러나 "실제" 클러스터가 어떻게 설계되고 구축되는지(또는 적어도 개요를 얻는 방법)를 살펴보는 것은 가치가 있습니다. 거기에서 3노드 클러스터로 축소하기 위한 몇 가지 좋은 아이디어를 얻을 수 있기 때문입니다.