一、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 是可以直接输中文的。其他版本未测试。