본문 바로가기

Tez21

[hive] hive 의 mr 엔진의 오류 처리 - FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. DEFAULT_MR_AM_ADMIN_USER_ENV Hive 에서 MR 엔진으로 작업을 실행할 때 다음과 같은 오류가 발생하는 경우가 있습니다 FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. DEFAULT_MR_AM_ADMIN_USER_ENV 원인은 hadoop 라이브러리 충돌입니다. tez 0.9.2 버전에 들어있는 기본 라이브러리가 hadoop 2.7이고, 설치한 하둡 라이브러리가 2.10.2 이기 때문에 발생하는 오류입니다. 문제 해결을 위애서는 tez 에 들어있는 하둡 라이브러리를 삭제 하면 됩니다. rm hadoop-mapreduce-client-core-2.7.0.jar rm hadoop-mapreduce-client-commo.. 2024. 2. 23.
[hive] 하이브 서버2의 Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.fs.FsTracer.get 오류 수정 방법 hive 3에서 tez 0.10.1, hadoop 3.3.4와 연동 중 하이브 서버2를 실행했을 때 다음과 같은 오류가 발생하는 경우가 있습니다. 이 오류는 tez 가 하둡 3.1.3 라이브러리를 가지고 있기 때문입니다. 하둡과 하이브의 hadoop-hdfs-client 버전이 달라서 발생합니다. 하둡 라이브러리 버전을 일치하게 만들면 오류를 해결할 수 있습니다. java.lang.Error: Max start attempts 5 exhausted at org.apache.hive.service.server.HiveServer2.startHiveServer2(HiveServer2.java:1064) ~[hive-service-3.1.3.jar:3.1.3] at org.apache.hive.service... 2022. 8. 28.
[hive3] hive3와 tez 0.9.2의 guava 라이브러리 버전 변경 tez 0.9.2의 guava 라이브러리 버전은 11.0.2이고, TEZ의 라이브러리 버전은 19.0이기 때문에 그냥 사용하면 문제가 발생합니다. 하둡3의 guava 버전은 27.0-jre 이기 때문에 3개를 맞춰서 사용하기 위해서는 tez 도 버전을 변경해야 합니다. tez 의 pom.xml 의 guava 라이브러리 버전을 변경하고, 소스코드를 수정한 후 빌드를 다시 하면 됩니다. pom.xml 을 변경한 소스코드를 변경해야 합니다. Futures.addCallback 의 코드가 변경되어 파라미터가 추가 되었기 때문에 코드를 변경해 주어야 합니다. 2021. 6. 17.
[tez] TEZ ui 설정 Tez는 Yarn 애플리케이션 히스토리 서버의 정보를 이용해서 TEZ UI를 제공하고, 이 서비스를 이용해서 작업 정보를 확인할 수 있습니다. TEZ-UI 다운로드 - 파일 다운로드 tez ui는 TEZ에서 제공하는 war 파일을 웹서버를 이용해서 실행하는 형태로 진행합니다. 0.9.2 버전은 war 파일을 기본적으로 제공하고, 0.10.0 버전은 war 파일을 따로 다운로드 받아야 합니다. 메이븐 리파지토리에서 파일을 다운로드 할 수 있습니다. 버전에 맞게 선택하여 다운로드 하시기 바랍니다. https://repo1.maven.org/maven2/org/apache/tez/tez-ui/ Central Repository: org/apache/tez/tez-ui repo1.maven.org Tomcat .. 2021. 6. 16.
[hive-tez] 파일 개수와 사이즈에 따른 그룹핑 사이즈 설정과 처리 속도 차이 하이브를 이용해서 데이터를 처리할 때 파일의 개수와 사이즈가 중요합니다. 동일한 쿼리에서도 설정에 따라 속도차이가 많이 날 수 있습니다. SELECT A, count(*) FROM tbl GROUP BY A ORDER BY A; 칼럼 A로 파티셔닝 파티션당 60 여개의 ORC 파일 파일당 10~20KB 이 상황에서 TEZ엔진 기본설정으로 쿼리를 실행하면 2148초가 걸립니다. 파일의 사이즈가 작아서 매퍼가 작게 생성되지만, ORC 파일의 특성상 하나의 파일에 많은 데이터가 들어가게 되고, 이 데이터를 모두 처리하는데 많은 메모리가 소모되기 때문입니다. 이런 경우 TEZ엔진의 그룹핑 사이즈를 조절하여 매퍼의 개수를 늘려서, 하나의 매퍼가 처리하는 데이터를 줄이면 속도가 빨라지는 것을 확인할 수 있습니다. .. 2021. 2. 16.
[hive] MR, TEZ 실행엔진 라이브러리 업로드 위치 설정 하이브 실행 엔진을 설정하고 맵리듀스, 테즈를 실행하기 위해서는 실행을 위한 라이브러리를 HDFS에 업로드 하고 설정파일에 각 라이브러리의 위치를 지정해야 실행할 수 있습니다. 다음 파일의 위치는 HDFS 상의 위치입니다. MR 엔진: mapred-site.xml mapreduce.application.framework.path /hadoop/apps/mapreduce/hadoop-version.tar.gz#mapreduce TEZ 엔진: hive-site.xml tez.lib.uris /hadoop/apps/tez/tez.tar.gz 2020. 9. 29.
[spark-sql] tez.lib.uris is not defined 오류 처리 방법 Spark SQL을 이용할 때 tez.lib.uris is not defined in the configuration 오류가 발생하는 경우 hive-site.xml파일에 tez 환경 설정을 넣어주면 됩니다. : org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid configuration of tez jars, tez.lib.uris is not defined in the configuration; 설정 추가 tez.lib.uris hdfs:///apps/tez/tez.tar.gz tez.use.cluster.hadoop-libs true 2020. 1. 14.
[spark] org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid configuration of tez jars, tez.lib.uris is not defined in the configuration; 오류 해결 방법 Spark SQL을 이용할 때 다음의 오류가 발생하는 경우 tez 환경 설정을 넣어주면 됩니다. : org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid configuration of tez jars, tez.lib.uris is not defined in the configuration; 설정 tez.lib.uris hdfs:///apps/tez/tez.tar.gz tez.use.cluster.hadoop-libs true 2019. 11. 20.
[hive] TEZ 작업중 GC overhead limit exceeded 오류 처리 하이브 TEZ작업 중 발생하는 다음의 GC오류는 수행시간의 많은 부분(98%)이 GC에 들어가고, GC를 수행하여도 사용할 수 있는 메모리가 부족(2%가 복구)할 때 발생하는 오류입니다. -XX:-UseGCOverheadLimit 옵션을 이용하여 이 오류가 발생하지 않도록 설정 할 수 있습니다. 자바 프로그램에서는 -Xmx 옵션으로 힙의 용량을 늘여서 해결할 수 있습니다. 하이브에서는 컨테이너의 메모리 용량과 힙의 용량을 늘여서 해결할 수 있습니다. Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded at java.util.Arrays.copyOf(Arrays.java:3181) TEZ 컨테이너의 메모리 증설 방법은 다음과 같습니다. 또한.. 2019. 7. 5.
[hive] TEZ엔진의 리듀서 처리중 셔플 단계의 OutOfMemoryError: Java heap space 오류 처리 TEZ엔진으로 작업을 처리하는 중 다음의 오류가 발생하였습니다. 에러를 보면 셔플 단계에서 메모리 오류가 발생한 것을 확인 할 수 있습니다. 셔플 단계는 맵작업의 결과를 리듀서에 전달하는 작업으로 여러 매퍼에서 전달된 결과를 리듀서에 저장하여 정렬하는 과정에서 OOM 오류가 발생할 수 있습니다. 2019-04-05 00:11:34,008 ERROR [Thread-104] SessionState: Vertex failed, vertexName=Reducer 4, vertexId=vertex__1_05, diagnostics=[Task failed, taskId=task__1_05_000182, diagnostics=[TaskAttempt 0 failed, info=[Error: Error while run.. 2019. 4. 5.
[hive][tez] TEZ엔진의 메모리 설정 방법 TEZ 엔진을 이용할 때 메모리 부족 오류가 발생하는 곳은 AM과 MR 작업 중에 발생한다. AM은 다음의 설정으로 메모리를 설정한다. // AM의 메모리 set tez.am.resource.memory.mb=2048; // AM이 사용할 힙메모리 사이즈(tez.am.resource.memory.mb의 80%) set tez.am.java.opts=-Xmx1600m; 그리고 MR 작업에서 메모리를 설정하는 방법은 다음과 같다. // tez 작업을 진행하는 컨테이너의 메모리 크기 set hive.tez.container.size=2048; // 컨테이너에서 사용할 수 있는 힙의 메모리 크기 set hive.tez.java.opts=-Xmx1600m; // hive.tez.container.size의 80%.. 2018. 8. 3.
[hive] Container failed, exitCode=1. Exception from container-launch 오류 해결방법 hive 처리중 tez의 AM 힙메모리 옵션을 다음과 같이 설정하였더니, 아래의 오류가 발생하였다. set tez.am.java.opts=-Xmx1600; 컨테이너를 실행하는 중에 오류가 발생하였는데,메모리 설정에서 m을 빠트려서 JVM 실행중 오류가 발생한 것이다. 다음의 오류가 발생할 때는 JVM 옵션에 이상은 없는지 확인하면 될 것이다. 그리고 위의 옵션은 다음과 같이 수정한다. set tez.am.java.opts=-Xmx1600; --> set tez.am.java.opts=-Xmx1600m; Container exited with a non-zero exit code 1]], TaskAttempt 2 failed, info=[Container container_1511744605848_9336.. 2018. 4. 26.
[hive] java.lang.OutOfMemoryError: Java heap space 오류 수정 하이브 tez 엔진 처리중 발생하는 java.lang.OutOfMemoryError: Java heap space오류는 다음과 같이 설정하여 수정할 수 있다. 이번 경우는 OpenCSVSerde 에서 발생하였는데 다음과 같이 container size 를 수정하여 처리하였다. set hive.tez.container.size=4096;set hive.tez.java.opts=-Xmx3280m; ], TaskAttempt 3 failed, info=[Error: Error while running task ( failure ) : attempt_1513225774189_104839_1_00_000002_3:java.lang.RuntimeException: java.lang.OutOfMemoryError: .. 2018. 1. 3.
[Hive][Tez] TEZ에서 파일머지를 처리하는 중 App master already running a DAG 오류 처리 방법 TEZ를 이용하면서 파일 머지를 사용하면 다음과 같은 오류가 발생할 경우가 있다. 2017-11-10 05:21:48,998 INFO [Thread-140] org.apache.hadoop.hive.ql.exec.Task: Dag submit failed due to App master already running a DAGat org.apache.tez.dag.app.DAGAppMaster.submitDAGToAppMaster(DAGAppMaster.java:1368)at org.apache.tez.dag.api.client.DAGClientHandler.submitDAG(DAGClientHandler.java:140)at org.apache.tez.dag.api.client.rpc.DAGClientA.. 2017. 11. 10.
[hadoop] MR과 TEZ의 차이 Apache Tez – Present and Future from DataWorks Summit MR은 일반적으로 다음과 같은 단계를 거칩니다. 1. 파일에서 데이터를 읽음 2. 매퍼작업 - 임시 결과를 출력 3. 셔플과 정렬 - 맵의 임시 결과를 읽고, 이동하고, 다시 씀 4. 리듀서작업 - 임시 결과를 읽음 5. 결과 출력 테즈는 이 모든 작업을 메모리 상에서 처리합니다. 임시 데이터는 메모리에서 처리합니다. 따라서 MR에 비해 디스크 IO가 줄어들어서 속도가 빨라집니다. 2017. 10. 24.
[hive] tez로 처리중 File Merge 부분에서 오류 작업중 hive에서 tez 엔진으로 처리중 파일 머지를 실행하면 다음과 같은 오류가 발생하는 것을 확인하였다. 2017-10-24 01:26:03,407 INFO [Thread-152] SessionState: File Merge: 0/12017-10-24 01:26:03,412 INFO [Thread-153] org.apache.hadoop.hive.ql.exec.Task: Dag submit failed due to App master already running a DAG at org.apache.tez.dag.app.DAGAppMaster.submitDAGToAppMaster(DAGAppMaster.java:1368) at org.apache.tez.dag.api.client.DAGClientHa.. 2017. 10. 24.
[hive] tez 실행중 메모리 오류 발생 하이브에서 tez 엔진을 이용하여 작업중 다음과 같은 오류가 발생하는 경우이는 tez의 AM 기본메모리가 1G로 설정되어서 발생하는 오류이다. 기본메모리 이상으로 메모리를 설정하여 진행하면 된다. FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask. Application application_*** failed 2 times due to AM Container for appattempt_*** exited with exitCode: - ***Current usage: 1.1 GB of 1 GB physical memory used;*** 다음의 옵션을 이용하여 AM의 메모리를 늘려서 처리하면 오류가 해.. 2017. 9. 20.
[hive][error] TEZ 사용시 Caused by: java.lang.ArrayIndexOutOfBoundsException: 1024 오류 hive 2.1.0 에서 ORC 파일 포맷 이용중 다음의 오류가 발생하는 경우가 있다. Caused by: java.lang.ArrayIndexOutOfBoundsException: 1024 이 경우 다음의 지라와 같이 Hive 버그일 가능성이 높다. 이럴때는 이런 해결방법이 있다. hive 버전업 또는 패치 적용ORC 말고 다른 포맷으로 데이터를 저장 후 다시 ORC 포맷으로 저장파일 머지중 오류가 발생했다면 머지 기능을 잠시 off 리듀서를 1개로 설정하여 처리 https://issues.apache.org/jira/browse/HIVE-14483 2017. 8. 24.
[hive][tez] tez 처리중 tez.lib.uris is not defined in the configuration 오류 수정 2017-02-06 02:11:55,396 ERROR [Thread-117] org.apache.hadoop.yarn.YarnUncaughtExceptionHandler: Thread Thread[Thread-117,5,main] threw an Exception.java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid configuration of tez jars, tez.lib.uris is not defined in the configurationat org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:604)at org.apache.h.. 2017. 2. 7.
[hive][tez][mr] 하이브 처리중 매퍼의 개수 설정하는 벙법 하이브의 맵리듀스 처리중 속도가 너무 느리다면 매퍼의 개수를 늘려서 처리를 해볼 수 있다. 이럴때 매퍼의 개수를 늘이기 위한 설정은 다음과 같다. * MR 엔진일때와 Tez 엔진일때 다른 설정을 이용한다. SET hive.exec.reducers.bytes.per.reducer=67108864;SET mapreduce.input.fileinputformat.split.minsize.per.node=134217728;SET mapreduce.input.fileinputformat.split.minsize.per.rack=134217728;SET mapreduce.input.fileinputformat.split.minsize=67108864;SET mapreduce.input.fileinputformat... 2017. 1. 17.
[hadoop][tez] 아파치 테즈(Apache tez) 프레임워크 아파치 하둡2.0의 YARN 위에서 동작하는 비동기 사이클 그래프 프레임워크이다. pig, hive와 연동하여 사용하면 기존의 mapreduce에 비하여 성능이 향상되는 효과를 얻을 수 있다. hadoop을 크게 저장을 위한 hdfs와 분산 처리를 위한 mapreduce로 나눌 수 있는데,mapreduce 부분이 처리과정이 분할되면 다음 처리를 위한 데이터를 hdfs에 저장하게 되는데 이 부분을 제거하고 데이터를 메모리에 저장하게 함으로써 처리 성능을 높여 준다. 기존에 stage 사이의 정보가 hdfs에 저장되는 것을 메모리를 활용하여 처리함으로써 성능을 높여 주는 것이다. * stage 가 나누어 지지 않는 작업의 경우 크게 향상 되지 않을 수도 있다. ** MR에 비하여 작업이 오히려 늦어질수도 있.. 2016. 12. 12.