본문 바로가기

전체 글1109

[bash] apt conflict 오류 apt 를 이용하여 라이브러리를 설치 할 때 다음과 같은 오류가 발생하는 경우가 있습니다. The following packages have unmet dependencies: libsasl2-modules-gssapi-heimdal : Conflicts: libsasl2-modules-gssapi-mit but 2.1.27~101-g0780600+dfsg-3ubuntu2.3 is to be installed libsasl2-modules-gssapi-mit : Conflicts: libsasl2-modules-gssapi-heimdal but 2.1.27~101-g0780600+dfsg-3ubuntu2.3 is to be installed E: Unable to correct problems, you .. 2023. 8. 19.
[pyhive] pyhive에서 커버로스 인증을 사용할 때 no mechanism available: No worthy mechs found 오류 PyHive에서 커버로스 인증을 사용할 때 다음과 같은 오류가 발생 하였습니다. File "/usr/local/lib/python3.6/site-packages/thrift_sasl/__init__.py", line 72, in open message=("Could not start SASL: %s" % self.sasl.getError())) thrift.transport.TTransport.TTransportException: Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found 이 오류는 cyrus-sasl 라이브러리가 설치 되어 있지 않을 때 발생합니다. .. 2023. 8. 19.
[Kerberos] Minor code may provide more information (Incorrect net address) 오류 K8s 환경의 에어플로우 파드에서 커버로스 티켓을 생성하고, 사용할 때 다음과 같은 오류가 발생하였습니다. File "/home/airflow/.local/lib/python3.8/site-packages/thrift_sasl/__init__.py", line 84, in open raise TTransportException(type=TTransportException.NOT_OPEN, thrift.transport.TTransport.TTransportException: Could not start SASL: b'Error in sasl_client_start (-1) SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor co.. 2023. 8. 19.
[openstack] 시큐리티 그룹을 여러개 설정 하기 오픈 스택의 시큐리티 그룹은 하나의 Port 에 여러 개를 설정할 수 있습니다. 시큐리티 그룹의 추가/삭제는 set 명령을 이용해서 처리할 수 있습니다. # 시큐리티 그룹 추가 openstack port set [Port-ID] --security-group [Security-Group-ID] # 시큐리티 그룹 삭제 openstack port set [Port-ID] --security-group [Security-Group-ID] 그리고 여러 개의 시큐리티 그룹이 설정 되었을 때, 중복되는 Port 에 대한 설정은 가장 관대한 설정으로 적용됩니다. AWS 의 시큐리티 그룹 설정에 다음과 같은 내용이 있습니다. 따라서 같은 포트에 대하여 시큐리티 그룹을 설정 할 때는 설정 후 테스트가 꼭 필요합니다. 특.. 2023. 8. 19.
[airflow] apache-airflow-providers-apache-hive 설치 중 오류 처리 에어플로우에서 hive hook을 사용하기 위해서 apache-airflow-providers-apache-hive를 설치 하는 중 라이브러리 관련 오류가 발생하여 필요한 라이브러리를 설치 후 오류를 해결할 수 있었습니다. # sasl 오류 sasl/saslwrapper.h:22:10: fatal error: sasl/sasl.h: No such file or directory # gcc 오류 gcc: error trying to exec 'cc1plus': execvp: Not a directory 이런 오류가 발생할 때 다음의 라이브러리를 먼저 설치후 빌드 하면 됩니다. # 모든 apt 설치. # gcc, g++, libsasl2-dev 3개를 설치 하면 오류를 처리할 수 있음 RUN apt-get .. 2023. 8. 13.
[zookeeper] 주키퍼 logback.xml 을 이용한 파일 로그 출력 logback을 이용해서 주키퍼 로그를 출력할 때 logback.xml 파일을 이용해서 설정 할 수 있습니다. property 공통적으로 사용하는 설정을 저장 appender 로그 출력 방식에 대한 설정 콘솔 출력 롤링 파일 출력 설정 root 레벨 설정. 출력하고자 하는 대상에 대한 설정 다음은 콘솔, 롤링 파일 설정이 있지만 롤링 파일만 출력하는 설정의 예제 입니다. 2023. 8. 13.
[python] 커맨드 출력 결과에서 ansi color code 만 제거 하는 방법 bash shell 커맨드 출력 결과에서 위와 같이 색상이 추가 되어 나오는 경우가 있습니다. 이런 경우 사용자가 보기에는 좋지만 이를 파싱해서 처리해야 하는 경우 보기가 힘듭니다. python 에서 정규식을 이용하여 색상 코드만 제거할 수 있습니다. 사용 방법은 다음과 같습니다. https://stackoverflow.com/questions/14693701/how-can-i-remove-the-ansi-escape-sequences-from-a-string-in-python How can I remove the ANSI escape sequences from a string in python Here is a snippet that includes my string. 'ls\r\n\x1b[00m\x1.. 2023. 8. 13.
[python] 함수 변수의 *, ** 전달자 확인 파이썬 함수에 변수를 전달 할 때 *, ** 를 이용할 수 있습니다. *는 튜플로 변수를 전달 하고, **는 딕셔너리로 변수를 전달합니다. 2023. 7. 2.
[airflow] PythonOperator의 op_args, op_kwargs 변수 전달 파이썬 오퍼레이터에 변수를 넘기는 방법을 알아보겠습니다. 파이썬 오퍼레이터(PythonOperator)는 `op_args`, `op_kwargs` 두 가지 변수를 받을 수 있습니다. op_args operator를 생성할 때 op_args 변수로 전달 op_kwargs 오퍼레이터에 전달 되는 모든 변수를 전달 op_kwargs 의 키에 맞는 변수를 선언하면 자동으로 전달 params 는 에어플로우 DAG 을 실행할 때 전달한 파라미터 (Trigger DAG w/ config 이용) 2023. 7. 2.
[python] json.decoder.JSONDecodeError: Expecting value: line 3 column 27 (char 95) 오류 json 형식의 문자열을 json 으로 파싱할 때 다음과 같은 오류가 발생하는 경우가 있습니다 . File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/__init__.py", line 346, in loads return _default_decoder.decode(s) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/Library/Frameworks/Python.framework/.. 2023. 6. 30.
[jks] 공인 인증서 갱신 중 오류 처리 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found 2023년 버전의 한국 전자 인증에서 갱신 한 jks 형식의 공인 인증서를 설치 하면서 다음과 같은 오류가 발생하였습니다. 기존에는 인증서 교체후 재실행하면 특이 사항 없이 갱신할 수 있었는데 이번에는 오류가 발생하여 원인을 확인해 보았습니다. javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found 원인 오류의 원인은 2022년 에는 DigiCert 사의 G1 인증서를 root 인증서로 사용하고 있었는데, 2023년 부터 G2 인증서로 교체 되어 root 인증서가 달라진 것이었습니다. 저희 작업은 하둡 마스터 노드와 워커 노드의 인증서 중 워커 노도의 인증서를 교체후.. 2023. 6. 24.
[hdfs] Datanode 실행 중 You cannot have a rack and a non-rack node at the same level of the network topology. 오류 데이터 노드 실행 중 다음과 같은 오류가 발생하는 경우 데이터 노드의 네트워크 토폴로지 설정이 네임노드에 갱신되지 않아서 발생 하였습니다. core-site.xml 의 설정이 네트워크 토폴로지 설정을 이용하도록 변경된 상태에서 네임노드를 재부팅하지 않고, 운영하다가 데이터 노드를 재부팅 하니 다음과 같은 오류가 발생하였습니다. 2023-06-09 00:24:48,434 WARN org.apache.hadoop.hdfs.server.datanode.DataNode (BP-717439599-10.0.0.1-1679643941117 heartbeating to user-host.com/10.0.0.1:8020): RemoteException in register org.apache.hadoop.ipc.Remo.. 2023. 6. 9.
[ubuntu] 이더넷이 2개 일때 외부로 나갈 때 사용하는 이더넷 확인하는 방법 우분투에서 이더넷이 2개 일 때 하나의 네트워크는 내부 통신을 위해 사용하고, 다른 하나는 외부 통신의 목적으로 사용할 수 있습니다. 이때 외부로 나가는 이더넷을 확인하는 방법은 2가지가 있습니다. 하나는 ip route 명령을 이용합니다. ip route 명령을 사용했을 때 default 로 표현되는 이더넷이 외부로 나갈 때 사용하는 경로가 됩니다. $ ip route default via 11.182.92.1 dev enp4s0 proto dhcp src 11.182.94.148 metric 100 다른 하나는 ifconfig 명령을 이용합니다. 외부 경로에서 파일을 다운로드 하거나, 다른 작업을 처리하여 패킷을 사용하고 ifconfig 명령으로 RX 패킷이 늘어나는 이더넷을 확인하면 됩니다. $ i.. 2023. 6. 3.
[intellij] python 모듈에 패스(PYTHONPATH) 추가 하는 방법 파이썬 모듈을 개발할 때 form, import 문의 기준이 되는 위치를 PYTHONPATH로 잡아야 하는 경우가 있습니다. 이럴때는 다음의 위치에 경로를 추가 해주면 됩니다. 모듈 설정 > 프로젝트 설정 > 모듈 > + 버튼 > JAR 또는 디렉토리 에서 원하는 디렉토리를 추가후 진행하면 됩니다. 2023. 6. 3.
[k8s] k8s 노드에 ssh 키없이 접근 하는 방법(Lens의 node shell 파드 이용하는 방법) 오픈 렌즈에서는 ssh 키 없이 노드에 접근할 수 있습니다 이는 nsenter 명령어를 이용하여 키 없이 노드에 접근할 수 있습니다. https://github.com/lensapp/lens/blob/5670312c474eb5b6d506a3793863707a7df76775/src/main/node-shell-session.ts#L57-L87 GitHub - lensapp/lens: Lens - The way the world runs Kubernetes Lens - The way the world runs Kubernetes. Contribute to lensapp/lens development by creating an account on GitHub. github.com 소스코드는 이곳에서 확인할 수.. 2023. 6. 2.
[k8s] The PersistentVolume "pv" is invalid: nodeAffinity: Invalid value: core.VolumeNodeAffinity{Required:(*core.NodeSelector)(0xc00beeda70)}: field is immutable pv 설정시 발생하는 다음 오류는 노드 셀렉터에 설정된 노드의 이름과 노드가 매치되지 않을 때 발새합니다. nodeSelectorTerms 에 설정된 노드 명과 현재 조회되는 노드가 일치 하는지 확인 노드 명이 맞다면 현재 사용중인 kubeconfig 가 배포하고자 하는 클러스터 인지 확인 2023. 6. 2.
[helm] Helm chart에서 Error: create: failed to create: Request entity too large: limit is 3145728 오류 처리 Helm 차트를 이용해서 k8s 클러스터에 자원을 설치하려고 할 때 이 오류가 발생하는 경우가 있습니다. 이는 차트를 실행하는 기본 위치에 존재하는 파일 사이즈가 3MB 를 넘어서면 발생합니다. 아래와 같이 실행할 경우 현재 경로에 파일이 3MB 를 넘어서는 경우 오류가 발생합니다. 이럴 때는 용량이 큰 파일을 삭제하거나, .helmignore 파일에 추가하면 됩니다. # ./ 위치의 Chart.yaml 파일을 읽어서 mysql 차트 설치 helm upgrade --install --force \ mysql-local \ . \ --namespace mysql-user \ --values ./user-values.yaml 다음과 같이 .helmignore 파일을 생성하고 차트 설치에 필요하지 않은 파일을.. 2023. 5. 30.
[k8s] pod has unbound immediate persistentvolumeclaims 오류 k8s에서 pv 를 설정할 때 다음과 같은 오류가 발생하는 경우가 있습니다. 이 경우 저는 다음의 순서로 확인하여 오류를 해결 할 수 있었습니다. pv 오류 pv에 설정된 노드가 오류가 있는 경우 존재하지 않는 노드에 pv 를 설정한 경우 입니다. nodeSelectorTerms의 설정을 확인하면 됩니다. 설정된 디렉토리가 없는 경우 pv의 local.path 에 설정된 디렉토리 경로가 없거나, 권한이 없을 경우 입니다. 디렉토리가 존재하는지 확인합니다. pvc 오류 pv 와 pvc 가 연결이 되지 않는 경우 pv와 pvc가 연결되지 않는 경우입니다. 이름과 스토리지 클래스를 다시 확인합니다. 스토리지 클래스가 다른 경우 차트에 설정된 스토리지 클래스의 pv 가 존재하지 않는 경우 입니다. 스토리지 클래.. 2023. 5. 29.
[hive] hive 빌드 중 Connect to conjars.org:80 [conjars.org/54.235.127.59] failed: Operation timed out (Connection timed out) 오류 처리 hive 2.3.9 버전을 빌드 할 대 다음과 같이 conjars.org 에 접근하지 못하는 오류가 발생했습니다. 원인은 conjars.org 의 경로가 변경되어 발생하였습니다. 따라서 메이븐 리파지토리 경로를 수정해 주어야 합니다. https://conjars.wensel.net/ Conjars - Read-Only Mirror Conjars was a dead easy community jar repository for open source Cascading libraries and extensions. Conjars went online around 2011. Because Conjars was little used to host new projects, becoming a security risk.. 2023. 5. 28.
[docker] 도커 실행 시 exec user process caused "exec format error" 오류 도커를 실행할 때 다음과 같은 오류가 발생할 때가 있습니다 standard_init_linux.go:228: exec user process caused: exec format error 저는 주로 맥북에서 다운로드한 이미지를 우분투에서 실행할 때 오류가 발생하였습니다. 이는 이미지의 OS 버전이 실행한 서버와 달라서 발생합니다. 실행하고자 하는 서버의 플랫폼에 맞춰서 이미지를 다운로드 해야 합니다. 특정 버전의 이미지를 다운로드 하는 명령은 다음과 같습니다. docker pull --platform linux/amd64 apache/airflow:2.5.3-python3.8 2023. 4. 28.
[hue] hue 빌드 중 my_config.h: No such file or directory 오류 처리 하는 방법 hue 빌드 중 다음과 같은 오류가 발생하는 경우가 있습니다. building '_mysql' extension x86_64-linux-gnu-gcc -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -ffile-prefix-map=/build/python2.7-W40Ff2/python2.7-2.7.18=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/include/mysql -.. 2023. 4. 17.
[docker] ubuntu 22.04의 특정 OS 버전 이미지 다운로드 및 실행하는 방법 맥북에서 ubuntu 22.04 버전의 에어플로우를 빌드 해야 하는 상황이 일이 있었습니다. 다음의 순서로 작업하여 문제를 해결할 수 있었습니다. amd64 버전의 ubuntu 22.04 버전 도커 이미지 다운로드 도커 이미지 실행 python3, pip 설치 airflow 설치 설치한 홈의 {USER_HOME}/.local 폴더를 압축 배포 하고자 하는 우분투 서버에 압축해제 2023. 4. 15.
[jupyter] 우분투 20에 쥬피터 노트북 설치 및 pyspark 연동 하기 spark 2.4.6 과 쥬피터 노트북을 연동하여 pyspark 를 실행하는 방법을 알아보겠습니다. 주의 사항 spark 2.4.6은 파이썬 3.8 버전 이상을 지원하지 않습니다. 우분투 20 이상은 파이썬 3.8 버전이 기본 설치 되어 있어서 파이썬 3.6이나 3.7을 설치하고 연동하여야 합니다. 쥬피터 노트북은 사용하고자 하는 파이썬 버전의 pip로 설치하여야 합니다. apt를 이용하여 쥬피터 노트북을 설치하면 우분투의 기본 파이썬 버전에 설치 됩니다. 우분투 20기준 파이썬 3.8에 설치 됩니다. 설치 방법 파이썬 3.6 버전 설치. 우분투 20기준 소스를 빌드해서 설치 해야 함 쥬피터 노트북 설치 pip로 설치 ipython 커널 설치 ipython 커널을 설치해야 노트북에서 이용 가능 스파크 파.. 2023. 3. 21.
[python] pandas import 시 UserWarning: Could not import the lzma module. Your installed Python is incomplete 오류 판다스를 import 할 때 이런 경고가 출력되었습니다. 이 경우 파이썬 커널을 빌드할 때 lzma 모듈이 없어서 파이썬 라이브러리에 추가 되지 못했기 때문입니다. 이 경우 다음의 명령으로 lzma 라이브러리를 추가하고 파이썬을 신규로 빌드해 주어야 합니다. sudo apt install liblzma-dev 2023. 3. 21.
[ubuntu] python 빌드 하는 방법 jupyter를 설치하기 위해서 ubuntu 20에서 파이썬 3.6 버전을 설치해야 하는 경우가 있어서 python 빌드 방법을 정리합니다. 우분투 20은 파이썬 3.8 버전이 기본 설치 되어 있습니다. 파이썬 3.6 버전을 사용하기 위해서는 소스를 다운 받아서 빌드해야 합니다. 주의 사항 설치할 때 make install 을 절대 사용하면 안됩니다. 기존에 설치된 파이썬 3.8과 중복되어 기본 적인 명령(ex: apt)이 실행되지 않을 수 있습니다. sudo update-alternatives 명령을 사용해서 기본 파이썬 명령을 변경할 때도 동일한 결과가 발생할 수 있습니다. 되도록 심링크등을 이용해서 설정하는 것이 좋습니다. apt 로 설치하는 라이브러리도 함께 설치 하고 빌드 하는 것이 좋습니다. .. 2023. 3. 21.
[jupyter] spark 2.4.6 에서 jupyter 노트북 연동 시 TypeError: an integer is required (got type bytes) 오류 처리 스파크 2.4.6 버전에서 jupyter 노트북을 연결할 때 다음과 같은 오류가 발생합니다. 스파크 2.4.6은 python2 버전을 사용하게 되어 있는데, jupyter 노트북이 python3 으로 되어 있어서 오류가 발생합니다. TypeError: an integer is required (got type bytes) 스택 오버플로우 등에서 추천하는 해결 방법은 파이썬 3.7로 쥬피터를 실행하는 방법입니다. 기존에 설치된 파이썬 버전을 확인하고 3.7 버전을 설치 하면 동작합니다. 또는 스파크 소스코드를 수정하여 처리할 수 있습니다. SPARK_HOME/python/pyspark/cloudpickle.py 파일을 수정합니다. https://stackoverflow.com/questions/587003.. 2023. 3. 16.
[kafka] golang kafka 클라이언트 SSL 설정 golang의 kafka 클라이언트에서 SSL 설정된 카프카 브로커로 연결하기 위해서는 다음의 설정이 필요합니다. config 에 다음의 설정을 추가하고 기존에 사용한 것과 동일하게 호출하면 됩니다. 2023. 3. 13.
[golang] MySql 드라이버에서 tls 로 접속하는 방법 golang 에서 mysql 드라이버를 이용하여 dsn을 설정하고 접근 하는 방법은 다음과 같습니다. tls 로 접근할 때는 tls=skip-verify 를 설정하면 됩니다. 2023. 3. 8.
[hive] 오픈소스 hive 의 git 패치 적용 hive를 이용하다 보면 버그가 있어서 이를 패치해야 할 때가 있습니다. 이때는 git apply 명령어를 이용합니다. hive 3.1.2 소스에 HIVE-19316 오류를 패치하는 방법을 알아보겠습니다. https://issues.apache.org/jira/browse/HIVE-19316 [HIVE-19316] StatsTask fails due to ClassCastException - ASF JIRA issues.apache.org 하이브 3.1.2 소스를 사용중 위 오류가 발생하여 패치를 해야할 필요가 생겼습니다. 이때는 소스 Attatchments 의 가장 마지막 파일 HIVE-19316-branch-3.patch를 다운로드 합니다, 그리고 이 파일을 소스의 root 위치에 놓아두고 다음과 같.. 2023. 3. 6.
[tar] 맥북의 tar: Ignoring unknown extended header keyword 오류 맥북에서 tar 로 압축한 파일을 리눅스에서 압축을 해제할 때 이런 오류가 발생하는 경우가 있습니다. 이 오류는 gnu-tar 와 bsd-tar 을 차이에서 발생하는 오류입니다. tar --version 을 입력하면 현재 tar 파일의 버전을 알수 있고 이를 통해 맥북은 bsd 버전의 tar 인 것을 알 수 있습니다. 이때는 맥북에 gnu tar 을 설치하고, gtar 명령을 이용해서 gnu tar 를 사용할 수 있습니다. # 맥북 bsdtar ➜ ~ tar --version bsdtar 3.5.3 - libarchive 3.5.3 zlib/1.2.11 liblzma/5.0.5 bz2lib/1.0.8 # ubuntu GNU tar $ tar --version tar (GNU tar) 1.29 Copyri.. 2023. 3. 6.