
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
keytool을 이용해서 jks를 생성하고 주키퍼를 실행하는 중에 키포맷이 틀렸다는 오류가 계속 발생하였습니다.이 경우 몇가지 원인이 있을 수 있는데 제가 발생한 원인은 자바 버전 문제였습니다. Caused by: java.io.IOException: Invalid keystore format 주키퍼를 실행할 때 사용하는 java 와 keytool의 경로가 달라서 오류가 발생하였습니다. JAVA_HOME 설정의 문제로 인해서 java 경로는 /usr/lib/jdk/java 고 keytool은 /usr/local/jdk/bin/keytool 로 자바 버전과 keytool의 버전이 달라서 오류가 발생하였습니다. 정상적으로 발급한 jks가 계속 오류가 발생한다면 다른 버전을 이용하고 있는 것이 아닌지 확인해보..
requests를 기본 문법으로 사용하면 일반 적인 경우에는 문제가 되지 않지만, http 호출을 자주 하게 되면 exceptions.MaxRetryError가 발생하는 경우가 있습니다. 이럴때는 request 의 session을 이용해서 connection을 재사용할 수 있도록 설정해 주면 문제를 해결할 수 있습니다. pool_connections, pool_maxsize, max_retries 를 추가해서 설정할 수 있습니다.
HDFS에서 관리자용 명령어인 dfsadmin 관련 명령을 실행할 때 다음과 같은 오류가 발생하면서 실행이 되지 않을 때가 있습니다. 이럴때는 두 가지 해결방법이 있습니다. $ hdfs dfsadmin -report Configured Capacity: 194882378752 (181.50 GB) Present Capacity: 194848824320 (181.47 GB) DFS Remaining: 192335490048 (179.13 GB) DFS Used: 2513334272 (2.34 GB) DFS Used%: 1.29% Under replicated blocks: 0 Blocks with corrupt replicas: 0 Missing blocks: 0 Missing blocks (with re..
파이썬 requests 라이브러리의 post를 이용하여 multipart/form-data 데이터를 전달 할 때 기본적으로 gzip 압축을 하게 됩니다. 코드를 확인해 보면 자동으로 압축을 처리하고, 이를 처리하지 않게 하는 옵션이 존재하지 않기 때문에 서버가 gzip 압축을 이용한 데이터를 받아 준다면 문제가 없지만, 서버가 압축된 데이터를 받아주지 않는다면 따로 구현을 해야 합니다. 디버깅 옵션을 이용해서 헤더 정보를 확인해보면 이렇게 데이터가 들어가는 것을 알 수 있습니다. Accept-Encoding: gzip, deflate multipart/form-data 전달 규정 http에서 multipart/form-data를 전달하는 공식 문서를 확인하고 이를 참고해서 코드를 작성하였습니다. http..
파이썬을 이용하여 문자열을 datetime 형식으로 변경할 때 타임존을 명시적으로 설정하지 않으면 파이썬은 현재 서버의 기본 타임존을 자동으로 설정합니다. 모든 서버의 환경이 동일하다면 문제가 없지만, 운영과 테스트환경의 설정이 다른 경우 문제가 발생할 수 있습니다. 아래의 경우 동일한 코드를 실행하였지만 서버의 타임존이 달라서 다른 결과를 보여주고 있습니다. --------------- 한국 타임존 ----------------- $ python3 Python 3.6.9 (default, Jan 26 2021, 15:33:00) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> >>..
- Total
- Today
- Yesterday
- airflow
- 알고리즘
- S3
- AWS
- Python
- HIVE
- oozie
- Tez
- 파이썬
- 오류
- 하둡
- SPARK
- nodejs
- java
- error
- HDFS
- SQL
- 하이브
- bash
- ubuntu
- mysql
- yarn
- 백준
- build
- 다이나믹
- Linux
- hbase
- emr
- Hadoop
- 정올
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |