对 Azure HDInsight 中的 Apache Oozie 进行故障排查
使用 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>
后续步骤
如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道之一获取更多支持:
- 如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持” ,或打开“帮助 + 支持” 中心。