본문 바로가기

HIVE126

[hive] java.lang.NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor.<init> 오류 수정 문제 hive 2.3.9 버전을 실행하면서 다음과 같은 오류가 발생하였습니다. Exception in thread "main" java.lang.NoSuchMethodError: com.lmax.disruptor.dsl.Disruptor.(Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/ThreadFactory;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/WaitStrategy;)V at org.apache.logging.log4j.core.async.AsyncLoggerDisruptor.start(AsyncLoggerDisruptor.java:108) at org.apache.logging.lo.. 2024. 3. 30.
[hive] hive s3 연결시 hive 2.3.0, 3.0.0 이상에서 설정해야 하는 hive.conf.hidden.list 값 hive 에서 s3 를 연결할 때 core-site.xml 파일에 s3 설정 값을 정상적으로 입력하고, hadoop으로 데이터 조회를 확인하고, hive를 이용하여 테이블 생성까지 되는데, tez 나 mr을 이용한 작업을 돌릴 때 다음과 같은 오류가 발생하였습니다. Caused by: com.amazonaws.AmazonClientException: No AWS Credentials provided by SimpleAWSCredentialsProvider : org.apache.hadoop.fs.s3a.CredentialInitializationException: Access key, secret key or session token is unset at org.apache.hadoop.fs.s3a.AW.. 2024. 3. 5.
[spark] spark-shell 실행 시 발생하는 java.lang.NoSuchFieldError: JAVA_9 오류 처리 spark-shell을 실행할 때 다음과 같은 오류가 발생하는 경우가 있습니다. 24/02/22 13:09:59 INFO SparkEnv: Registering MapOutputTracker 24/02/22 13:09:59 INFO SparkEnv: Registering BlockManagerMaster 24/02/22 13:09:59 INFO BlockManagerMasterEndpoint: Using org.apache.spark.storage.DefaultTopologyMapper for getting topology information 24/02/22 13:09:59 INFO BlockManagerMasterEndpoint: BlockManagerMasterEndpoint up java.lang.. 2024. 2. 25.
[hive] metastore 메트릭 설정 하는 방법 하이브 메타스토어의 metric을 설정하려면 hive-site.xml 파일에 다음 설정을 추가해야 합니다. 다음과 같이 설정하면 /tmp/report.json 위치에 5초에 한번 씩 메트릭 설정 파일을 생성합니다. 기본 설정은 json 형태의 파일이며, JMX 형태로 출력할 수도 있습니다. hive.metastore.metrics.enabled true hive.service.metrics.file.location /tmp/report.json hive.service.metrics.file.frequency 5 seconds 다음 위치에서 설정을 확인할 수 있습니다. https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#Con.. 2024. 1. 8.
[airflow] apache-airflow-providers-apache-hive 설치 중 오류 처리 에어플로우에서 hive hook을 사용하기 위해서 apache-airflow-providers-apache-hive를 설치 하는 중 라이브러리 관련 오류가 발생하여 필요한 라이브러리를 설치 후 오류를 해결할 수 있었습니다. # sasl 오류 sasl/saslwrapper.h:22:10: fatal error: sasl/sasl.h: No such file or directory # gcc 오류 gcc: error trying to exec 'cc1plus': execvp: Not a directory 이런 오류가 발생할 때 다음의 라이브러리를 먼저 설치후 빌드 하면 됩니다. # 모든 apt 설치. # gcc, g++, libsasl2-dev 3개를 설치 하면 오류를 처리할 수 있음 RUN apt-get .. 2023. 8. 13.
[hive] hive 빌드 중 Connect to conjars.org:80 [conjars.org/54.235.127.59] failed: Operation timed out (Connection timed out) 오류 처리 hive 2.3.9 버전을 빌드 할 대 다음과 같이 conjars.org 에 접근하지 못하는 오류가 발생했습니다. 원인은 conjars.org 의 경로가 변경되어 발생하였습니다. 따라서 메이븐 리파지토리 경로를 수정해 주어야 합니다. https://conjars.wensel.net/ Conjars - Read-Only Mirror Conjars was a dead easy community jar repository for open source Cascading libraries and extensions. Conjars went online around 2011. Because Conjars was little used to host new projects, becoming a security risk.. 2023. 5. 28.
[hive] 오픈소스 hive 의 git 패치 적용 hive를 이용하다 보면 버그가 있어서 이를 패치해야 할 때가 있습니다. 이때는 git apply 명령어를 이용합니다. hive 3.1.2 소스에 HIVE-19316 오류를 패치하는 방법을 알아보겠습니다. https://issues.apache.org/jira/browse/HIVE-19316 [HIVE-19316] StatsTask fails due to ClassCastException - ASF JIRA issues.apache.org 하이브 3.1.2 소스를 사용중 위 오류가 발생하여 패치를 해야할 필요가 생겼습니다. 이때는 소스 Attatchments 의 가장 마지막 파일 HIVE-19316-branch-3.patch를 다운로드 합니다, 그리고 이 파일을 소스의 root 위치에 놓아두고 다음과 같.. 2023. 3. 6.
[trino] hive, mysql 커넥터 설정 trino는 여러 데이터소스를 커넥터를 이용해서 연결할 수 있습니다. hive와 mysql 커넥터는 다음과 같이 설정할 수 있습니다. hive 커넥터의 경우 필요한 설정 파일 위치를 지정하여 설정을 전달 할 수 있습니다. 2023. 2. 25.
[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.
[hive] 하이브 3.1.3 버전에서 java.lang.ClassCastException: org.apache.hadoop.hive.metastore.api.StringColumnStatsData cannot be cast to org.apache.hadoop.hive.metastore.columnstats.cache.StringColumnStatsDataInspector 오류 Hive 3.1.3 테이블에 데이터를 쓰고, 칼럼 stat 을 계산할 때 다음과 같은 오류가 발생하였습니다. 2022-08-16T16:25:52,536 ERROR [pool-9-thread-44] metastore.RetryingHMSHandler: java.lang.ClassCastException: org.apache.hadoop.hive.metastore.api.StringColumnStatsData cannot be cast to org.apache.hadoop.hive.metastore.columnstats.cache.StringColumnStatsDataInspector at org.apache.hadoop.hive.metastore.columnstats.merge.StringColumnSta.. 2022. 8. 19.
[hive] hiveserver2 SSL 적용 및 비라인을 이용한 연결 방법 하이브 서버2에 SSL을 적용하는 방법은 하이브서버2와 하입브서버2의 웹서버에 SSL을 적용할 수 있습니다. 주의할 점은 SSL을 적용하면 http를 이용한 접근만 가능합니다. binary 포트는 사용할 수 없습니다. http로 접근할 때 http path도 정확하게 지정해야 합니다. 하이브 서버2 연결 비라인을 이용해서 SSL 적용된 하이브 서버2에 접근할 때는 다음과 같이 접근합니다. 하이브 서버2 관련 설정 https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-hive.server2.use.SSL Configuration Properties - Apache Hive - Apach.. 2022. 7. 15.
[hive] hive 2.3 버전 log4j2 취약점 처리 방안 hive 2.3 버전은 log4j 2.6 버전을 이용하기 때문에 CVE-2021-44228 취약점을 제거해야 합니다. 취약점 https://www.popit.kr/log4j-%EB%B3%B4%EC%95%88-%EC%B7%A8%EC%95%BD%EC%A0%90-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC-%EB%B0%8F-jenkins-%EC%84%9C%EB%B2%84-%ED%99%95%EC%9D%B8-%EB%B0%A9%EB%B2%95/?fbclid=IwAR0CBgT0ZP6eLCLpPKET7KfXX3av4NGQ37io5g2Wkj4yepI07wtsEliP-Eg log4j 보안 취약점 동작원리 및 jenkins 서버 확인 방법 | Popit 최근 log4j의 보안 취약점이 크게 이슈가 되고.. 2021. 12. 13.
[hive] hive 와 db 연결에서 Public Key Retrieval is not allowed 오류가 발생하는 경우 처리 mysql 8.x나 5.x에서 데이터베이스 접속 암호를 암호화 처리 하는 경우 다음과 같은 오류가 발생할 수 있습니다. 이럴 때는 데이터베이스 커넥션 스트링에 옵션을 추가하여 문제를 해결할 수 있습니다. 오류 : Public Key Retrieval is not allowed $ /opt/hive/bin/schematool -dbType mysql -initSchema Metastore connection URL: jdbc:mysql://xxx.xx:3306/db_name?useSSL=false Metastore Connection Driver : com.mysql.cj.jdbc.Driver Metastore connection User: sha256_user org.apache.hadoop.hive.m.. 2021. 10. 6.
[presto] 프레스토(presto) 설치 및 실행 프레스토 설치 방법을 알아보겠습니다. 프레스토를 다운로드 하고 압축을 해제합니다. 프레스토의 설정 3가지를 {프레스토홈}/etc 에 설정합니다. jvm.config config.properties node.properties 커넥터를 설정합니다. {프레스토홈}/etc/catalog 에 하이브 연동을 위한 카탈로그를 설정합니다. hive.properties 하이브에 하둡 관련 설정을 전달하기 위한 설정 파일을 생성합니다. hive.properties 파일에 hdfs-site.xml, core-site.xml 파일 위치를 지정합니다. 설정 파일 카탈로그 설정 파일 실행 확인 카탈로그까지 설정 후 프레스토 CLI를 실행하고 데이터를 확인할 수 있습니다. 2021. 8. 23.
[spark] spark3와 hive3 메타스토어 연동 스파크3와 하이브3 메타스토어를 연동하는 방법은 다음과 같습니다. 스파크-하이브 라이브러리 추가 spark-hive_2.12-3.1.2.jar를 다운로드하고 ${SPARK_HOME}/jars 에 추가 jline 2.14.6 라이브러리 추가 기존 라이브러리 버전이 낮아서 다음 오류가 발생 스파크3 버전에 따라 오류가 발생하지 않으면 추가 하지 않아도 됨 ${SPARK_HOME}/conf 에 hive-site.xml 에 hive 라이브러리 추가 export SPARK_DIST_CLASSPATH=$(hadoop classpath):/opt/hive/lib/* ${SPARK_HOME}/conf 에 hive-site.xml 추가 hive-site.xml 파일을 추가하고, hive.metastore.uris 설정을.. 2021. 6. 21.
[spark] spark2와 hive2 메타스토어 연동 스파크2와 하이브메타 스토어를 연동하는 방법은 다음과 같습니다. 스파크-하이브 라이브러리 추가 spark-hive_2.11-2.4.6.jar 를 다운로드하고 ${SPARK_HOME}/jars 에 추가 스파크2용 하이브1 라이브러리 빌드를 추가 hive-cli-1.2.1.spark2.jar 를 다운로드하고 ${SPARK_HOME}/jars 에 추가 hive-beeline-1.2.1.spark2.jar hive-exec-1.2.1.spark2.jar hive-jdbc-1.2.1.spark2.jar hive-metastore-1.2.1.spark2.jar libthrift-0.9.3.jar libfb303-0.9.3.jar ${SPARK_HOME}/conf 에 hive-site.xml 추가 hive-site... 2021. 6. 21.
[hive] hive의 spark 엔진에서 Execution Error, return code 30041 오류 하이브에서 spark 엔진으로 작업할 때 Execution Error, return code 30041 오류가 발생하면 이는 스파크 엔진의 익스큐터가 실행 될 때 메모리가 부족해서 발생하거나 코어 개수가 부족할 때 발생합니다. 설정을 이용해 스파크 설정을 추가합니다. 2021. 6. 1.
[hive] hive on spark 작업 중 create Spark client due to invalid resource request: Required executor memory (9671), overhead (1706 MB), and PySpark memory (0 MB) is above the max threshold 오류 하이브에서 작업 엔진을 이용하는 중에 스파크 익스큐터의 메모리가 부족하면 이런 오류가 발생할 수 있습니다. 하이브 설정에서 스파크 익스큐터의 메모리를 설정하면 됩니다. 이 경우 스파크 익스큐터의 메모리가 9671로 설정되어 있어서 부족하여 오류가 발생합니다. 따라서 스파크 드라이버와 익스큐터의 메모리를 줄여주면 됩니다. 또는 yarn 설정에서 컨테이너에 메모리를 설정할 수 있는 메모리를 늘려주면 됩니다. Launching Job 1 out of 1 In order to change the average load for a reducer (in bytes): set hive.exec.reducers.bytes.per.reducer= In order to limit the maximum number of r.. 2021. 5. 30.
[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.
[hue] too many open sessions. stop a running query before starting a new one 오류 해결 방법 hue에서 too many open sessions. stop a running query before starting a new one 오류가 발생하는 경우 일반적인 경우 사용자가 많아서 설정된 세션 개수를 초과해서 발생합니다. 이런 경우 휴 설정의 max_number_of_sessions 값을 늘려주면 됩니다. 하지만 저의 경우 휴를 설정하면서 휴의 실행, 종료를 반복하다보니 정상적으로 종료되지 못한 세션이 존재하여 발생하였습니다. 이럴 때는 휴의 데이터베이스에서 세션정보를 찾아서 지워주면 됩니다. 아래와 같이 beeswax_session 테이블에 이전에 테스트할 때 생성한 세션의 정보가 살아 있어서 오류가 발생하여 모든 정보를 지우고 세션을 새로 생성하여 문제를 해결하였습니다. mysql> sele.. 2020. 12. 6.
[oozie] Caused by: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.HiveMain not found 오류 확인 문제 우지에서 하이브를 이용할 때 다음의 오류가 발생하는 경우가 있습니다. 이 경우는 우지의 쉐어 라이브러리(sharelib)설정을 이용하지 않을 때 로컬에서 라이브러리를 확인하지 못할 때 발생할 수 있습니다. Caused by: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.HiveMain not found at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2273) at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2367) ... 13 more 해결 방법 우지 작업 실.. 2020. 10. 28.
[hive] Caused by: org.apache.hive.com.esotericsoftware.kryo.KryoException: Unable to find class: column_name 오류 해결 방법 문제 하이브 작업중 다음과 같은 오류가 발생하였습니다. 하이브 테이블의 파티션 정보를 읽어오는 중에 문제가 발생한 것으로 생각되는데 클래스를 보면 kyro.util 관련 클래스를 사용하고 있습니다. 이는 spark에서 사용하는 클래스로 버그로 인해서 문제가 발생하고 있고, 하이브 작업에서 단독으로 작업을 할 때는 필요하지 않습니다. Serialization trace: partSpec (org.apache.hadoop.hive.ql.plan.PartitionDesc) aliasToPartnInfo (org.apache.hadoop.hive.ql.plan.MapWork) at org.apache.hadoop.hive.ql.exec.Utilities.getBaseWork(Utilities.java:463) .. 2020. 10. 12.
[Hue] Hue와 하이브 연결에서 The application won't work without a running HiveServer2 오류 해결 방법 문제 Hue를 설정할 때 하이브서버2(HiveServer2)와 연결할 때 하이브서버2의 쓰리프트 연결 모드가 http일 경우에만 동작합니다. 쓰리프트 모드가 binary일 경우 다음과 같은 오류가 발생합니다. The application won't work without a running HiveServer2 해결 방법 하이브서버2의 쓰리프트 모드 변경을 위해 hive-site.xml 파일에 설정을 변경하고 재시작합니다. hive.server2.transport.mode http 2020. 10. 4.
[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.
[hive] Gzip파일 처리 중 Unexpected end of input stream 오류 해결 방법 하이브에서 Gzip 파일로 작업 할 때 0byte 파일이 존재하면 아래와 같이 Unexpected end of input stream 오류가 발생합니다. Caused by: java.io.EOFException: Unexpected end of input stream at org.apache.hadoop.io.compress.DecompressorStream.decompress(DecompressorStream.java:165) at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:105) at java.io.InputStream.read(InputStream.java:101) at org.apache.hadoop.. 2020. 7. 17.
[hive] 맵조인과 셔플조인(Map Join vs Shuffle Join) hive의 맵조인과 셔플조인의 차이를 확인해 보겠습니다. 다음의 조인 쿼리에서 table_a는 14.7G이고, table_b는 5KB입니다. 이 테이블을 조인할 때 각 조인에 따른 성능을 확인해 보면 셔플 조인일 때는 리듀서 단계가 추가되고 맵 조인에 비하여 2배의 시간이 더 걸리는 것을 확인할 수 있습니다. # table_a와 table_b를 조인하여 join_test 테이블 생성 # table_a: 14.7 GB # table_b: 5 KB CREATE TABLE join_test AS select a.deviceid, b.cnty_cd from db_a.table_a a, db_b.table_b b where a.date = '20191020' and a.code = b.code_cd ; 작업 시간.. 2020. 6. 9.
[pyspark] pyspark와 Hive 연동 pyspark와 Hive 서버와 연동하는 방법을 알아보겠습니다. 2020. 6. 8.
[hive] collect_list()와 같은 UDAF 함수의 GC 오류 해결 방법 하이브 기본 UDAF를 사용하는 중에 Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded 오류가 발생하는 경우가 있습니다. collect_list(), collect_set()을 이용하는 경우 발생할 수 있는데 너무 많은 데이터가 집계되어 JVM의 힙사이즈를 넘어설 때 많이 발생합니다. 이럴 때는 하나의 맵에서 처리하는 데이터를 줄이고, 컨테이너의 메모리를 늘려서 문제를 해결할 수 있습니다. -- 매퍼 개수 조정 set mapreduce.input.fileinputformat.split.maxsize=8000000; set mapreduce.input.fileinputformat.split.minsize=4000000; set tez.gr.. 2020. 6. 1.
[hive] 하이브 매크로(macro) 하이브는 매크로를 이용할 수 있습니다. 생성 기본 문법은 아래와 같습니다. 칼럼 이름을 표현식에 사용할 수 있습니다. 기본 빌트인 함수를 이용하여 매크로를 생성할 수도 있습니다. 매크로는 현재 세션에만 유지됩니다. CREATE TEMPORARY MACRO macro_name([col_name col_type, ...]) expression; 매크로를 생성하는 방법은 아래와 같습니다. CREATE TEMPORARY MACRO fixed_number() 42; CREATE TEMPORARY MACRO string_len_plus_two(x string) length(x) + 2; CREATE TEMPORARY MACRO simple_add (x int, y int) x + y; CREATE TEMPORARY.. 2020. 4. 22.
[hive] This command is not allowed on an ACID table default.table_name with a non-ACID transaction manager 오류 해결 방법 하이브 트랜잭션 테이블을 조회할 때 발생하는 오류는 아래 두 가지 입니다. 트랜잭션 테이블은 현재 세션이 트랜잭션 세션이어야 하고, hive.support.concurrency=true일 때만 조회할 수 있습니다. This command is not allowed on an ACID table default.table_name with a non-ACID transaction manager FAILED: RuntimeException [Error 10264]: To use DbTxnManager you must set hive.support.concurrency=true -- 설정을 하지 않은 상태에서 ACID 테이블인 table_name을 조회할 때 오류 발생 hive (default)> select .. 2020. 3. 17.