使用Azkaban调度任务时候总是出错
2019/05/21 12:11:03.158 +0800 ERROR [ExecutorManager] [Azkaban] Rolling back executor assignment for execution id:5
azkaban.executor.ExecutorManagerException: java.io.IOException: executor became inactive before setting up the flow 5at azkaban.executor.ExecutorApiGateway.callWithExecutionId(ExecutorApiGateway.java:80)at azkaban.executor.ExecutorApiGateway.callWithExecutable(ExecutorApiGateway.java:43)at azkaban.executor.ExecutorManager.dispatch(ExecutorManager.java:1051)at azkaban.executor.ExecutorManager.access$600(ExecutorManager.java:65)at azkaban.executor.ExecutorManager$QueueProcessorThread.selectExecutorAndDispatchFlow(ExecutorManager.java:1282)at azkaban.executor.ExecutorManager$QueueProcessorThread.processQueuedFlows(ExecutorManager.java:1254)at azkaban.executor.ExecutorManager$QueueProcessorThread.run(ExecutorManager.java:1192)
Caused by: java.io.IOException: executor became inactive before setting up the flow 5at azkaban.executor.ExecutorApiGateway.callForJsonObjectMap(ExecutorApiGateway.java:108)at azkaban.executor.ExecutorApiGateway.callWithExecutionId(ExecutorApiGateway.java:78)... 6 more
2019/05/21 12:11:03.163 +0800 WARN [ExecutorManager] [Azkaban] Executor otest01:12321 (id: 5), active=true responded with exception for exec: 5
azkaban.executor.ExecutorManagerException: azkaban.executor.ExecutorManagerException: java.io.IOException: executor became inactive before setting up the flow 5at azkaban.executor.ExecutorManager.dispatch(ExecutorManager.java:1057)at azkaban.executor.ExecutorManager.access$600(ExecutorManager.java:65)at azkaban.executor.ExecutorManager$QueueProcessorThread.selectExecutorAndDispatchFlow(ExecutorManager.java:1282)at azkaban.executor.ExecutorManager$QueueProcessorThread.processQueuedFlows(ExecutorManager.java:1254)at azkaban.executor.ExecutorManager$QueueProcessorThread.run(ExecutorManager.java:1192)
Caused by: azkaban.executor.ExecutorManagerException: java.io.IOException: executor became inactive before setting up the flow 5at azkaban.executor.ExecutorApiGateway.callWithExecutionId(ExecutorApiGateway.java:80)at azkaban.executor.ExecutorApiGateway.callWithExecutable(ExecutorApiGateway.java:43)at azkaban.executor.ExecutorManager.dispatch(ExecutorManager.java:1051)... 4 more
Caused by: java.io.IOException: executor became inactive before setting up the flow 5at azkaban.executor.ExecutorApiGateway.callForJsonObjectMap(ExecutorApiGateway.java:108)at azkaban.executor.ExecutorApiGateway.callWithExecutionId(ExecutorApiGateway.java:78)... 6 more
各种方法都使用了但是也没有用,最后发现一篇大神写的博客后就解决了:
通过翻看 Azkaban Executor Server 源码,发现 Executor 提供了 rest 接口,来手动激活 Executor.
为什么不在 Executor 启动时自动激活呢….官方 issue110 解释如下:
We don't update prior to web-server start.Let me introduce how we do a regular Executor deployment. Both old webserver and old executor(3.a) are up initially, and old executor is running jobs (we can not interrupt it). Executor Deployment starts:install new Executor (3.b) on our box without activating.
Run job tests, which targets 3.b and make sure 3.b is working.
Activate 3.b, and deactivate 3.a. Even though 3.a is deactivated, jobs still keep runnig there.
Deployment completes.
We would better run tests against new executor before activating it. Is it a bit clear now?
解决办法:
curl http://${executorHost}:${executorPort}/executor?action=activate
参考:
https://github.com/azkaban/azkaban/issues/1100
https://github.com/azkaban/azkaban/issues/1581
博主原文链接