...
The network protocol and api behavior
Proposed Changes
def registered(executorDriver: ExecutorDriver, executorInfo: ExecutorInfo, frameworkInfo: FrameworkInfo, slaveInfo: SlaveInfo) |
executorInfo.command.environment.variables
variables are a list of name/value string pairs
The specific behind these structures are in the Mesos protobuf file https://github.com/apache/mesos/blob/master/include/mesos/mesos.proto?source=c
...
Goal
The goal of this project is to provide mesos framework that allows to deploy and manage cluster(s) of Kafka brokers. User is provided with a CLI to control broker configuration of running scheduler.
Overview
Following components are involved in the implementation:
Master daemon and slave daemon are part of mesos distribution. Brokers - are kafka servers.
Scheduler and executor are components that should be developed.
Scheduler
Scheduler is a process that registers itself on master daemon and manages brokers by using executors.
Main activity of the scheduler is to make the “required brokers run on required slaves”. Scheduler maintains internally a cluster configuration. Cluster configuration specifies following:
number of broker to run;
broker configuration;
constraints to clarify which broker to run on which slave;
Sample cluster configuration in json:
{
"brokers": [{
"id": "0..1",
"constraints": {
"cpus": 0.5,
"mem": 128,
"nodeAttr": "value"
}
}, {
"id": "2",
"constraints": {
"host": "slave0",
"cpus": 1,
"mem": 256
},
"configuration": {
"num.io.threads": 10
}
}]
}
Scheduler is started for the first time with no cluster. Cluster is configured later using CLI. Scheduler persists cluster state in file to be able to recover after restarting.
Executor
Executor is a process spawned by the slave node as requested by scheduler. Executor starts and manages Kafka broker.
Executor is packaged into a jar and download from scheduler by http.
Admin Server
The Framework must handle incoming administrative requests (create topic, add broker etc) as an ordinary broker. Thus the separate component has to manage io communications reusing Kafka Wire Protocol (including SocketServer, NetworkClient etc).
Compatibility, Deprecation, and Migration Plan
...