본문 바로가기

전체1128

[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.
[hdfs] 하둡 2.10.0 버전에서 데이터 노드를 재시작할 때 발생하는 java.io.IOException: Failed to start sub tasks to add replica in replica map :java.lang.ArithmeticException 오류 해결 방법 하둡 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.. 2022. 7. 6.
[go] kafka 라이브러리의 크로스 컴파일 오류 undefined: kafka.NewProducer 카프카 라이브러리(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://.. 2022. 6. 16.
[curl] curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1) 오류 원인은 정확하게 알 수 없지만 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 2022. 6. 1.
[jks] Caused by: java.io.IOException: Invalid keystore format 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가 계속 오류가 발생한다면 다른 버전을 이용하고 있는 것이 아닌지 확인해보.. 2022. 5. 25.
[python] requests 라이브러리에서 exceptions.MaxRetryError 가 발생하는 경우 처리 방법 requests를 기본 문법으로 사용하면 일반 적인 경우에는 문제가 되지 않지만, http 호출을 자주 하게 되면 exceptions.MaxRetryError가 발생하는 경우가 있습니다. 이럴때는 request 의 session을 이용해서 connection을 재사용할 수 있도록 설정해 주면 문제를 해결할 수 있습니다. pool_connections, pool_maxsize, max_retries 를 추가해서 설정할 수 있습니다. 2022. 5. 17.
[hdfs] Access denied for user root. Superuser privilege is required 오류 해결 방법 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.. 2022. 5. 17.
[python] http를 이용한 post 구현 파이썬 requests 라이브러리의 post를 이용하여 multipart/form-data 데이터를 전달 할 때 기본적으로 gzip 압축을 하게 됩니다. 코드를 확인해 보면 자동으로 압축을 처리하고, 이를 처리하지 않게 하는 옵션이 존재하지 않기 때문에 서버가 gzip 압축을 이용한 데이터를 받아 준다면 문제가 없지만, 서버가 압축된 데이터를 받아주지 않는다면 따로 구현을 해야 합니다. 디버깅 옵션을 이용해서 헤더 정보를 확인해보면 이렇게 데이터가 들어가는 것을 알 수 있습니다. Accept-Encoding: gzip, deflate multipart/form-data 전달 규정 http에서 multipart/form-data를 전달하는 공식 문서를 확인하고 이를 참고해서 코드를 작성하였습니다. http.. 2022. 5. 17.
[python] datetime 변환시 타임존을 설정해야 하는 이유 파이썬을 이용하여 문자열을 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. >>> >>.. 2022. 5. 17.
[go] 맥에서 우분투용 실행파일을 빌드 하는 방법 맥에서 우분투용 실행파일을 빌드하는 방법은 빌드할 때 다음과 같이 설정값을 전달하고 빌드 명령을 실행하면 됩니다. GOOS, GOARCH 설정은 runtime 확인을 통해 알아 낼 수 있습니다. 2022. 5. 15.
[curl] curl의 --form으로 전달 된 POST 데이터 확인하는 방법 curl --form으로 데이터를 전달 할 때 실제로 전달되는 데이터 내용을 확인 하려면 --trace-ascii 옵션을 이용하여 확인할 수 있습니다. 이 옵션을 사용할 때 옵션 뒤에 저장할 파일명을 입력하면, 해당 파일명으로 로그가 저장됩니다. 2022. 5. 2.
[mysql] Incorrect string value: '\\xF0\\x9F\\x86\\x97' 에러 처리 mysql에 이모지를 입력할 때 다음과 같은 오류가 발생할 수 있습니다. 원인은 mysql이 해당 이미지의 문자값을 지원하지 않을 때 발생합니다. MySQLdb._exceptions.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x86\\x97 K...' for column 'source_code' at row 1") 해결방법 두 가지 해결방법이 있습니다. 하나는 mysql을 mariadb로 변경하거나, 문자열 설정을 변경하는 것이고, 다른 방법은 이미지를 다른 이모지로 변경하는 것입니다. 🆗 이 이모지는 입력되지 않았지만, ❌ 이모지는 입력되었습니다. 입력이 가능한 비슷한 형태의 이모지를 입력하면 됩니다. my.cnf를 다음과 같이 수정.. 2022. 5. 2.