2017-12-26 29 views
0

Ambari 2.5.3 및 HDP 2.6.3의 기본 설정이 있으며 아래의 간단한 쿼리를 실행하려고했습니다. 나는 그것이 왜 실패했는지 이해하지 못한다. 도울 수 있니?VERTEX_FAILURE로 인해 Tez DAG가 실패했습니다.

[[email protected] demo]# beeline 
Beeline version 1.2.1000.2.6.3.0-235 by Apache Hive 
beeline> !connect jdbc:hive2://localhost:10000/default hive hive 
Connecting to jdbc:hive2://localhost:10000/default 
Connected to: Apache Hive (version 1.2.1000.2.6.3.0-235) 
Driver: Hive JDBC (version 1.2.1000.2.6.3.0-235) 
Transaction isolation: TRANSACTION_REPEATABLE_READ 
0: jdbc:hive2://localhost:10000/default> create table test2 (id int, desc varchar(40)); 
No rows affected (1.216 seconds) 
0: jdbc:hive2://localhost:10000/default> insert into table test2 values (1,"aa"),(2,"bb"); 
INFO : Tez session hasn't been created yet. Opening session 
INFO : Dag name: insert into table test2 ...(1,"aa"),(2,"bb")(Stage-1) 
ERROR : Status: Failed 
ERROR : Vertex failed, vertexName=Map 1, vertexId=vertex_1514250829950_0001_1_00, diagnostics=[Vertex vertex_1514250829950_0001_1_00 [Map 1] killed/failed due to:ROOT_INPUT_INIT_FAILURE, Vertex Input: values__tmp__table__1 initializer failed, vertex=vertex_1514250829950_0001_1_00 [Map 1], java.lang.NullPointerException 
    at org.apache.hadoop.mapred.FileInputFormat.getBlockIndex(FileInputFormat.java:388) 
    at org.apache.hadoop.mapred.FileInputFormat.getSplitHostsAndCachedHosts(FileInputFormat.java:579) 
    at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:359) 
    at org.apache.hadoop.hive.ql.io.HiveInputFormat.addSplitsForGroup(HiveInputFormat.java:311) 
    at org.apache.hadoop.hive.ql.io.HiveInputFormat.getSplits(HiveInputFormat.java:413) 
    at org.apache.hadoop.hive.ql.exec.tez.HiveSplitGenerator.initialize(HiveSplitGenerator.java:155) 
    at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:273) 
    at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:266) 
    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:1866) 
    at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable.call(RootInputInitializerManager.java:266) 
    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:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
] 
ERROR : DAG did not succeed due to VERTEX_FAILURE. failedVertices:1 killedVertices:0 
Error: Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask. Vertex failed, vertexName=Map 1, vertexId=vertex_1514250829950_0001_1_00, diagnostics=[Vertex vertex_1514250829950_0001_1_00 [Map 1] killed/failed due to:ROOT_INPUT_INIT_FAILURE, Vertex Input: values__tmp__table__1 initializer failed, vertex=vertex_1514250829950_0001_1_00 [Map 1], java.lang.NullPointerException 
    at org.apache.hadoop.mapred.FileInputFormat.getBlockIndex(FileInputFormat.java:388) 
    at org.apache.hadoop.mapred.FileInputFormat.getSplitHostsAndCachedHosts(FileInputFormat.java:579) 
    at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:359) 
    at org.apache.hadoop.hive.ql.io.HiveInputFormat.addSplitsForGroup(HiveInputFormat.java:311) 
    at org.apache.hadoop.hive.ql.io.HiveInputFormat.getSplits(HiveInputFormat.java:413) 
    at org.apache.hadoop.hive.ql.exec.tez.HiveSplitGenerator.initialize(HiveSplitGenerator.java:155) 
    at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:273) 
    at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable$1.run(RootInputInitializerManager.java:266) 
    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:1866) 
    at org.apache.tez.dag.app.dag.RootInputInitializerManager$InputInitializerCallable.call(RootInputInitializerManager.java:266) 
    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:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
]DAG did not succeed due to VERTEX_FAILURE. failedVertices:1 killedVertices:0 (state=08S01,code=2) 

UPDATE 1

이것은 내가

enter image description here

+0

더 자세한 로그 메시지가 표시는 아래의 링크에서 내 대답을 시도해보십시오 https://stackoverflow.com/a/36630460/2421561 – Ambrish

+0

@Ambrish 내가 DEBUG를 활성화하고이 시도 FileInputFormat –

답변

0

동일한 문제가 발생했습니다. 실행 엔진을 MR로 변경하면 작동합니다.

+0

MR로 변경하는 작업은 프로덕션 클러스터에서 수행 할 수있는 권한이 없을 수도 있습니다. 다른 관리자는 내게 힘든 시간을 줄 수 있으므로 TEZ에서 수정해야 할 부분을 알려줄 필요가 있습니다. 너의 제안은 뭐니? –

+0

동일한 문제에 대한 R & D를 수행했지만 근본 원인을 파악하지 못했습니다. TEZ의 힙 메모리와 관련이 있습니다. 일부 속성을 변경하여 TEZ 메모리를 늘릴 수는 있지만 테이블이 클 경우 오류가 다시 표시됩니다. –

0

NPE가 mapred.FileInputFormat 관련이있을 수 하이브 설정에있는 것입니다. 입력 형식 이름이 중요합니다. hive.input.format에 대해 org.apache.hadoop.hive.ql.io.HiveInputFormat을 설정해보십시오.

세트 hive.input.format = org.apache.hadoop.hive.ql.io.HiveInputFormat;

+0

에 동일한 오류 MSG를보고하고는 didn를 –

+0

위 스크린 샷을 업데이트했습니다. –