Apache Hama
| Company type | Open source software project |
|---|---|
| Industry | Distributed computing, Cloud infrastructure |
| Founded | 2012 |
| Founder | Edward J. Yoon |
| Defunct | April 2020 |
| Fate | Retired, assets transferred to Apache Attic |
| Products | Distributed computing platform utilizing bulk synchronous parallel methodology |
| Website | hama |
Apache Hama is a distributed computing platform utilizing bulk synchronous parallel methodology, designed for extensive scientific calculations involving matrices, graphs, and network algorithms. Initially developed as a sub-project under Hadoop, it was elevated to an Apache Software Foundation top-level project in 2012. The framework was developed by Edward J. Yoon, who coined the name as a contraction of "Hadoop Matrix Algebra" and also drew inspiration from the Korean term for hippopotamus (하마). Following Apache's tradition of animal-inspired project names such as Apache Pig, Hama's design was influenced by Google's Pregel graph processing system introduced in 2010. Performance benchmarks revealed that Hama could outperform Hadoop by as much as fifty times when running graph algorithms.
The initiative was officially retired in April 2020, with its assets transferred to the Apache Attic. Yoon cited factors like the complexity of installation, constraints on scalability, and a challenging programming paradigm as reasons behind its limited widespread use.
Architecture
Hama's architecture consists of three core elements: BSPMaster, GroomServers, and Zookeeper.
BSPMaster
The BSPMaster component oversees the status of groom servers, directs supersteps within the cluster, monitors job execution progress, schedules tasks, allocates workloads to groom servers, manages fault tolerance, and provides the cluster control interface. It runs an RPC server to facilitate communication with groom servers that host BSPPeer processes and periodically send heartbeat signals containing information such as task capacity and memory usage. BSPMaster updates server information upon receiving these heartbeats and distributes tasks using a FIFO job scheduling approach combined with straightforward task assignment techniques.
GroomServer
GroomServers are responsible for carrying out BSP tasks assigned by BSPMaster. They maintain continuous communication with BSPMaster to obtain new assignments and report their operational status. Typically deployed on the same physical machines as data nodes, groom servers are compatible with HDFS or alternative distributed storage systems.
Zookeeper
Zookeeper is employed to enable effective barrier synchronization among BSPPeers.