| 개발자 | 아파치 소프트웨어 재단 |
|---|---|
| 미리보기 버전 | 0.7.1
/ 2016년 3월 14일 |
| 저장소 | Hama 저장소 |
| 프로그래밍 언어 | 자바 |
| 운영 체제 | 크로스 플랫폼 |
| 종류 | 분산 컴퓨팅, 벌크 동기 병렬 |
| 라이선스 | 아파치 라이선스 2.0 |
| 웹사이트 | hama |
Apache Hama는 행렬, 그래프 알고리즘, 네트워크 알고리즘과 같은 대규모 과학적 계산을 위한 벌크 동기 병렬 컴퓨팅 기법 기반의 분산 컴퓨팅 프레임워크이다. 원래 하둡의 하위 프로젝트였으나, 2012년에 아파치 소프트웨어 재단의 최상위 프로젝트가 되었다. 이 프로젝트는 에드워드 J. 윤(Edward J. Yoon)이 만들었으며, 명칭은 "Hadoop Matrix Algebra"의 약자이다. 또한 하마(Hama)는 윤 씨의 모국어인 한국어로 하마를 뜻하기도 하는데, 이는 아파치 프로젝트의 이름을 동물이나 동물학 관련 용어(예: 아파치 피그)로 짓는 관례를 따른 것이다. Hama는 2010년에 발표된 구글의 대규모 그래프 컴퓨팅 프레임워크인 Pregel에서 영감을 받았다. 그래프 알고리즘을 실행할 때 Hama는 하둡보다 50배 높은 성능 향상을 보였다.
2020년 4월에 은퇴하였으며, 프로젝트 자원은 아파치 애틱(Apache Attic)의 일부로 제공된다. 윤 씨는 도입이 저조했던 이유로 인스톨레이션, 확장성, 그리고 어려운 API 프로그래밍 모델을 꼽았다.
Hama는 세 가지 주요 구성 요소인 BSPMaster, GroomServers, Zookeeper로 이루어져 있다.
BSPMaster는 다음의 역할을 담당한다:
BSP 마스터와 다수의 그룸은 스크립트에 의해 시작된다. 이후 BSP 마스터는 그룸 서버를 위한 RPC 서버와 함께 시작된다. 그룸 서버는 BSPPeer 인스턴스와 BSP 마스터에 연결하기 위한 RPC 프록시로 시작된다. 시작 후, 각 그룸은 최대 태스크 용량, 사용되지 않은 메모리 등을 포함한 그룸 서버 상태를 담은 하트비트 메시지를 주기적으로 전송한다.
BSP 마스터는 하트비트 메시지를 수신할 때마다 그룸 서버의 상태를 최신으로 유지한다. BSP 마스터는 그룸 서버의 상태를 활용하여 유휴 상태인 그룸 서버에 태스크를 할당하며, 할당된 태스크 및 기타 수행할 작업을 포함한 하트비트 응답을 그룸 서버에 반환한다. 현재 BSP 마스터는 FIFO 작업 스케줄러와 간단한 태스크 할당 알고리즘을 사용한다.
그룸 서버(약칭 그룸)는 BSPMaster에 의해 할당된 BSP 태스크를 수행하는 프로세스이다. 각 그룸은 BSPMaster에 연결하여 할당된 태스크를 가져오고, 주기적인 피기백(piggyback)을 통해 상태를 보고한다. 각 그룸은 HDFS나 다른 분산 저장소에서 실행되도록 설계되었다. 기본적으로 그룸 서버와 데이터 노드는 하나의 물리적 노드에서 실행되어야 한다.
주키퍼(Zookeeper)는 BSPPeer들의 효율적인 장벽 동기화(barrier synchronisation)를 관리하는 데 사용된다.