记录解决Azkaban调用kettle报错:Address al

2019-06-12  本文已影响0人  戊纵

在使用azkaban的过程中发现有些任务失败是因为端口冲突,本身的kettle任务运行完成了,但在azkaban界面却认为任务执行失败根据报错信息查看源码发现错误信息如下:

下载Kettle7.0版本的源码可以看到:

报错发生在207行,因为socket端口被占用,查看START_PORT_NUMBER的值为:

检查kettle目录,发现无该配置项的设置,也就是说端口的起点为11000,出现Address already in use时通常前后任务较多,结合公司默认端口为11017,假设是因为端口向上递增到11017导致在检查端口时报错,在此假设的基础上调整默认端口为21000,同时将在10000以下的端口号向上调整。

在data-integration/system/karaf/etc 目录下检查karaf配置,在custom.properties中插入:

pentaho.karaf.instance.start.port=21000

在后续kettle任务执行时检查进程监听端口,发现未生效,失败依旧经常出现,再次查看源码,kettle在初始化时获取系统变量有一种方式是从KarafPorts.yaml获取信息,这个文件是这样的:

KarafPorts.yaml

代码中读取此文件:

在KarafPorts.yaml中添加:

- id: INSTANCE_START_PORT

  property: pentaho.karaf.instance.start.port

  friendlyName: Instance Start Port

  startPort: 21000

  endPort: 27000

  serviceName: karaf

通过观察Azkaban的日志

端口调整成功,随着时间检测问题是否解决

上一篇下一篇

猜你喜欢

热点阅读