본문 바로가기

전체 글1109

[zookeeper] 주키퍼 로그, 스냅샷 파일 정리 주키퍼의 정보가 변할 때 주키퍼는 트랜잭션 로그와 스냅샷을 이용해서 현재 상태를 저장합니다. 주키퍼가 재시작 할 때 이 파일들을 읽어서 정보를 재구성합니다. 따라서 이 파일을 많이 보관하게 주키퍼가 초기 실행될 때 많은 메모리를 필요하게 됩니다. 주키퍼 3.4.0 이상에서는 이 파일들을 주기적으로 정리해주는 옵션이 있어서 이 옵션을 이용해서 파일을 처리할 수 있습니다. 2023. 3. 6.
[intellij] maven 으로 빌드시 JAVA_HOME 설정 하는 방법 인텔리j에서 메이븐으로 빌드를 할 때 JAVA_HOME 설정이 되지 않아서 오류가 발생하는 경우가 있습니다. 이때 다음의 순서로 JAVA_HOME을 설정합니다. 먼저 Maven 탭의 수명주기에서 사용하고자 하는 프로파일을 선택하고, '실행 구성 수정'을 클릭합니다. 그리고 아래쪽의 Java 옵션에서 환경 변수에 사용하고자 하는 자버 버전의 경로를 입력합니다. 2023. 3. 4.
[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.
[MySQL] 외래키 제약으로 인한 오류가 발생할 때 체크 끄는 방법 Cannot change column used in a foreign key constraint 오류 처리 테이블의 칼럼 속성을 수정할 때 Cannot change column used in a foreign key constraint 오류가 발생하는 경우가 있습니다 이 오류가 발생하는 경우는 수정하고자 하는 테이블의 속성에 연결되 외부키의 속성이 변경되지 못해서 발생합니다. 이 경우 다음과 같이 해당 옵션을 끄고 작업을 처리할 수 있습니다. SET FOREIGN_KEY_CHECKS = 0; -- 수정 SET FOREIGN_KEY_CHECKS = 1; 2022. 12. 29.
[hdfs] yarn 작업 중 s3a 연결 오류 처리: com.amazonaws.AmazonClientException: No AWS Credentials provided by BasicAWSCredentialsProvider EnvironmentVariableCredentialsProvider InstanceProfileCredentialsProvider : com.amazonaws.SdkClientException.. yarn 에 s3를 연결하여 작업을 처리할 때 모든 작업을 다 했는데도 다음과 같은 오류가 발생하면서 연결이 되지 않는 다면 리소스 매니저, 노드 매니저를 재부팅해야 할 필요가 있습니다. Failing this attempt.Diagnostics: [2022-11-25 19:18:38.425]java.io.InterruptedIOException: doesBucketExist on peb-test-bucket: com.amazonaws.AmazonClientException: No AWS Credentials provided by BasicAWSCredentialsProvider EnvironmentVariableCredentialsProvider InstanceProfileCredentialsProvi.. 2022. 12. 3.
[argocd] ERRO[0000] Choose a context name from: 오류 처리 argocd 에 클러스터를 추가할 때 다음과 같은 오류가 발생하면서 클러스터가 추가 되지 않는 오류가 발생하는 경우가 있습니다. 이때는 추가하고자 하는 클러스터의 이름을 설정하고, 추가 여부를 묻는 질문에 y를 입력하면 클러스터를 추가할 수 있습니다. $ argocd cluster add --kubeconfig kubeconfig.yaml ERRO[0000] Choose a context name from: CURRENT NAME CLUSTER SERVER * k8s-server@admin k8s https://k8s-server:6443 # 클러스터 추가 명령: 명령 실행 후 [y/n] 여부를 물어 오면 y 입력이 필요 함 $ argocd cluster add --kubeconfig kubeconfig.. 2022. 11. 29.
[k8s] Ready,SchedulingDisabled 상태 수정 k8s에서 노드의 상태가 이상할 때 노드의 파드를 제거하는 drain 명령을 이용하면 노드가 SchedulingDisabled 상태로 변경됩니다. 이 후 노드의 상태를 다시 복원하고 싶을 때는 uncordon 을 이용합니다. # 이상한 상태의 노드 제거 $ kubectl drain [노드명] # 노드 상태 확인 $ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master-1 Ready control-plane,master 189d v1.21.11 k8s-master-2 Ready control-plane,master 189d v1.21.11 k8s-master-3 Ready control-plane,master 189d v1.21.11 k8s-worker-.. 2022. 11. 29.
[k8s] harbor 와 연결하기 위해서 사용자 인증 추가 하는 방법 k8s에서 harbor와 연결할 때 사용자 인증이 필요합니다. harbor의 사용자 인증을 k8s의 secret에 추가하고, k8s의 yaml 정보에 imagePullSecret 정보로 추가해야 합니다. 먼저 harbor의 CLI secret을 확인합니다. CLI secret은 시간에 따라 변경되기 때문에 시간이 지나면 새로 받아야 합니다. 이 정보를 이용해서 k8s의 secret을 생성합니다. docker-password에 cli_secret 정보를 추가해야 합니다. kubectl create secret docker-registry k8s-private-registry \ --docker-server=harbor.io \ --docker-username=user_name \ --docker-passw.. 2022. 11. 16.
[python] request 함수를 사용하여 오류가 발생했을 때 재작업하는 방법 request 를 이용하여 http 요청을 처리할 때 재작업을 해야 하는 경우가 있습니다. 하나는 서버에 연결후 정상적으로 응답이 와서 응답을 보고 재작업을 해야 하는 경우 retry 모듈을 이용하여 재작업을 처리할 수 있습니다. 다른 방법은 서버에 정상적으로 연결이 되지 않는 경우 다시 재작업을 해야 하는 경우 데코레이터 모듈을 이용하여 재작업을 할 수 있습니다. retry 모듈 retry 모듈은 서버의 응답에 따라서 재작업을 진행할 수 있습니다. 서버가 특정 응답을 보낼때는 재작업을 한다는 룰을 가질 수 있는 경우 사용할 수 있습니다. https://brownbears.tistory.com/613 [Python] requests 모듈 retry 추가하기 requests 모듈은 https://brown.. 2022. 11. 16.
[yarn] 커버로스 적용된 nodemanager에서 Linux Container Executor reached unrecoverable exception 오류 노드매니저가 Linux Container Executor reached unrecoverable exception 오류를 출력하면서 UNHEALTHY 상태로 들어가는 경우가 있습니다. 이 경우 실행된 컨테이너가 35번 오류를 출력하면서 종료 되었을 때 발생합니다. 다음과 같이 오류일 가능성이 있으므로 지속적으로 발생한다면 패치를 하거나, 버전을 올려야 합니다. 우선은 간단하게 캐쉬 파일 위치를 삭제하고, 재부팅하는 것으로 문제를 해결할 수 있습니다. https://issues.apache.org/jira/browse/YARN-9833 [YARN-9833] Race condition when DirectoryCollection.checkDirs() runs during container launch - A.. 2022. 11. 16.
[yarn] InvalidResourceRequestException: Invalid resource request, requested memory < 0, or requested memory > max configured, requestedMemory=-1, maxMemory=102400 에러 하둡에서 mapreduce를 이용해서 작업을 진행할 때 다음과 같은 오류가 발생하면서 작업이 진행되지 않을 때가 있습니다. 2022-11-07 17:55:58,250 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Before Scheduling: PendingReds:0 ScheduledMaps:12 ScheduledReds:0 AssignedMaps:0 AssignedReds:0 CompletedMaps:0 CompletedReds:0 ContAlloc:0 ContRel:0 HostLocal:0 RackLocal:0 2022-11-07 17:55:58,270 ERROR [RMCommun.. 2022. 11. 9.
[airflow 운영] 에어플로우 로그 정리 에어플로우 DAG 이 실행되면 로컬에 log가 쌓이게 됩니다. 분/시간 단위로 로그가 쌓이게 되면 시간이 지나면 문제가 발생하게 됩니다. 에어플로우를 운영할 때는 로컬에 쌓이게 된는 DAG 로그를 정리하는 것도 중요합니다. 따라서 주기적으로 에어플로우 로그를 삭제할 수 있는 스크립트를 크론잡에 설정하거나, 주기적으로 실행하여야 합니다. 2022. 10. 25.
[zookeeper] ruok is not executed because it is not in the whitelist. 오류 처리 주키퍼의 동작을 확인하는 ruok 명령을 이용하라 때 다음과 같은 응답이 오는 경우가 있습니다. 이는 주키퍼가 기본적으로 해당 명령에 응답하지 않도록 되어 있어서 설정에서 해당 명령을 이용할 수 있도록 변경해주어야 합니다. ruok is not executed because it is not in the whitelist. zoo.cfg 설정 변경 zoo.cfg 파일에 다음 설정을 추가하고 실행합니다. 4lw.commands.whitelist=stat, ruok, conf, isro 2022. 9. 20.
[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.
[ansible] [WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %} 오류 앤서블의 when: 태그를 이용할 때 이런 오류가 발생하는 경우가 있습니다. [WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %} 이 경우는 앤서블의 when: 태그에 jinja2 템플릿 문법을 입력하여서 발생합니다. 따라서 이 오류를 해결하기 위해서는 when 태그에는 변수명을 그대로 입력하면 됩니다. 2022. 8. 25.
[bash] snappy 라이브러리 다운로드 설치 ubuntu 18.04에 패키지를 설치할 때 기본적으로 apt 를 이용하지만, 인터넷이 되지 않는 환경에서 작업을 해야 할 때는 설치 파일을 다운로드 해서 설치해야 합니다. 설치 파일은 다음 위치에서 확인할 수 있습니다. https://ubuntu.pkgs.org/20.04/ubuntu-main-arm64/libsnappy1v5_1.1.8-1build1_arm64.deb.html 그리고 Download 항목에서 설치 파일 다운로드 링크를 확인할 수 있습니다. 이 파일을 받아서 dkpg 명령으로 설치할 수 있습니다. 파일로 다운로드를 받게 되면 사전에 필요한 라이브러리가 없어서 설치가 안될 수도 있습니다. 이럴때는 필요한 라이브러리를 순서대로 설치해 주어야 합니다. 스내피 라이브러리명인 libsnappy-.. 2022. 8. 24.
[hadoop] ha 하둡 실행 시 java.lang.IllegalStateException: Could not determine own NN ID in namespace 'ha-hadoop'. Please ensure that this node is one of the machines listed as an NN RPC address, or configure dfs.ha.namenode.id 오류 처리 HA 하둡에서 네임노드 실행시 다음과 같은 오류가 발생하는 경우가 있습니다. 22/08/20 12:11:24 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT] 22/08/20 12:11:24 INFO namenode.NameNode: createNameNode [-bootstrapStandby, -force] 22/08/20 12:11:24 ERROR namenode.NameNode: Failed to start namenode. java.io.IOException: java.lang.IllegalStateException: Could not determine own NN ID in namespace 'ha-hadoo.. 2022. 8. 21.
[flink] flink 실행 중 Caused by: org.apache.flink.configuration.IllegalConfigurationException: Either required fine-grained memory 오류 플링크를 이용한 작업 중 다음과 같은 오류가 발생하는 경우가 있습니다. org.apache.flink.configuration.IllegalConfigurationException: JobManager memory configuration failed: Either required fine-grained memory (jobmanager.memory.heap.size), or Total Flink Memory size (Key: 'jobmanager.memory.flink.size' , default: null (fallback keys: [])), or Total Process Memory size (Key: 'jobmanager.memory.process.size' , default: null (fa.. 2022. 8. 19.
[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.
[hbase] hbase 2.4.13 실행 중 java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.hdfs.protocol.HdfsFileStatus, but class was expected 오류 HBase 2.4.13 을 hadoop 3와 연동하는 중에 해당 오류가 발생하였습니다. java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.hdfs.protocol.HdfsFileStatus, but class was expected 2022-08-12 11:17:02,520 WARN [RS-EventLoopGroup-1-2] concurrent.DefaultPromise: An exception was thrown by org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper$4.operationComplete() java.lang.IllegalArgume.. 2022. 8. 19.
[oozie] 우지 워크플로우 작업이 PREP 상태에서 대기 하는 경우 우지 워크플로우 작업을 돌렸을 때 PREP 상태로 계속 대기하는 경우가 있습니다. 로거 설정이 INFO 상태로 우지를 실행하면 이 경우 로그가 출력되지 않아서 원인을 확인하기 힘든데 보통 리소스 매니저 설정이 제대로 되어 있지 않은 경우 문제가 발생합니다. 워크플로우의 resource-manager 설정을 확인 리소므 매니저가 정상적으로 동작하는지 확인 노드 개수, 동작 상태 등 yarn접근을 위한 port 가 정상적인지 확인. hadoop2는 8050 hadoop3는 8032가 기본 포트 2022. 8. 18.
[hive] hive standalone metastore 에서 Drop Partition 처리시 Caused by: java.lang.UnsupportedOperationException 오류가 발생하는 경우 하이브 스탠드얼론 메타스토어(apache-hive-metastore-3.1.2-bin) 에서 파티션 DROP 시점에 다음과 같은 오류가 발생하였습니다. Caused by: java.lang.UnsupportedOperationException at org.apache.hadoop.hive.metastore.DefaultPartitionExpressionProxy.convertExprToFilter(DefaultPartitionExpressionProxy.java:34) at org.apache.hadoop.hive.metastore.PartFilterExprUtil.makeExpressionTree(PartFilterExprUtil.java:50) at org.apache.hadoop.hive.metas.. 2022. 8. 2.
[ubuntu] 우분투 18 로그인시 출력되는 MOTD 제거 하기 우분투 18.04는 사용자가 로그인하면 Welcome to Ubuntu 라고 출력되며, System information이 포함된 MOTD(Message Of The Day) 화면을 출력합니다. 이 화면을 제거하는 방법은 motd 파일의 실행 권한을 제거하는 것입니다. 다음 명령어를 입력하면 로그인 메시지가 출력되지 않습니다. sudo chmod -x /etc/update-motd.d/* 2022. 8. 2.
[ssh] ssh 접속 배너 설정하기 ssh로 서버에 접속할 때 접속자에게 배너를 보여 줄 수 있습니다. 배너를 설정하는 방법은 다음과 같습니다. /etc/ssh/sshd_config 의 banner 설정 수정. 사용자가 생성한 파일의 경로 지정 banner 파일 생성 sshd 재시작 배너로 사용하기에 좋은 ASCII Art 를 만들어 주는 사이트를 참고해서 배너를 만들면 좋습니다. https://patorjk.com/software/taag/#p=testall&f=Ogre&t=banner Text to ASCII Art Generator (TAAG) patorjk.com 2022. 8. 2.
[airflow] 에어플로우 설정 환경 변수로 설정 에어플로우는 airflow.cfg 에 설정을 할 수도 있지만 실행전에 export 로 환경변수로 설정하면 해당 정보를 실행 시점에 읽어서 변수에 반영합니다. 주의할 점은 버전에 따라 문서의 환경변수가 적용되지 않을 수도 있습니다. 저는 2.2.5 버전의 에어플로우를 사용하는데 문서에는 AIRFLOW__DATABASE__SQL_ALCHEMY_CONN 로 되어 있지만, AIRFLOW__CORE__SQL_ALCHEMY_CONN 으로 설정해야 설정이 적용되었습니다. 이는 airflow.cfg 설정파일을 확인해 보면 [core] 아래 sql_alchemy_conn 이 있는 것을 확인할 수 있습니다. 에어플로우는 설정 파일에 적용된 순서에 따라 파싱을 진행하기 때문에 airflow.cfg 파일을 확인하면 설정명을 .. 2022. 7. 21.
[redis] Error accepting a client connection: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca 오류 redis에 TLS 설정을 적용하는데 서버에서 다음과 같은 오류가 계속 발생하였습니다. Error accepting a client connection: error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca 원인 원인은 redis 서버에 적용된 인증서가 올바르지 않아서 CA 인증서에 오류가 있어서 였습니다. 저는 crt 타입의 인증서를 이용하여 CA 인증서가 빠져 있었습니다. 그래서 redis 서버가 실행되고, TLS가 적용은 되었는데 CA 인증을 받지 못하여 오류가 발생하였습니다. pem 타입의 인증서를 신규로 발급받고, CA 인증서까지 적용하여 문제를 해결할 수 있었습니다. 해결방법 CA 인증서를 확인합니다. 다음 명령어로 확인했을 때.. 2022. 7. 21.
[helm] helom chart 사용중 Error: UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress 오류 처리 helm chart 사용중 다음과 같은 오류가 발생하는 경우가 있습니다. Error: UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress 확인 이 경우 helm history 명령으로 이전에 작업한 내역을 확인하면 작업이 완료되지 않고, 진행중인 것을 확인할 수 있습니다. $ helm history kbp-airflow --namespace kbp-cbt REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION 6 Tue Apr 5 18:29:05 2022 superseded airflow-8.5.2 2.1.2 Upgrade complete 7 Wed Apr 6 09:43:58 20.. 2022. 7. 18.
[redis] redis 에 TLS 적용후 airflow 브로커 연결 redis에 tls를 적용하기 위해서는 빌드 시점에 TLS 옵션을 적용해야 합니다. 인증서에 설정된 CA 정보에 따라서 서버 인증서와 CA 인증서를 구분해서 적용해야 할 수도 있습니다. airflow의 브로커 에어플로우의 브로커로 redis를 사용하고, 여기에 tls 를 적용하기 위해서는 에어플로우 설정을 다음과 같이 사용합니다. 참고로 브로커 URL에 사용하는 키의 암호를 제거해 주면 더 편하게 사용할 수 있습니다. 2022. 7. 18.
[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.