昨天我开始了一个 oozie 工作流程。它开始了两个整天停滞不前的工作。我今天早上杀了他们,做了一个我现在想测试的改变。在杀死这两个工作之后,就像工作流程变得不顺畅,现在正在继续。我想终止工作流程,这样它就不会继续开始新的工作来取代我杀死的工作。我怎样才能在 oozie 命令行中做到这一点?
4 回答
Oozie 命令
--------------
注意:将 oozie 服务器和端口替换为特定于集群的。
1)提交作业:
$ oozie job -oozie http://localhost:11000/oozie -config oozieProject/workflowHdfsAndEmailActions/job.properties -submit job: 0000001-130712212133144-oozie-oozi-W
2)运行作业:
$ oozie job -oozie http://localhost:11000/oozie -start 0000001-130712212133144-oozie-oozi-W
3)检查状态:
$ oozie job -oozie http://localhost:11000/oozie -info 0000001-130712212133144-oozie-oozi-W
4)暂停工作流程:
$ oozie job -oozie http://localhost:11000/oozie -suspend 0000001-130712212133144-oozie-oozi-W
5)恢复工作流程:
$ oozie job -oozie http://localhost:11000/oozie -resume 0000001-130712212133144-oozie-oozi-W
6)重新运行工作流程:
$ oozie job -oozie http://localhost:11000/oozie -config oozieProject/workflowHdfsAndEmailActions/job.properties -rerun 0000001-130712212133144-oozie-oozi-W
7)是否需要终止作业:
$ oozie job -oozie http://localhost:11000/oozie -kill 0000001-130712212133144-oozie-oozi-W
8)查看服务器日志:
$ oozie job -oozie http://localhost:11000/oozie -logs 0000001-130712212133144-oozie-oozi-W
日志可在:
/var/log/oozie on the Oozie server
。
您可以通过以下方式查看正在运行的作业:
oozie jobs
或者如果它是协调器,而不是工作流:
oozie jobs -jobtype coordinator
并从那里获取作业 ID,然后执行:
oozie job -kill [id]
这是命令行工具参考页面:http: //incubator.apache.org/oozie/docs/3.1.3/docs/DG_CommandLineTool.html
我认为您会发现如何使用 bash 同时杀死、重新运行等多个(例如 200 个)作业很有帮助。
在一行中:
$for jobid in `oozie jobs -filter status=SUSPENDED | cut -d" " -f1`; do echo "Killed job ${jobid}"; job -kill ${jobid}; done
除了与 Oozie 命令相关的帖子之外,有时我们不必访问相应的工作流 id 来挂起/终止等,我们会收到以下错误:
Error: E0508 : E0508: User [?] not authorized for WF job [0001304-190209190348229-oozie-mapr-W]
为此,要执行诸如终止/挂起等任何操作,我们需要为我们的用户 ID 生成身份验证令牌。为此,首先,我们需要使用以下命令从文件中清除现有令牌,然后对给定的工作流 id 执行挂起/终止等操作:
rm .oozie-auth-token
来自 Apache Oozie 文档:
成功执行身份验证后,接收到的身份验证令牌将缓存在 .oozie-auth-token 文件中的用户主目录中,并具有仅所有者权限。后续请求在有效时重用缓存的令牌。
更多细节,Apache Oozie 文档的链接(参考认证部分): 官方文档