一、azkaban3.16安装部署
启动azkaban-web-server-3.16.0或azkaban-exec-server-3.16.0是如果摆错内容为找不到global.properties、
azkaban-users.xml或keystore
请确认两件事情,①确认文件是否存在,不存在则需要按要求创建。②如果存在则看报错信息中此文件的路径是否正确,此处可以修改azkaban.properties中配置的文件路径为绝对路径。
二、azkaban执行任务报错
1、azkaban 执行job 报错 azkaban.native.lib
azkaban.utils.UndefinedPropertyException: Missing required property
'azkaban.native.lib'
at azkaban.utils.Props.getString(Props.java:478)
at azkaban.jobExecutor.ProcessJob.run(ProcessJob.java:120)
at azkaban.execapp.JobRunner.runJob(JobRunner.java:693)
at azkaban.execapp.JobRunner.run(JobRunner.java:545)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
23-07-2018 17:51:48 CST Start ERROR - Missing required property
'azkaban.native.lib' cause: null
解决方法:
①当前azkaban使用的3.16 解决方法为:
plugins/jobtypes/commonprivate.properties下把 azkaban.native.lib=false就行了
②如果在较高版本中,如3.2的那个配置文件下并没有找到这个可以改的地方
最后的解决方法是:common/java/azkaban/jobExeccutor/utils/ProcessJob.java里
<code class="language-java">boolean isExecuteAsUser =
sysProps.getBoolean(EXECUTE_AS_USER, true);</code>
改成
boolean isExecuteAsUser = sysProps.getBoolean(EXECUTE_AS_USER, false);
2、执行job python脚本报错 Unknown column 'None' in 'field list'
替换 元组中的none
#获取消费平均值
def get_avg_amount(mysql_ip,mysql_user,mysql_pass,db_name):
result = []
db =
MySQLdb.connect(mysql_ip,mysql_user,mysql_pass,db_name,charset='utf8')
# 使用cursor()方法获取操作游标
cursor = db.cursor()
target_config='select round(max(x.total_amount)/3,2) from (select
t.customer_id as customer_id,sum(t.behaviour_purchase_amount) as total_amount
from lm_rfmdata.customer_rfm_attr t group by t.customer_id) x'
cursor.execute(target_config)
for i in cursor.fetchall():
result.append(i)
val = (1,)
if result[0][0] is None :
result[0]=val
return result
三、邮件提醒/通知设置 Notification Email Settings
1、配置发送人信息
在azkaban-web-server-3.16.0应用conf下azkaban.properties配置发送人信息
此设置已经设置好,无特殊改动无需修改。
cd /software/azkaban-web-server-3.16.0/conf
vim azkaban.properties
添加发件人信息:
mail.sender=***@***.cn //作为发送邮件的账号
mail.host=smtp.exmail.qq.com //腾讯企业邮箱使用这个,具体根据个人邮箱服务器设置
mail.user=Notify emails of azkaban //根据需要设置名称
mail.password=********* //发送邮件账号的密码
2、设置提醒人(收件人)邮件地址(以下三种方法当前版本亲测都可用。如果发送失败请自己查看azkaban日志)
①(推荐使用)方法一、在azkaban任务包,即所有.job文件的根目录下创建一个以.properties
为扩展名的文件,(如notifyEmil.properties。名字无所谓。)将此文件一同打包为azkaban任务包。多个邮箱可以用逗号隔开。
配置项有 :
#多个邮箱可以用逗号隔开 failure.emails 失败提醒人 success.emails 成功提醒人 notify.emails
执行(总是)提醒人
②方法二、在.job文件中添加提醒人邮件地址
在提交的job文件中添加如下相应属性:
failure.emails 失败提醒人
success.emails 成功提醒人
notify.emails 执行(总是)提醒人
三个属性视具体需求而添加。
如:
#customer_life_cycle_change.job type = command command = sh
customer_life_cycle_change.sh failure.emails=***@****.cn
success.emails=***@****.cn notify.emails =***@****.cn
按照以上两部设置之后可以在azkaban web UI中查看任务通知设置。
project-->Execute Flow-->Notification-->右侧显示设置结果
③还有更直观更方便的。方法三、
启动azkaban之后访问web端,创建好所需要的project(.job文件无需设置)
进入project-->Execute Flow-->Notification 直接设置 提醒人信息 手动执行 也可以
但是这个貌似单次有效。 ^_^
3、查看配置结果
按照以上两部设置之后可以在azkaban web UI中查看任务通知设置。
project-->Execute Flow-->Notification-->右侧显示设置结果
上图为job中配置好收件人的效果。
四、创建azkaban任务时输入中文备注提示已存在的项目(azkaban版本3.16.0)
问题:当前版本在创建Project时如果输入了中文的描述,提示错误信息 ERROR: Insert project for existing
project failed. xxxxxx
问题解决:
1、猜测当前版本不支持中文描述(很有可能通过调整配置可以解决,但是这么低的版本不会常用,不纠结,直接暴力解决)
①创建项目是描述项暂时输入英文字符创建项目
②进入项目中点击描述信息
③编辑中文描述,点保存
④有可能出现这个提示,暂且忽略,点关闭
⑤刷新页面就可以看到 描述已经修改成为中文的了
2、既然有以上猜测,当然是升级azkaban版本啊 哈哈
亲测azkaban 3.30.0版本是可以直接输入中文的
我家另一套环境装的时候装的3.30 是可以直接输中文的。其他版本未测试。
热门工具 换一换