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..
테이블의 칼럼 속성을 수정할 때 Cannot change column used in a foreign key constraint 오류가 발생하는 경우가 있습니다 이 오류가 발생하는 경우는 수정하고자 하는 테이블의 속성에 연결되 외부키의 속성이 변경되지 못해서 발생합니다. 이 경우 다음과 같이 해당 옵션을 끄고 작업을 처리할 수 있습니다. SET FOREIGN_KEY_CHECKS = 0; -- 수정 SET FOREIGN_KEY_CHECKS = 1;
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..
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..
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-..

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..
request 를 이용하여 http 요청을 처리할 때 재작업을 해야 하는 경우가 있습니다. 하나는 서버에 연결후 정상적으로 응답이 와서 응답을 보고 재작업을 해야 하는 경우 retry 모듈을 이용하여 재작업을 처리할 수 있습니다. 다른 방법은 서버에 정상적으로 연결이 되지 않는 경우 다시 재작업을 해야 하는 경우 데코레이터 모듈을 이용하여 재작업을 할 수 있습니다. retry 모듈 retry 모듈은 서버의 응답에 따라서 재작업을 진행할 수 있습니다. 서버가 특정 응답을 보낼때는 재작업을 한다는 룰을 가질 수 있는 경우 사용할 수 있습니다. https://brownbears.tistory.com/613 [Python] requests 모듈 retry 추가하기 requests 모듈은 https://brown..

노드매니저가 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..
하둡에서 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..
주키퍼의 동작을 확인하는 ruok 명령을 이용하라 때 다음과 같은 응답이 오는 경우가 있습니다. 이는 주키퍼가 기본적으로 해당 명령에 응답하지 않도록 되어 있어서 설정에서 해당 명령을 이용할 수 있도록 변경해주어야 합니다. ruok is not executed because it is not in the whitelist. zoo.cfg 설정 변경 zoo.cfg 파일에 다음 설정을 추가하고 실행합니다. 4lw.commands.whitelist=stat, ruok, conf, isro
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...

앤서블의 when: 태그를 이용할 때 이런 오류가 발생하는 경우가 있습니다. [WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %} 이 경우는 앤서블의 when: 태그에 jinja2 템플릿 문법을 입력하여서 발생합니다. 따라서 이 오류를 해결하기 위해서는 when 태그에는 변수명을 그대로 입력하면 됩니다.

ubuntu 18.04에 패키지를 설치할 때 기본적으로 apt 를 이용하지만, 인터넷이 되지 않는 환경에서 작업을 해야 할 때는 설치 파일을 다운로드 해서 설치해야 합니다. 설치 파일은 다음 위치에서 확인할 수 있습니다. https://ubuntu.pkgs.org/20.04/ubuntu-main-arm64/libsnappy1v5_1.1.8-1build1_arm64.deb.html 그리고 Download 항목에서 설치 파일 다운로드 링크를 확인할 수 있습니다. 이 파일을 받아서 dkpg 명령으로 설치할 수 있습니다. 파일로 다운로드를 받게 되면 사전에 필요한 라이브러리가 없어서 설치가 안될 수도 있습니다. 이럴때는 필요한 라이브러리를 순서대로 설치해 주어야 합니다. 스내피 라이브러리명인 libsnappy-..
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..

플링크를 이용한 작업 중 다음과 같은 오류가 발생하는 경우가 있습니다. 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..
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..
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..

우지 워크플로우 작업을 돌렸을 때 PREP 상태로 계속 대기하는 경우가 있습니다. 로거 설정이 INFO 상태로 우지를 실행하면 이 경우 로그가 출력되지 않아서 원인을 확인하기 힘든데 보통 리소스 매니저 설정이 제대로 되어 있지 않은 경우 문제가 발생합니다. 워크플로우의 resource-manager 설정을 확인 리소므 매니저가 정상적으로 동작하는지 확인 노드 개수, 동작 상태 등 yarn접근을 위한 port 가 정상적인지 확인. hadoop2는 8050 hadoop3는 8032가 기본 포트

하이브 스탠드얼론 메타스토어(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..
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
에어플로우는 airflow.cfg 에 설정을 할 수도 있지만 실행전에 export 로 환경변수로 설정하면 해당 정보를 실행 시점에 읽어서 변수에 반영합니다. 주의할 점은 버전에 따라 문서의 환경변수가 적용되지 않을 수도 있습니다. 저는 2.2.5 버전의 에어플로우를 사용하는데 문서에는 AIRFLOW__DATABASE__SQL_ALCHEMY_CONN 로 되어 있지만, AIRFLOW__CORE__SQL_ALCHEMY_CONN 으로 설정해야 설정이 적용되었습니다. 이는 airflow.cfg 설정파일을 확인해 보면 [core] 아래 sql_alchemy_conn 이 있는 것을 확인할 수 있습니다. 에어플로우는 설정 파일에 적용된 순서에 따라 파싱을 진행하기 때문에 airflow.cfg 파일을 확인하면 설정명을 ..
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 인증서를 확인합니다. 다음 명령어로 확인했을 때..
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..
redis에 tls를 적용하기 위해서는 빌드 시점에 TLS 옵션을 적용해야 합니다. 인증서에 설정된 CA 정보에 따라서 서버 인증서와 CA 인증서를 구분해서 적용해야 할 수도 있습니다. airflow의 브로커 에어플로우의 브로커로 redis를 사용하고, 여기에 tls 를 적용하기 위해서는 에어플로우 설정을 다음과 같이 사용합니다. 참고로 브로커 URL에 사용하는 키의 암호를 제거해 주면 더 편하게 사용할 수 있습니다.
하이브 서버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..

하둡 2.10.0 버전에서 데이터 노드를 재시작할 때 다음과 같은 오류가 발생하였습니다. 여러 대의 노드에서 동일한 작업을 진행하였는데 하나의 노드에서만 이런 문제가 발생하였습니다. 2022-07-05 15:15:19,119 INFO org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl (Thread-83): Caught exception while adding replicas from /hadoop/hdfs/data/current. Will throw later. java.io.IOException: Failed to start sub tasks to add replica in replica map :java.lang.Arithmeti..
카프카 라이브러리(confluent-kafka-go)를 사용하는 go 프로그램을 크로스 컴파일(맥에서 리눅스 버전 라이브러리로 컴파일) 할 때 다음과 같은 오류가 발생할 수 있습니다. db/kafka.go:17:12: undefined: kafka.NewProducer db/kafka.go:17:31: undefined: kafka.ConfigMap db/kafka.go:29:10: undefined: kafka.Message db/kafka.go:41:20: undefined: kafka.Message 이는 카프카 라이브러리에서 인지하고 있는 문제이며, 아직도 해결이 되지 않은 것 같습니다. 도커를 이용하여 빌드를 하던지 실제 프로그램을 사용할 리눅스 서버에서 컴파일 하시는게 편합니다. https://..
원인은 정확하게 알 수 없지만 curl을 이용하여 데이터를 확인한 결과를 다음 curl에 헤더값으로 사용하니 이상하게 다음과 같은 오류가 발생하였습니다. curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1) 오류는 다음과 같이 http1.1 옵션을 추가해서 해결하였습니다. 처음에 사용한 curl의 스트림이 계속 연결된 상태로 다음 스트림을 계속 사용해서 그런것 같습니다. curl --http1.1 http://host_url
- Total
- Today
- Yesterday
- Python
- mysql
- AWS
- 다이나믹
- Tez
- hbase
- yarn
- 파이썬
- oozie
- nodejs
- 하둡
- 정올
- java
- HDFS
- SQL
- ubuntu
- SPARK
- airflow
- 오류
- Hadoop
- build
- S3
- HIVE
- bash
- 알고리즘
- 하이브
- error
- emr
- 백준
- Linux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |