azkaban 有三大模塊,azkaban-common,azkaban-exec-server,azkaban-web-server.
azkaban-common是公共模塊,比如訪問數據庫,trigger管理工具,郵件工具,以及job.
azkaban-exec-server是執行器,主要用于執行任務
azkaban-web-server是調度中心,用于任務展示、編輯,調度任務
azkaban-common ExecutorManager
ExecutorManager是用于管理執行器的job
/**
* 創建ExecutorManager
* @param loader
* @return
* @throws ExecutorManagerException
*/
static ExecutorManager createExecutor(ExecutorLoader loader) throws ExecutorManagerException{
Props props = new Props();
props.put(ExecutorManager.AZKABAN_USE_MULTIPLE_EXECUTORS, "true");
props.put(ExecutorManager.AZKABAN_QUEUEPROCESSING_ENABLED, "false");
loader.addExecutor("localhost", 12345);
loader.addExecutor("localhost", 12346);
return new ExecutorManager(props, loader, new HashMap<String, Alerter>());
}
public static void main(String[] args) {
try {
ExecutorLoader loader = new MockExecutorLoader();
ExecutorManager manager = createExecutor(loader);
System.out.println(manager.getAllActiveExecutors().size());
System.out.println(manager.getQueuedFlowSize());
System.out.println(manager.isQueueProcessorThreadActive());
//添加flow,執行flow
ExecutableFlow flow1 = TestUtils.createExecutableFlow("exectest1", "exec1");
flow1.setExecutionId(1);
User user = TestUtils.getTestUser();
manager.submitExecutableFlow(flow1,user.getUserId());
System.out.println(loader.fetchQueuedFlows().size());
}catch (Exception e){
System.out.println(e.getMessage());
}
}
輸出
2
0
false
1