使用 Apache Oozie UI 可查看 Oozie 日志。 Oozie UI 还包含一些链接,指向工作流启动的 MapReduce 任务的 JobTracker 日志。 故障排除的模式应为:
在 Oozie Web UI 中查看作业。
如果特定的操作出错或失败,请选择该操作,以查看“错误消息”字段是否提供了有关失败的详细信息。
如果已提供,请使用操作中的 URL 查看该操作的更多详细信息(例如 JobTracker 日志)。
下面是可能会遇到的特定错误及其解决方法。
JA009:无法初始化群集
問题
作业状态变为“SUSPENDED”。 作业详细信息中的 RunHiveScript 状态显示为“START_MANUAL”。 选择该操作会显示以下错误消息:
JA009: Cannot initialize Cluster. Please check your configuration for map
原因
job.xml 文件中使用的 Azure Blob 存储地址不包含存储容器或存储帐户名。 Blob 存储地址格式必须是 wasbs://containername@storageaccountname.blob.core.chinacloudapi.cn。
决议
更改作业使用的 Blob 存储地址。
JA002:不允许 Oozie 模拟 <USER>
問题
作业状态变为“SUSPENDED”。 作业详细信息中的 RunHiveScript 状态显示为“START_MANUAL”。 选择操作会显示以下错误消息:
JA002: User: oozie is not allowed to impersonate <USER>
原因
当前的权限设置不允许 Oozie 模拟指定的用户帐户。
决议
Oozie 可以模拟 users 组中的用户。 使用 groups USERNAME 查看用户帐户所属的组。 如果该用户不是 users 组的成员,请使用以下命令将该用户添加到此组:
sudo adduser USERNAME users
注释
可能需要几分钟,HDInsight 才能识别用户已添加到该组。
启动器错误 (Sqoop)
問题
作业状态变为“KILLED”。 作业详细信息中的 RunSqoopExport 状态显示为“ERROR”。 选择操作会显示以下错误消息:
Launcher ERROR, reason: Main class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1]
原因
Sqoop 无法加载访问数据库时所需的数据库驱动程序。
决议
从 Oozie 作业使用 Sqoop 时,必须同时包含数据库驱动程序和作业使用的其他资源(例如 workflow.xml)。 此外,通过 workflow.xml 的 <sqoop>...</sqoop> 节引用包含数据库驱动程序的存档。
例如,对于使用 Hadoop Oozie 工作流中的作业示例,使用以下步骤:
将
mssql-jdbc-7.0.0.jre8.jar文件复制到 /tutorials/useoozie 目录:hdfs dfs -put /usr/share/java/sqljdbc_7.0/enu/mssql-jdbc-7.0.0.jre8.jar /tutorials/useoozie/mssql-jdbc-7.0.0.jre8.jar修改
workflow.xml,在</sqoop>上方的新行中添加以下 XML:<archive>mssql-jdbc-7.0.0.jre8.jar</archive>
Oozie UI - 默认用户访问权限
問题
对于创建的 HDInsight Oozie 群集,默认情况下,用户将拥有对所有作业的读取访问权限、对其自己的作业的写入访问权限,并且可以基于 ACL 写入作业。 管理员用户具有更广泛的权限,包括对所有作业和操作的写入权限。 在 Oozie 群集中,如果安全配置已禁用,则所有用户都被视为管理员,HDInsight Oozie 群集默认禁用安全配置。
原因
如果禁用安全性,则所有用户被视为管理员用户,这是 Oozie 中的标准行为,而不是 HDInsight 平台特有的。 请参考以下 Oozie 页面中提供的相同内容 - Oozie - 用户身份验证公共文档
决议
可以通过特定属性定义管理员用户。 ACL 是在作业提交期间设置的,可以同时包括用户名和组。 系统检查用户是否属于执行操作的必要组。
在 ambari 中设置此属性 oozie.service.AuthorizationService.security.enabled=true
Ambari UI -> 服务 -> Oozie -> 配置 -> 高级 -> 搜索并设置为 True -> 重启所有受影响项
管理员用户根据 oozie.service.AuthorizationService.admin.groups 属性中指定的管理员组列表确定。 使用逗号分隔多个组,空格、制表符和 ENTER 字符将被去除。
后续步骤
如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道之一获取更多支持:
- 如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持”,或打开“帮助 + 支持”中心。
Oozie WebUI 禁用及命令行选项作为替代方案
問题
Apache Oozie 自 2025 年 2 月以来已停用,请参阅 此链接。 存在与 Oozie WebUI 相关的已知漏洞。
原因
若要禁用 Oozie WebUI,请执行以下步骤:
在 Ambari 门户中停止 Oozie 服务。
编辑 /var/lib/ambari-server/resources/stacks/HDInsight/<version>/services/OOZIE/quicklinks/quicklinks.json 并删除参数的值
<url>并将其替换为“”。
之前:
"name": "default",
"description": "default quick links configuration",
"configuration": {
"links": [
.....
"url":"%@://%@:%@/oozie?user.name=%@",
.....
After:
"name": "default",
"description": "default quick links configuration",
"configuration": {
"links": [
.....
"url":"",
.....
- 重启 Ambari 服务
sudo ambari-services restart
- 从 Ambari 启动 Oozie 服务
解决方法
使用 Oozie 的命令行选项,参见 链接。