본문 바로가기

빅데이터413

[airflow] 에어플로우 로그를 정리할 때 사용할 수 있는 명령어 에어플로우가 오랜 기간 실행되면 에어플로우의 로그와 DAG의 실행 로그가 로컬에 쌓이게 됩니다. 이 로그를 주기적으로 정리해 주어야 할 때 사용할 수 있는 명령어 입니다.  다음은 로그 파일의 사이즈를 0으로 초기화 하는 명령어 입니다. truncate -s 0 airflow-worker.errcat /dev/null > airflow-worker.err: > airflow-worker.err> airflow-worker.err  DAG 로그를 초기화 하기 위해서는 find 명령어를 이용합니다. 폴더로 파일이 생성되기 때문에 rm 명령어를 이용하고, DAG이 생성되는 날짜를 이용하여 처리합니다. # airflow/logs 폴더에서 사용find ./ -name "*2024-10-11* -maxdepth 2.. 2024. 10. 11.
[ranger] 레인저 HDFS plugin 에서 User does not have permission for this operation 오류 레인저 HDFS 플러그인을 설정하는데 다음과 같은 오류가 발생하면서 플러그인 정보를 가져가지 못하는 문제가 있었습니다 . User does not have permission for this operation 이는 커버러스 설정된 레인저는 지정한 사용자만 플러그인을 가져갈 수 있게 설정되어서 그렇습니다. 레인저의 플러그인 설정 정보에 다음 값을 추가하면 됩니다 . "policy.download.auth.users": "hdfs" 2024. 10. 10.
[spark] log4j 설정을 이용하여 스파크 쓰리프트 서버의 로그를 파일로 출력하는 방법 log4j 설정을 외부에서 주입하는 방법을 정리합니다.문제spark 스리프트 서버를 실행할 때는 로그를 파일로 저장하고, spark beeline 을 실행할 때는 콘솔로 출력해야 했습니다. 같은 로그 설정 파일을 이용하기 때문에 하나의 파일로 두 가지 설정을 출력해야 했습니다.해결 방법log4j 에 기본 설정을 두고, 외부에서 설정이 주입되면 외부 설정을 이용할 수 있게 하였습니다.다음과 같이 설정하여 외부에서 정보가 입력되지 않으면, 설정에 저장된 spark.root.logger 설정을 이용하고, 외부에서 입력되면 외부의 설정이 기본값을 덮어 써서 외부의 값을 이용하게 됩니다.# log4j 설정 spark.root.logger=INFO,consolespark.log.dir=.spark.log.file=.. 2024. 9. 30.
[Tez] Tez 0.10.3과 Hadoop 3.3.6을 연결할 때 발생하는 오류 Tez 0.10.3 와 Hadoop 3.3.6을 설치하니 다음과 같은 오류가 발생하였습니다. 2024-09-05T06:53:52,466 INFO [main] conf.HiveConf: Using the default value passed in for log id: 693153d4-f980-4b4a-84b9-f55371e343d92024-09-05T06:53:52,471 INFO [main] session.SessionState: Error closing tez sessionjava.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.Exception: java.lang.IllegalAccessError: tried to.. 2024. 9. 23.
[hue] Secure HDFS와 연동에서 Error 401 Authentication required 오류가 발생하는 경우 Hue와 SecureHDFS를 연동하는 방법을 정리하면서 발생한 다음의 오류를 해결하는 방법도 알아보겠습니다.HTTP ERROR 401Problem accessing /webhdfs/v1. Reason: Authentication requiredPowered by Jetty://  사용 버전hadoop: v2.10.2Hue: 4.11.0Hue와 Secure HDFS 연결 설정hadoop은 커버로스 설정을 처리하고, Hue에서 커버로스 하둡을 연동하기 위해서는 hue.ini 에 다음과 같이 설정합니다.[hadoop][[hdfs_clu.. 2024. 9. 3.
[hdfs] HA 구성된 HDFS의 journalnode 3대 중 1대의 서버가 장애가 발생했을 때 대응 (Journal Storage Directory /hadoop/hdfs/journal/edit/user-hadoop not formatted ; journal id: user-hadoop) 장애 상황HA 구성 된 하둡은 3대의 저널 노드(journalnode)를 필요로 하는데 그 중 1대의 노드에 장애가 발생하여 서버가 포맷 되었습니다. 이로 인해 1대의 저널 노드를 새로 구축해야 하는 상황이 되었습니다.  오류를 해결하기 위해서 서버를 새로 설치하고 실행하니 다음과 같은 오류가 발생하였습니다. 2024-07-18 06:31:25,405 INFO org.apache.hadoop.ipc.Server (IPC Server handler 3 on default port 8485): IPC Server handler 3 on default port 8485, call Call#944181936 Retry#0 org.apache.hadoop.hdfs.qjournal.protocol.QJournalP.. 2024. 7. 18.
[airflow] 에어플로우에서 생성하는 로그의 umask 설정 Apache Airflow에서 로그 파일의 umask를 변경하려면, Airflow 설정 파일(airflow.cfg)에서 설정을 변경하거나, 소스코드 수정을 통해 적용할 수 있습니다. 1. Airflow 설정 파일 (airflow.cfg) 수정Airflow 설정 파일(airflow.cfg)에서 umask 설정을 직접 변경할 수 있는 옵션은2.6.0 이후 적용되었습니다. file_task_handler_new_file_permissions 옵션을 설정하여 적용할 수 있습니다.  https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#file-task-handler-new-file-permissions Configuration.. 2024. 6. 15.
[ranger] apache ranger 빌드 방법 정리 Linux 기준으로 Apache Ranger를 빌드하는 방법을 단계별로 정리하겠습니다. Apache Ranger는 Hadoop 생태계에서 데이터 보안을 관리하기 위한 도구입니다.Ranger를 빌드하려면 Java, Maven, Git 등이 필요합니다.1. 필수 소프트웨어 설치JavaApache Ranger는 Java로 작성되었기 때문에 JDK가 필요합니다. JDK 8 이상이 필요합니다. openjdk8에서 오류가 발생하여 zulu jdk로 빌드릴 진행합니다. wget https://cdn.azul.com/zulu/bin/zulu8.78.0.19-ca-jdk8.0.412-linux_x64.tar.gztar zxf zulu8.78.0.19-ca-jdk8.0.412-linux_x64.tar.gzexport JA.. 2024. 6. 15.
[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.