Phoenix is a fault-tolerant distibuted low-latency scheduler based on Sparrow implemented in Go. It uses Zookeeper to implement group membership for worker nodes. Phoenix handles worker failures and recovers incomplete jobs, unlike Sparrow.
Our report can be found here.
The architecture of Phoenix is largely similar to that of Sparrow. The main components are: Schedulers, Node Monitors, Executors and Frontends. The overview of the Phoenix scheduling environment and the scheduling workflow can be seen below:
- Apache Zookeeper
- Zookeeper Go client: https://github.com/samuel/go-zookeeper
- Go collections: github.com/golang-collections/collections/queue
- Start your Zookeeper cluster and add the cluster information to src/phoenix/zk.go.
var ZkLocalServers = []string{"172.31.28.99:2181", "172.31.31.12:2181", "172.31.22.104:2181"}- Run
makein the src/ directory
> make
go install ./...- Use
init-configto generate the configuration file which contains the ip:port information about all components. By default, it will generate localhost addresses, but other ip addresses can also be provided to it.
> init-config
{
"Schedulers": [
"localhost:32943"
],
"Monitors": [
"localhost:32944",
"localhost:32945"
],
"Executors": [
"localhost:33944",
"localhost:33945",
]
}- Start all schedulers.
> init-scheduler -schedID i- Start all monitors.
> init-monitor -workerId i- Start all executors.
> init-executor -workerId i- Use
Frontenddefined in src/phoenix/frontend/frontend.go to submit jobs.

