报警信息:
Caused by: HiveServerException(message:Query returned non-zero code: 1, cause: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask, errorCode:1, SQLState:08S01)
at org.apache.hadoop.hive.service.ThriftHive$execute_result$execute_resultStandardScheme.read(ThriftHive.java:1494)
at org.apache.hadoop.hive.service.ThriftHive$execute_result$execute_resultStandardScheme.read(ThriftHive.java:1480)
at org.apache.hadoop.hive.service.ThriftHive$execute_result.read(ThriftHive.java:1430)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
at org.apache.hadoop.hive.service.ThriftHive$Client.recv_execute(ThriftHive.java:116)
at org.apache.hadoop.hive.service.ThriftHive$Client.execute(ThriftHive.java:103)
at org.apache.hadoop.hive.jdbc.HivePreparedStatement.executeImmediate(HivePreparedStatement.java:176)
... 9 more
结论:jobname 在进行 url 编码的时候由于过长,导致任务在写入historyserver的时候异常,从而hive没有获取到job的状态,导致报错。
分析依据:
从状态机中可以看出该任务最终处于 FINISHED 状态。但是在hive上报了Could not find status 的错误。
参考日志:
resourcemanager log:
1)、RMAppImpl: application_xxxxx State change from FINISHING to FINISHED
hive log:
2)、java.io.IOException: Could not find status of job:job_xxxxx