본문 바로가기

전체 글1109

[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.
[hue] hue 빌드 시 파이썬 pip 호출에 프록시를 이용해야 하는 경우 Hue 4.10.0 버전을 빌드 할 때 make 명령을 실행하면 내부적으로 pip를 호출하여 필요한 파일을 설치하는데 프록시 설정으로 인해서 Connection Time Out이 발생하면서 빌드에 실패하는 경우가 있습니다. 이때는 make 명령을 사용하기전에 pip 프록시가 사용하는 프록시 설정을 알려준 후 사용하면 됩니다. export PYTHON_VER=python2.7 sudo http_proxy=http://http-proxy:8080 https_proxy=http://http-proxy:8080 PREFIX=/opt make install 2022. 4. 23.
[flink] flink를 yarn session 모드로 동작할 때 작업이 ACCEPTED 상태로 대기 할 때 해결 방법 flink를 YARN에서 동작할 때 작업이 ACCEPTED 상태로 대기하면서 다음과 같은 로그가 출력되는 경우가 있습니다. 2022-04-21 16:40:32,601 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Deployment took more than 60 seconds. Please check if the requested resources are available in the YARN cluster 2022-04-21 16:40:32,853 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Deployment took more than 60 seconds. Please check if the req.. 2022. 4. 21.
[hdfs] Unable to start failover controller. Parent znode does not exist. 오류 수정 HA 하둡을 설정할 때 ZKFC를 실행할 때 이런 오류가 발생하는 경우가 있습니다. 2022-04-13 05:22:29,204 ERROR org.apache.hadoop.ha.ZKFailoverController (main): Unable to start failover controller. Parent znode does not exist. Run with -formatZK flag to initialize ZooKeeper. 이때는 zkfc를 포맷하면 됩니다. 다음 명령을 실행합니다. hdfs zkfc -formatZK 2022. 4. 20.
[hdfs] Journal Storage Directory /hadoop/hdfs/journal/... not formatted 오류 HA 하둡을 설정할 때 다음과 같은 오류가 발생하는 경우가 있습니다. 192.168.0.2:8485: Journal Storage Directory /hadoop/hdfs/journal/edit/test-hadoop not formatted ; journal id: test-hadoop at org.apache.hadoop.hdfs.qjournal.server.Journal.checkFormatted(Journal.java:516) at org.apache.hadoop.hdfs.qjournal.server.Journal.getEditLogManifest(Journal.java:707) at org.apache.hadoop.hdfs.qjournal.server.JournalNodeRpcServer.getE.. 2022. 4. 20.
[HBase] java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper operation during component failures 오류 처리 하둡 2.10.1 버전에 HBase 1.7.1 버전을 설치할 때 다음과 같은 오류가 발생하였습니다. 2022-04-20 10:37:11,640 FATAL [bigdata-hadoop-master-1:16000.activeMasterManager] master.HMaster: Failed to become active master java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper operation during component failures, but the underlying filesystem does not support doing so. Please check the config va.. 2022. 4. 20.
[terraform] 테라폼의 특정 모듈만 삭제하는 방법 테라폼으로 생성한 인프라 중 특정 모듈만 삭제 하는 방법은 destroy 옵션에서 target을 지정하는 방법입니다. 2022. 4. 18.
[airflow] Xcom을 이용하여 DAG 간 데이터 전달 에어플로우에서 DAG 간 데이터를 전달하는 방법으로 xcom을 이용할 수 있습니다. context의 task_instance 객체를 이용해서 키-밸류 형태로 데이터를 전달할 수 있습니다. 다음은 데이터를 전달하여 branch를 처리하는 방법 예제입니다. 2022. 4. 3.
[spark] pyspark 의 파이썬 패스 설정 pyspark 를 실행하는 서버와 실제 작업을 실행하는 YARN 클러스터의 파이썬 패스가 다를 경우 실행하는 파이썬 패스(PYSPARK_PYTHON)를 드라이버, 워커, 실행서버 별로 설정을 해야 합니다. 파이썬 패스 설정 2022. 3. 7.
[ruby] Can't convert Range in to Integer (Ruby on Rails) 오류 처리 방법 루비는 버전에 따라 range값을 int 로 변경할 때 오류가 발생합니다. 1.9 버전은 간단하게 변경할 수 있지만, 1.8 버전에서는 오류가 발생합니다. 버전에 따라 다르게 처리해야 합니다. 2022. 2. 25.
[airflow] DAG에서 사용하는 멀티 프로세스에서 발생하는 AssertionError: daemonic processes are not allowed to have children 에어플로우 DAG에서 멀티 프로세스를 이용하는 경우 파이썬 프로세스에서 또 프로세스를 생성할 수 없다는 오류가 발생합니다. File "/usr/local/lib/python3.8/multiprocessing/process.py", line 118, in start assert not _current_process._config.get('daemon'), \ AssertionError: daemonic processes are not allowed to have children 해결방법 이 경우 멀티프로세스를 스레드 풀로 변경하면 됩니다. 다음과 같이 사용할 수 있습니다. 2022. 2. 24.
[hdfs] HDFS 메타 데이터 백업 및 복구 HDFS 메타 데이터를 백업하고 복구하는 방법을 알아보겠습니다. 메타 데이터 백업 데이터 백업은 세이프 모드에서 진행합니다. 메타 데이터 복구 복구를 위해서는 기존의 VERSION 파일은 있어야 하고, fsimage 에 맞는 체크섬을 생성하고 md5 파일을 생성해 주어야 합니다. 2022. 2. 22.
[hdfs] 네임노드의 fsimage 파일 구조 하둡 네임노드는 HDFS의 최신 데이터(fsimage)를 메모리에 보관하고 있습니다. 그리고 설정에 따라, 6시간에 1번, 100만 트랜잭션 당 1번씩 fsimage 를 파일로 보관합니다. 또한 중간 데이터인 edits 를 추가로 보관합니다. fsimage 저장 주기는 6시간에 1번 or 100만 트랜잭션당 1번 HDFS 파일 구조 파일 저장 구조는 위와 같습니다. VERSION: 현재 실행 중인 HDFS의 ID, 타입 등 정보 edits_0000xxx-0000xxx: 트랜잭션 정보. edits_트랜잭션시작번호-트랜잭션종료번호 까지의 정보를 저장 eidts_inprogress_000xx: 최신 트랜잭션 정보. 압축되지 않은 정보 fsimage_000xxx: 000xxx 까지 트랜잭션 정보가 처리된 fsi.. 2022. 2. 22.
[bash] 배쉬 쉘의 옵션 켜고 끄는 방법 배쉬 쉘에서는 set 을 이용해서 옵션을 켜고 끌수 있습니다. 자주 사용하는 옵션은 오류가 발생하면 스크립트를 종료하게 하는 -e와 디버깅 메시지를 출력하게 하는 -x 옵션이 있습니다. 만약 옵션을 켜고 사용하는 중에 잠시 옵션을 꺼야 한다면 마이너스(-) 대신 플러스(+)를 사용하면 됩니다. #!/bin/bash # 디버깅 메시지 출력 set -x echo "A" # 디버깅 메시지 종료 set +x echo "B" # 디버깅 메시지 출력 set -x echo "C" 2022. 2. 21.
[go] 표준 go 프로젝트 레이아웃 go 프로젝트의 표준 레이아웃 정리 문서입니다. https://github.com/golang-standards/project-layout/blob/master/README_ko.md GitHub - golang-standards/project-layout: Standard Go Project Layout Standard Go Project Layout. Contribute to golang-standards/project-layout development by creating an account on GitHub. github.com 2022. 2. 15.
[ansible] 플레이북에 선언된 태스크의 실행 순서 앤서블 플레이북에는 pre_tasks, roles, tasks, post_tasks 를 설정할 수 있고, 순서대로 실행됩니다. roles가 실행되기 전에 필요한 작업은 pre_tasks에 놓고, 후에 실행되어야 하는 작업은 tasks, post_tasks 에 놓으면 됩니다. 여기에 추가로 vars_prompt: 가 들어가면 가장 먼저 vars_prompt: 가 실행 됩니다. 2022. 2. 15.
[terraform] 오픈스택 VM 생성시 Invalid key_name provided 오류 오픈스택을 이용하여 VM 생성시 다음의 오류가 발생하는 경우가 있습니다. ╷ │ Error: Error creating OpenStack server: Bad request with: [POST https://compute.io/v2.1/XXXX/servers], error message: {"badRequest": {"code": 400, "message": "Invalid key_name provided."}} │ │ with openstack_compute_instance_v2.example-worker["example-worker-2"], │ on openstack_worker.tf line 1, in resource "openstack_compute_instance_v2" "example-wor.. 2022. 2. 15.
[terraform] 토큰 인증시 cannot use AllowReauth, when the token ID is defined and auth scope is not set 오류 테라폼 오픈스택 인증시 위와 같은 오류가 발생하는 경우 allow_reauth 값을 false 로 주면 됩니다. token 을 이용할 때는 해당 설정을 이용할 수 없기 때문입니다. 2022. 2. 14.
[terraform] 오픈스택 프로바이더 크레덴셜/토큰(credential/token) 예제 테라폼을 이용해서 오픈스택 리소스를 생성할 때 인증을 받는 방법은 여러가지가 있습니다. 키스톤에서 제공하는 인증을 설정 값에 추가하면 여러가지 인증을 이용할 수 있습니다. 그 중에서 아이디/암호, 크레덴셜 ID/시크릿, 토큰을 이용하는 방법은 오픈스택 rc 파일에 설정을 통해서 진행할 수 있습니다. 아이디/암호 OS_AUTH_TYPE=v3password OS_USERNAME=username OS_PASSWORD=password 크레덴셜ID/시크릿 OS_AUTH_TYPE=v3applicationcredential OS_APPLICATION_CREDENTIAL_ID=xxxxxxxxxxx OS_APPLICATION_CREDENTIAL_SECRET=xxxxxxxxxx 토큰 OS_AUTH_TYPE=v3token .. 2022. 2. 14.
[k8s] 쿠버네티스 시크릿(Secret) 생성 커맨드와 Yaml k8s는 암호 같은 중요 정보를 보관하는 데이터베이스 같은 기능인 시크릿을 제공합니다. 시크릿은 CLI를 이용해서 생성하거나, yaml 을 이용하여 생성할 수 있습니다. https://kubernetes.io/ko/docs/concepts/configuration/secret/ 시크릿(Secret) 시크릿은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 포함하는 오브젝트이다. 이를 사용하지 않으면 중요한 정보가 파드 명세나 컨테이너 이미지에 포함될 수 있다. 시크릿을 사용한다 kubernetes.io 시크릿 생성 CLI 시크릿 생성 yaml 시크릿 사용 secretKeyRef를 이용하여 yaml 에서 이용할 수 있음 2022. 2. 7.