当前位置: 代码迷 >> 综合 >> 解决 Azkaban Executor 启动后不会自动激活
  详细解决方案

解决 Azkaban Executor 启动后不会自动激活

热度:96   发布时间:2023-09-14 15:23:16.0

使用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

博主原文链接

  相关解决方案