본문 바로가기

빅데이터405

[Iceberg] 아파치 Iceberg 사용 방법. Apache Iceberg 는 데이터 포맷 입니다. jar 라이브러리만 Spark, Hive 등에 추가하면 사용할 수 있습니다. 따로 컴포넌트를 실행해야 하는 것은 아닙니다. 테이블을 생성하면 다음과 같은 형태로 저장되고, HDFS 위치에 메타 정보가 보관됩니다. 하이브 메타스토어의 역할이 HDFS위치에 파일로 저장됩니다. 사용 방법은 다음 링크에서 확인 부탁드립니다. https://wikidocs.net/228567 10-Iceberg Apache Iceberg는 대용량 데이터의 효율적인 관리와 쿼리를 지원하기 위한 **오픈 소스 데이터 테이블 포맷 및 관리 시스템**입니다. Iceberg는 Hadoop 및 A… wikidocs.net 2024. 4. 14.
[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] 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.
[trino] trino chart 에서 https 적용 방법 trino를 chart를 이용하여 설치하고, 인그레스에 tls 를 설정하면 https 를 이용하여 통신할 수 있습니다. 하지만 인그레스에만 설정을 하게 되면 코디네이터와 워커의 내부 통신은 http를 이용하게 되고, 쿼리를 실행할 때 반환되는 nextUri 값이 http로 반환되어 오류가 발생합니다. trino에서는 이것을 처리하위한 설정을 제공합니다. config.properties 파일에 다음 설정을 추가하면 내부 통신을 반환할 때 https로 설정하여 반환합니다. http-server.process-forwarded=true https://trino.io/docs/current/security/tls.html#use-a-load-balancer-to-terminate-tls-https TLS and.. 2024. 1. 9.
[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.
[hdfs] java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as 192.168.0.103:50010 오류 HDFS 운영 중 다음과 같은 오류가 발생하였습니다. 23/12/18 15:22:43 INFO hdfs.DataStreamer: Exception in createBlockOutputStream java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as 192.168.0.103:50010 at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:118) at org.apache.hadoop.hdfs.DataStreamer.createBlockOutputStre.. 2023. 12. 26.
[oozie] java.lang.NoSuchMethodError: org.apache.log4j.config.PropertySetter.activate 오류 해결 방법 oozie 5.2.1에서 서버를 실행 할 때 다음의 오류가 발생하였습니다. Exception in thread "main" java.lang.NoSuchMethodError: org.apache.log4j.config.PropertySetter.activate()V at org.apache.log4j.PropertyConfigurator.parseAppenderFilters(PropertyConfigurator.java:923) at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:845) at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigu.. 2023. 11. 13.
[openstack] 오픈 스택의 allowed address pairs를 이용하여 VIP 구현하는 방법 VIP(Virtual IP)는 서버 그룹의 대표 IP를 생성하여 여러 대의 서버에 설정하고, HA 를 구성할 수 있게 해줍니다. 오픈 스택에서는 allowed address pairs를 이용하여 서버에 IP를 부여하고, keepalived 를 설치하여 HA를 구성할 수 있습니다. allowed address pairs 설정 VM을 2개 생성 vm1: 192.168.0.1 vm2: 192.168.0.2 Port를 1개 생성 192.168.0.102 로 생성 명령어 실행 openstack port set --allowed-address 192.168.0.102/22 [서버 1의 Port ID] openstack port set --allowed-address 192.168.0.102/22 [서버 2의 Por.. 2023. 11. 11.
[openstack] 오픈스택 서버를 다른 하이퍼바이저로 옮기는 방법 오픈스택을 사용할 때 하이퍼 바이저가 실행된 서버의 상태에 이상이 생겨서 서버를 다른 하이퍼 바이저로 옮겨야 할 때 shelve 기능을 이용할 수 있습니다. OpenStack에서 "shelve"는 가상 머신(VM)의 일시 중지 및 저장 기능을 나타냅니다. 이것은 VM을 현재 상태로 저장하고 나중에 다시 복원할 수 있는 유용한 기능입니다. "shelve" 작업은 VM의 가동 중지 없이도 실행할 수 있으며, VM의 디스크 이미지와 상태 정보를 OpenStack 데이터베이스에 저장합니다. # shelve openstack server shelve [서버 ID] # unshelve openstack server unshelve [서버 ID] # 특정 호스트의 서버 목록 확인 openstack server lis.. 2023. 11. 7.
[trino] 트리노에서 조회 할 때 column 'xxxx' cannot be resolved ... SYNTAX_ERROR 트리노를 이용해서 데이터를 조회할 때 where 조건에서 다음과 같은 오류가 발생하였습니다. 이는 문자열을 쌍 따옴표(") 에서 홑 따옴표(')로 변경하면 오류가 해결됩니다. 트리노는 쌍 따옴표는 칼럼, 테이블 이름을 표현하는데 사용하고, 문자열은 홑 따옴표로 표현하기 때문에 이를 정확하게 사용해야 합니다. 2023. 10. 15.
[openstack] 시큐리티 그룹을 여러개 설정 하기 오픈 스택의 시큐리티 그룹은 하나의 Port 에 여러 개를 설정할 수 있습니다. 시큐리티 그룹의 추가/삭제는 set 명령을 이용해서 처리할 수 있습니다. # 시큐리티 그룹 추가 openstack port set [Port-ID] --security-group [Security-Group-ID] # 시큐리티 그룹 삭제 openstack port set [Port-ID] --security-group [Security-Group-ID] 그리고 여러 개의 시큐리티 그룹이 설정 되었을 때, 중복되는 Port 에 대한 설정은 가장 관대한 설정으로 적용됩니다. AWS 의 시큐리티 그룹 설정에 다음과 같은 내용이 있습니다. 따라서 같은 포트에 대하여 시큐리티 그룹을 설정 할 때는 설정 후 테스트가 꼭 필요합니다. 특.. 2023. 8. 19.
[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.
[zookeeper] 주키퍼 logback.xml 을 이용한 파일 로그 출력 logback을 이용해서 주키퍼 로그를 출력할 때 logback.xml 파일을 이용해서 설정 할 수 있습니다. property 공통적으로 사용하는 설정을 저장 appender 로그 출력 방식에 대한 설정 콘솔 출력 롤링 파일 출력 설정 root 레벨 설정. 출력하고자 하는 대상에 대한 설정 다음은 콘솔, 롤링 파일 설정이 있지만 롤링 파일만 출력하는 설정의 예제 입니다. 2023. 8. 13.
[airflow] PythonOperator의 op_args, op_kwargs 변수 전달 파이썬 오퍼레이터에 변수를 넘기는 방법을 알아보겠습니다. 파이썬 오퍼레이터(PythonOperator)는 `op_args`, `op_kwargs` 두 가지 변수를 받을 수 있습니다. op_args operator를 생성할 때 op_args 변수로 전달 op_kwargs 오퍼레이터에 전달 되는 모든 변수를 전달 op_kwargs 의 키에 맞는 변수를 선언하면 자동으로 전달 params 는 에어플로우 DAG 을 실행할 때 전달한 파라미터 (Trigger DAG w/ config 이용) 2023. 7. 2.
[hdfs] Datanode 실행 중 You cannot have a rack and a non-rack node at the same level of the network topology. 오류 데이터 노드 실행 중 다음과 같은 오류가 발생하는 경우 데이터 노드의 네트워크 토폴로지 설정이 네임노드에 갱신되지 않아서 발생 하였습니다. core-site.xml 의 설정이 네트워크 토폴로지 설정을 이용하도록 변경된 상태에서 네임노드를 재부팅하지 않고, 운영하다가 데이터 노드를 재부팅 하니 다음과 같은 오류가 발생하였습니다. 2023-06-09 00:24:48,434 WARN org.apache.hadoop.hdfs.server.datanode.DataNode (BP-717439599-10.0.0.1-1679643941117 heartbeating to user-host.com/10.0.0.1:8020): RemoteException in register org.apache.hadoop.ipc.Remo.. 2023. 6. 9.
[k8s] k8s 노드에 ssh 키없이 접근 하는 방법(Lens의 node shell 파드 이용하는 방법) 오픈 렌즈에서는 ssh 키 없이 노드에 접근할 수 있습니다 이는 nsenter 명령어를 이용하여 키 없이 노드에 접근할 수 있습니다. https://github.com/lensapp/lens/blob/5670312c474eb5b6d506a3793863707a7df76775/src/main/node-shell-session.ts#L57-L87 GitHub - lensapp/lens: Lens - The way the world runs Kubernetes Lens - The way the world runs Kubernetes. Contribute to lensapp/lens development by creating an account on GitHub. github.com 소스코드는 이곳에서 확인할 수.. 2023. 6. 2.
[k8s] The PersistentVolume "pv" is invalid: nodeAffinity: Invalid value: core.VolumeNodeAffinity{Required:(*core.NodeSelector)(0xc00beeda70)}: field is immutable pv 설정시 발생하는 다음 오류는 노드 셀렉터에 설정된 노드의 이름과 노드가 매치되지 않을 때 발새합니다. nodeSelectorTerms 에 설정된 노드 명과 현재 조회되는 노드가 일치 하는지 확인 노드 명이 맞다면 현재 사용중인 kubeconfig 가 배포하고자 하는 클러스터 인지 확인 2023. 6. 2.
[helm] Helm chart에서 Error: create: failed to create: Request entity too large: limit is 3145728 오류 처리 Helm 차트를 이용해서 k8s 클러스터에 자원을 설치하려고 할 때 이 오류가 발생하는 경우가 있습니다. 이는 차트를 실행하는 기본 위치에 존재하는 파일 사이즈가 3MB 를 넘어서면 발생합니다. 아래와 같이 실행할 경우 현재 경로에 파일이 3MB 를 넘어서는 경우 오류가 발생합니다. 이럴 때는 용량이 큰 파일을 삭제하거나, .helmignore 파일에 추가하면 됩니다. # ./ 위치의 Chart.yaml 파일을 읽어서 mysql 차트 설치 helm upgrade --install --force \ mysql-local \ . \ --namespace mysql-user \ --values ./user-values.yaml 다음과 같이 .helmignore 파일을 생성하고 차트 설치에 필요하지 않은 파일을.. 2023. 5. 30.
[k8s] pod has unbound immediate persistentvolumeclaims 오류 k8s에서 pv 를 설정할 때 다음과 같은 오류가 발생하는 경우가 있습니다. 이 경우 저는 다음의 순서로 확인하여 오류를 해결 할 수 있었습니다. pv 오류 pv에 설정된 노드가 오류가 있는 경우 존재하지 않는 노드에 pv 를 설정한 경우 입니다. nodeSelectorTerms의 설정을 확인하면 됩니다. 설정된 디렉토리가 없는 경우 pv의 local.path 에 설정된 디렉토리 경로가 없거나, 권한이 없을 경우 입니다. 디렉토리가 존재하는지 확인합니다. pvc 오류 pv 와 pvc 가 연결이 되지 않는 경우 pv와 pvc가 연결되지 않는 경우입니다. 이름과 스토리지 클래스를 다시 확인합니다. 스토리지 클래스가 다른 경우 차트에 설정된 스토리지 클래스의 pv 가 존재하지 않는 경우 입니다. 스토리지 클래.. 2023. 5. 29.
[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.
[hue] hue 빌드 중 my_config.h: No such file or directory 오류 처리 하는 방법 hue 빌드 중 다음과 같은 오류가 발생하는 경우가 있습니다. building '_mysql' extension x86_64-linux-gnu-gcc -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -ffile-prefix-map=/build/python2.7-W40Ff2/python2.7-2.7.18=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/include/mysql -.. 2023. 4. 17.
[jupyter] 우분투 20에 쥬피터 노트북 설치 및 pyspark 연동 하기 spark 2.4.6 과 쥬피터 노트북을 연동하여 pyspark 를 실행하는 방법을 알아보겠습니다. 주의 사항 spark 2.4.6은 파이썬 3.8 버전 이상을 지원하지 않습니다. 우분투 20 이상은 파이썬 3.8 버전이 기본 설치 되어 있어서 파이썬 3.6이나 3.7을 설치하고 연동하여야 합니다. 쥬피터 노트북은 사용하고자 하는 파이썬 버전의 pip로 설치하여야 합니다. apt를 이용하여 쥬피터 노트북을 설치하면 우분투의 기본 파이썬 버전에 설치 됩니다. 우분투 20기준 파이썬 3.8에 설치 됩니다. 설치 방법 파이썬 3.6 버전 설치. 우분투 20기준 소스를 빌드해서 설치 해야 함 쥬피터 노트북 설치 pip로 설치 ipython 커널 설치 ipython 커널을 설치해야 노트북에서 이용 가능 스파크 파.. 2023. 3. 21.
[jupyter] spark 2.4.6 에서 jupyter 노트북 연동 시 TypeError: an integer is required (got type bytes) 오류 처리 스파크 2.4.6 버전에서 jupyter 노트북을 연결할 때 다음과 같은 오류가 발생합니다. 스파크 2.4.6은 python2 버전을 사용하게 되어 있는데, jupyter 노트북이 python3 으로 되어 있어서 오류가 발생합니다. TypeError: an integer is required (got type bytes) 스택 오버플로우 등에서 추천하는 해결 방법은 파이썬 3.7로 쥬피터를 실행하는 방법입니다. 기존에 설치된 파이썬 버전을 확인하고 3.7 버전을 설치 하면 동작합니다. 또는 스파크 소스코드를 수정하여 처리할 수 있습니다. SPARK_HOME/python/pyspark/cloudpickle.py 파일을 수정합니다. https://stackoverflow.com/questions/587003.. 2023. 3. 16.
[kafka] golang kafka 클라이언트 SSL 설정 golang의 kafka 클라이언트에서 SSL 설정된 카프카 브로커로 연결하기 위해서는 다음의 설정이 필요합니다. config 에 다음의 설정을 추가하고 기존에 사용한 것과 동일하게 호출하면 됩니다. 2023. 3. 13.
[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.
[zookeeper] 주키퍼 로그, 스냅샷 파일 정리 주키퍼의 정보가 변할 때 주키퍼는 트랜잭션 로그와 스냅샷을 이용해서 현재 상태를 저장합니다. 주키퍼가 재시작 할 때 이 파일들을 읽어서 정보를 재구성합니다. 따라서 이 파일을 많이 보관하게 주키퍼가 초기 실행될 때 많은 메모리를 필요하게 됩니다. 주키퍼 3.4.0 이상에서는 이 파일들을 주기적으로 정리해주는 옵션이 있어서 이 옵션을 이용해서 파일을 처리할 수 있습니다. 2023. 3. 6.
[trino] hive, mysql 커넥터 설정 trino는 여러 데이터소스를 커넥터를 이용해서 연결할 수 있습니다. hive와 mysql 커넥터는 다음과 같이 설정할 수 있습니다. hive 커넥터의 경우 필요한 설정 파일 위치를 지정하여 설정을 전달 할 수 있습니다. 2023. 2. 25.
[k8s] Failed to contact API server when waiting for CSINode publishing: Get https://1.1.1.1:6443/apis/storage.k8s.io/v1/csinodes/k8s-server: x509: certificate has expired or is not yet valid 오류 처리 방법 k8s 서버의 노드 상태가 NotReady 가 되어서 원인을 확인해 보니 kubelet 에서 오류가 발생하고 있었습니다. k8s 서버에서 다음과 같은 오류가 발생하면 k8s 서버가 사용하는 인증서를 갱신해 주어야 합니다. Failed to contact API server when waiting for CSINode publishing: Get https://1.1.1.1:6443/apis/storage.k8s.io/v1/csinodes/k8s-server: x509: certificate has expired or is not yet valid 인증서의 위치는 /etc/kubernetes/pki 입니다. 이 위치에 있는 인증서를 최신버전으로 변경해 주면 됩니다. - 인증서 위치: /etc/kuberne.. 2023. 2. 16.