azkaban执行任务长时间无法结束
问题显示:
由于一次执行较多的任务,导致azkaban的web程序崩溃,此时,关闭azkaban服务,重新启动azkaban
但是由于azkaban的exec程序无法关闭,这里采用kill的方式关掉exec进程
# azkaban 开启: cd /opt/azkaban/exec sh ./bin/start-exec.sh curl -G "localhost:$(<./executor.port)/executor?action=activate" && echo cd /opt/azkaban/web sh ./bin/start-web.sh # azkaban 关闭: cd /opt/azkaban/exec sh ./bin/shutdown-exec.sh cd /opt/azkaban/web sh ./bin/shutdown-web.sh
原因一:
此时发现还是不能打开web页面,查看日志发现连接不到数据库,查看mysql数据库的mysql.user表
可能会没有azkaban用户,(不知什么情况,系统把azkaban用户删除了)需要重新添加azkaban用户,并赋予权限
mysql -uroot -p123456 mysql> CREATE USER 'azkaban'@'localhost' IDENTIFIED BY 'azkaban'; mysql> grant all privileges on azkaban.* to azkaban@'%' identified by 'azkaban'; mysql> flush privileges;
原因二:
重新启动后发现执行程序还是没有结束,还是继续执行,但是没有执行结果反馈(重启服务没有解决问题)
这种情况下,可能是azkaban的数据库配置问题,观察azkaban.executors表
azkaban.executors介绍:azkaban架构由AzkabanWebServer、AzkabanExecutorServer、MySQL组成,web和exec需要通信,通信端口在每次启动的时候随机生成存放在这张表中,故只能存在一条状态为1的数据
由于非正常退出程序,导致表中数据还在,存在多个活跃的端口号,导致web页面也exec执行器通信异常,关闭azkaban所有服务,清空这张表,重新启动azkaban即可