报错:hive tez return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask


报错背景

安装完成tez之后,hive无法正常运行。

报错现象

Status: Running (Executing on YARN cluster with App id application_1645585960771_0004)

--------------------------------------------------------------------------------
        VERTICES      STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED  KILLED
--------------------------------------------------------------------------------
Map 1                 FAILED     -1          0        0       -1       0       0
Reducer 2             KILLED      1          0        0        1       0       0
--------------------------------------------------------------------------------
VERTICES: 00/02  [>>--------------------------] 0%    ELAPSED TIME: 0.27 s     
--------------------------------------------------------------------------------
Status: Failed
Vertex failed, vertexName=Map 1, vertexId=vertex_1645585960771_0004_1_00, diagnostics=[Vertex vertex_1645585960771_0004_1_00 [Map 1] killed/failed due to:ROOT_INPUT_INIT_FAILURE, Vertex Input: lzo_test initializer failed, vertex=vertex_1645585960771_0004_1_00 [Map 1], java.lang.NoClassDefFoundError: com/esotericsoftware/kryo/Serializer
        at org.apache.hadoop.hive.ql.exec.tez.HiveSplitGenerator.initialize(HiveSplitGenerator.java:107)
        at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:278)
        at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:269)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
        at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable.call(RootInputInitializerManager.java:269)
        at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable.call(RootInputInitializerManager.java:253)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: com.esotericsoftware.kryo.Serializer
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 12 more
]
Vertex killed, vertexName=Reducer 2, vertexId=vertex_1645585960771_0004_1_01, diagnostics=[Vertex received Kill in INITED state., Vertex vertex_1645585960771_0004_1_01 [Reducer 2] killed/failed due to:OTHER_VERTEX_FAILURE]
DAG did not succeed due to VERTEX_FAILURE. failedVertices:1 killedVertices:1
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask

报错原因

配置问题,yarn资源不足。

报错解决

修改yarn-site.xml文件

<configuration>
  <property>
    <name>yarn.nodemanager.aux-servicesname>
    <value>mapreduce_shufflevalue>
  property>
  <property>
    <name>yarn.resourcemanager.hostnamename>
    <value>localhostvalue>
  property>
  <property>
    <name>yarn.log-aggregation-enablename>
    <value>truevalue>
  property>
  <property>
    <name>yarn.log-aggregation.retain-secondsname>
    <value>604800value>
  property>
  <property>  
    <name>yarn.nodemanager.resource.memory-mbname>  
    <value>20480value>  
  property>  
  <property>  
    <name>yarn.scheduler.minimum-allocation-mbname>  
    <value>2048value>  
  property>  
  <property>  
    <name>yarn.nodemanager.vmem-pmem-rationame>  
    <value>3.0value>
    <description>default value is 2.1description>
  property> 
  <property>
    <name>yarn.nodemanager.pmem-check-enabledname>
    <value>falsevalue>
  property>
  
  <property>
    <name>yarn.nodemanager.vmem-check-enabledname>
    <value>falsevalue>
  property>
configuration>