tez shuffle 处理程序设置后失败:映射运算符初始化失败

Posted

技术标签:

【中文标题】tez shuffle 处理程序设置后失败:映射运算符初始化失败【英文标题】:Failure after tez shuffle handler setup : Map operator initialization failed 【发布时间】:2020-12-18 07:44:47 【问题描述】:

设置 Tez Shuffle 处理程序后,请遵循以下说明:https://tez.apache.org/shuffle-handler.html 我在查询执行中遇到以下错误:

顶点失败,vertexname = map 2,vertexid = vertex_1608273679503_0002_2_01,诊断= [任务失败,taskId = task_1608273679503_0002_2_01_000000,诊断= [taskattept 0失败,info = [错误:运行任务时出现错误:错误_1608273679503_0002_2_01_00000000_0:java.lang .RuntimeException:java.lang.RuntimeException:映射运算符初始化失败 在 org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor(TezProcessor.java:296) 在 org.apache.hadoop.hive.ql.exec.tez.TezProcessor.run(TezProcessor.java:250) 在 org.apache.tez.runtime.LogicalIOProcessorRuntimeTask.run(LogicalIOProcessorRuntimeTask.java:374) 在 org.apache.tez.runtime.task.TaskRunner2Callable$1.run(TaskRunner2Callable.java:73) 在 org.apache.tez.runtime.task.TaskRunner2Callable$1.run(TaskRunner2Callable.java:61) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1729) 在 org.apache.tez.runtime.task.TaskRunner2Callable.callInternal(TaskRunner2Callable.java:61) 在 org.apache.tez.runtime.task.TaskRunner2Callable.callInternal(TaskRunner2Callable.java:37) 在 org.apache.tez.common.CallableWithNdc.call(CallableWithNdc.java:36) 在 org.apache.hadoop.hive.llap.daemon.impl.StatsRecordingThreadPool$WrappedCallable.call(StatsRecordingThreadPool.java:110) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748) 引起:java.lang.RuntimeException:映射运算符初始化失败 在 org.apache.hadoop.hive.ql.exec.tez.MapRecordProcessor.init(MapRecordProcessor.java:363) 在 org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor(TezProcessor.java:266) ... 15 更多 原因:org.apache.hadoop.hive.ql.metadata.HiveException:异步初始化失败。中止请求=假 在 org.apache.hadoop.hive.ql.exec.Operator.completeInitialization(Operator.java:461) 在 org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:395) 在 org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:568) 在 org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:520) 在 org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:381) 在 org.apache.hadoop.hive.ql.exec.tez.MapRecordProcessor.init(MapRecordProcessor.java:335) ... 16 更多 引起:org.apache.hadoop.hive.ql.metadata.HiveException:org.apache.hadoop.hive.ql.metadata.HiveException:java.lang.NullPointerException 在 org.apache.hadoop.hive.ql.exec.tez.LlapObjectCache.retrieve(LlapObjectCache.java:118) 在 org.apache.hadoop.hive.ql.exec.tez.LlapObjectCache$1.call(LlapObjectCache.java:143) ... 4 更多 引起:org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.NullPointerException 在 org.apache.hadoop.hive.ql.exec.vector.mapjoin.fast.VectorMapJoinFastHashTableLoader.load(VectorMapJoinFastHashTableLoader.java:113) 在 org.apache.hadoop.hive.ql.exec.MapJoinOperator.loadHashTableInternal(MapJoinOperator.java:331) 在 org.apache.hadoop.hive.ql.exec.MapJoinOperator.loadHashTable(MapJoinOperator.java:400) 在 org.apache.hadoop.hive.ql.exec.MapJoinOperator.lambda$initializeOp$0(MapJoinOperator.java:207) 在 org.apache.hadoop.hive.ql.exec.tez.LlapObjectCache.retrieve(LlapObjectCache.java:116) ... 5 更多 引起:java.lang.NullPointerException 在 org.apache.tez.runtime.api.impl.TezTaskContextImpl.getServiceConsumerMetaData(TezTaskContextImpl.java:190) 在 org.apache.tez.runtime.library.common.shuffle.impl.ShuffleManager.(ShuffleManager.java:264) 在 org.apache.tez.runtime.library.input.UnorderedKVInput.start(UnorderedKVInput.java:146) 在 org.apache.hadoop.hive.ql.exec.vector.mapjoin.fast.VectorMapJoinFastHashTableLoader.load(VectorMapJoinFastHashTableLoader.java:109) ... 9 更多

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

LLAP 在内部使用 MAP-REDUCE shuffle 处理程序,因为在 TEZ 代码中我们有一个硬编码的常量 TEZ_SHUFFLE_HANDLER_SERVICE_ID = "mapreduce_shuffle"。 https://github.com/apache/tez/blob/master/tez-api/src/main/java/org/apache/tez/dag/api/TezConstants.java

因此,当我们将 tez_shuffle 与 LLAP 一起使用时,它会给出“NullpointerException”。

【讨论】:

以上是关于tez shuffle 处理程序设置后失败:映射运算符初始化失败的主要内容,如果未能解决你的问题,请参考以下文章

hive 使用tez

Hive 查询执行失败

Hive tez 查询失败并出现 java.io.IOException

从 Beeline 连接时,Hive 查询在 Tez 上失败,但在 Map-Reduce 上成功

带有 tez 的 aws emr 上的 Pig 脚本偶尔会因 OutOfMemoryException 而失败

由于输入字符串的 java.lang.NumberFormatException 导致 Apache Tez 作业失败:“30s”