Azkaban two server mode模式运行的一个坑

现象描述

运行一个job产生报错:

01-03-2018 12:59:01 CST foo ERROR - Job run failed!
azkaban.utils.UndefinedPropertyException: Missing required property 'azkaban.native.lib'
    at azkaban.utils.Props.getString(Props.java:421)
    at azkaban.jobExecutor.ProcessJob.run(ProcessJob.java:234)
    at azkaban.execapp.JobRunner.runJob(JobRunner.java:748)
    at azkaban.execapp.JobRunner.doRun(JobRunner.java:591)
    at azkaban.execapp.JobRunner.run(JobRunner.java:552)
    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:745)
01-03-2018 12:59:01 CST foo ERROR - Missing required property 'azkaban.native.lib' cause: null

解决方案

官网描述:
这里写图片描述

$>cd /opt/app/azkaban-exec-server-0.1.0-SNAPSHOT/
$>mkdir -p plugins/jobtypes
$>cd plugins/jobtypes
$>cp /opt/source/azkaban-3.38.0/az-exec-util/src/main/c/execute-as-user.c .
$>gcc execute-as-user.c -o execute-as-user
$>sudo chown root execute-as-user
$>sudo chmod 6050 execute-as-user

$>vi commonprivate.properties
  execute-as-user=false
  azkaban.native.lib=/opt/app/azkaban-exec-server-0.1.0-SNAPSHOT/plugins/jobtypes

再度运行,依然报错:

01-03-2018 14:40:04 CST foo ERROR - Failed to change current working directory ownership. Error code: 1
01-03-2018 14:40:04 CST foo ERROR - Job run failed!
java.lang.Exception: Failed to change current working directory ownership. Error code: 1
    at azkaban.jobExecutor.ProcessJob.handleError(ProcessJob.java:428)
    at azkaban.jobExecutor.ProcessJob.assignUserFileOwnership(ProcessJob.java:407)
    at azkaban.jobExecutor.ProcessJob.run(ProcessJob.java:247)
    at azkaban.execapp.JobRunner.runJob(JobRunner.java:748)
    at azkaban.execapp.JobRunner.doRun(JobRunner.java:591)
    at azkaban.execapp.JobRunner.run(JobRunner.java:552)
    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:745)
01-03-2018 14:40:04 CST foo ERROR - Failed to change current working directory ownership. Error code: 1 cause: null

通过这段报错依然无法定位问题,通过控制台打印的日志信息发现:

2018/03/01 14:38:24.451 +0800 INFO [ExecuteAsUser] Command: [touch, /opt/app/azkaban-exec-server-0.1.0-SNAPSHOT/executions/1/user_can_write]
user does not exist: ruoze2018/03/01 14:38:24.458 +0800 INFO [ExecuteAsUser] Command: [chown, ruoze:azkaban, /opt/app/azkaban-exec-server-0.1.0-SNAPSHOT/executions/1]
Changing user: user: root, uid: 0, gid: 0
user command starting from: chown
chown: invalid user: `ruoze:azkaban'

发现问题所在,创建用户ruoze和组azkaban,之后重新执行foo,成功运行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
抱歉,我是一个语言模型,无法直接为您编写 Azkaban 的工作流程。但是,我可以为您提供一些基本信息,以帮助您编写 Azkaban 的工作流程。 Azkaban 是一个开源的批处理工作流调度系统,用于管理和调度 Hadoop 作业。可以使用 Azkaban 通过创建工作流程来管理和调度多个 Hadoop 作业。 在创建 Azkaban 工作流程时,需要考虑以下几个方面: 1. 工作流程的目的和作用:确定工作流程的目的和作用,例如,数据清洗、数据处理、数据分析等。 2. 定义任务:根据工作流程的目的和作用,定义需要执行的任务。每个任务可以是一个 shell 脚本、一个 Java 程序、一个 Pig 脚本、一个 Hive 查询等。 3. 定义任务的依赖关系:定义任务之间的依赖关系,以确保任务按正确的顺序运行。例如,某些任务可能需要在其他任务完成后才能运行。 4. 定义工作流程的调度规则:可以定义工作流程的调度规则,例如,每天定期运行、每周运行一次等。 下面是一个简单的 Azkaban 工作流程示例,可以作为参考: 1. 定义任务:创建一个 shell 脚本,用于执行 Hadoop MapReduce 作业。 2. 定义任务的依赖关系:定义 shell 脚本任务依赖于 Hadoop 安装和配置任务。即 Hadoop 安装和配置任务必须在 shell 脚本任务执行之前完成。 3. 定义工作流程的调度规则:将工作流程调度为每天定期运行。 通过以上步骤,您可以创建一个简单的 Azkaban 工作流程。当然,实际情况可能更加复杂,需要根据您的具体需求进行相应的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值