azkaban3.16安装部署坑以及azkaban邮件提醒设置

一、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、设置提醒人邮件地址
    
    ①方法一、在.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-->右侧显示设置结果
 


 

猜你喜欢

转载自blog.csdn.net/CaptainJava/article/details/81185839
今日推荐