본문 바로가기

전체 글1111

[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.
[oozie] 우지 5.2.1 빌드 및 실행 우지 5.2.1 빌드 방법은 다음과 같습니다. 빌드 실행 우지를 실행하면 기본적으로는 더비 디비를 이용합니다. mysql 을 이용하기 위해서는 설정을 추가합니다. oozied.sh run oozied.sh start 설정 참고 사이트 https://oozie.apache.org/docs/5.2.1/DG_QuickStart.html#Building_Oozie Oozie – ::Go back to Oozie Documentation Index:: Oozie Quick Start These instructions install and run Oozie using an embedded Jetty server and an embedded Derby database. For detailed install and c.. 2022. 2. 2.
[oozie] 우지로 pyspark 실행 예제 우지를 이용하여 pyspark 를 실행 할 때는 다음과 같이 실행합니다. pi.py는 워크플로우 경로에 lib 폴더를 만들고 그 아래 있어야 합니다. oozie job -run -config job.porperties 2022. 2. 2.
[spark] java.lang.NoSuchMethodError: net.jpountz.lz4.LZ4BlockInputStream.<init>(Ljava/io/InputStream;Z)V 오류 수정 스파크 작업을 실행하는 중에 기본 압축 코덱의 라이브러리가 없을 때 다음 오류가 발생합니다. Job aborted due to stage failure: Task 2 in stage 0.0 failed 4 times, most recent failure: Lost task 2.3 in stage 0.0 (TID 10, hadoop-worker-1.com, executor 2): java.lang.NoSuchMethodError: net.jpountz.lz4.LZ4BlockInputStream.(Ljava/io/InputStream;Z)V at org.apache.spark.io.LZ4CompressionCodec.compressedInputStream(CompressionCodec.scala:122) a.. 2022. 1. 30.
[oozie] workflow, coordinator, bundle 예제 우지 워크플로우, 코디네이터, 번들 예제입니다. 실행을 위한 명령어는 다음과 같습니다. oozie job -run -Doozie.wf.application.path=hdfs:///workflow_example oozie job -run -Doozie.coord.application.path=hdfs:///workflow_example oozie job -run -Doozie.bundle.application.path=hdfs:///workflow_example 2022. 1. 30.
[oozie] 우지에서 스파크 액션에서 Missing py4j and/or pyspark zip files. 오류 처리 우지 스파크 액션에서 pyspark를 실행할 때 Missing py4j and/or pyspark zip files. Please add them to the lib folder or to the Spark sharelib 오류가 발생하는 경우가 있습니다. 해결 방법 우지의 sharelib 에 파이썬 라이브러리가 없어서 발생하기 때문에 우지의 spark sharelib에 스파크 파이썬 라이브러리를 추가하면 됩니다. # 스파크 홈 $ cd ${SPARK_HOME}/python/lib # 조회 $ ls -alh total 636 drwxr-xr-x 2 deploy deploy 4096 May 30 2020 ./ drwxr-xr-x 7 deploy deploy 4096 May 30 2020 ../ -rw-r-.. 2022. 1. 26.
[oozie] 우지 스파크 액션에서 리소스 매니저를 찾지 못하는 경우(Retrying connect to server: 0.0.0.0/0.0.0.0:8032.) 우지 스파크 액션에 리소스 매니저를 찾지 못하는 경우는 스파크의 리소스 매니저 기본 설정값을 추가하면 됩니다. 오류 내용 Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 0 times(s). spark-defaults.conf 설정 추가 spark-defaults.conf에 다음 내용을 추가합니다. spark.hadoop.yarn.resourcemanager.address host-name:8050 2022. 1. 26.
[ubuntu] df와 du의 용량 차이 df로 용량을 확인할 때는 사용량이 많은데 du로 확인할 때는 용량이 남는 경우가 있습니다. 이럴때는 lsof | grep delted 명령으로 사용중인 파일중 삭제할 스왑파일을 찾아보면 다음과 같이 VI 프로세스가 남아서 스왑파일이 남는 파일을 삭제 해주면 됩니다. # df로 확인할 때는 사용량이 291G 사용 $ df -h Filesystem Size Used Avail Use% Mounted on udev 7.8G 0 7.8G 0% /dev tmpfs 1.6G 7.3M 1.6G 1% /run /dev/sda2 440G 291G 132G 69% / tmpfs 7.8G 64K 7.8G 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 7.8G 0 7.8G 0% /s.. 2022. 1. 25.
[oozie] 우지 스파크 잡에서 java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SparkMain not found 오류 처리 우지 스파크 액션에서 SparkMain not found 오류가 발생할때는 oozie.use.system.libpath 를 true로 설정하면 된다. Failing Oozie Launcher, java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SparkMain not found java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SparkMain not found at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2425) at org.. 2022. 1. 25.
[hbase] hbase shell에서 데이터 필터링 hbase shell에서 데이터를 조회할 때 특정 데이터를 필터링 할 수 있습니다. 2021. 12. 29.
[hbase] hbase shell에서 ruby 를 이용하여 샘플 데이터 입력 hbase shell은 ruby 스크립트를 지원합니다. 테스트를 위한 샘플 데이터를 간단하게 입력하고 테스트할 수 있습니다. 2021. 12. 29.
[vm] ubuntu 클라우드 이미지에서 apt 사용시 E: Could not get lock /var/lib/dpkg/lock-frontend 오류 발생시 처리 방법 ubuntu의 클라우드 이미지를 사용할 때 환경에 따라서 apt 사용시 락(lock)이 걸려서 사용을 하지 못하는 경우가 있습니다. 이 경우 원인은 다른 프로세스에서 apt를 사용하고 있을 때 발생합니다. 여러 가지 원인이 있을 수 있는데 저 같은 경우에는 사용하는 네트워크 환경에서 apt의 기본 리파지토리에 접근할 수 없어서 발생하였습니다. 기본 리파지토리에 접근이 안되는데 apt-daily.service 가 실행되어 다른 패키지를 설치 할 수 없는 문제가 발생하였습니다. 해결 방법 - apt-daily.service 종료 이 문제를 해결하는 방법은 apt-daily.service를 종료하고, /etc/apt/sources.list 파일을 교체 후 다시 실행하는 것입니다. https://unix.sta.. 2021. 12. 29.
[vi] VI의 기본 인코딩을 utf-8로 설정 VI를 이용할 때 한글이 깨지는 경우가 있습니다. 이 경우는 VI의 인코딩 설정이 utf-8이 아니어서 발생합니다. 처리 방법은 두 가지가 있습니다. EX 모드(:으로 들어감)에서 set encoding=utf-8을 입력 기본 설정 변경 ~/.vimrc 파일에 set encoding=utf-8을 입력 /etc/vim/vimrc 파일에 set encoding=utf-8을 입력 2021. 12. 21.
[java] HttpClient 3.1 라이브러리 프록시 설정 httpclient3.1 버전 라이브러리의 프록시 설정을 이용한 GET 메소드 이용 예제입니다. 여러가지 예제를 찾았지만 동작하는 것이 이것 하나였습니다. 추가로 이 자바를 우분투에서 컴파일하고 실행하는 방법은 다음과 같습니다. 2021. 12. 21.
[airflow] 에어플로우 설치(celery executor + redis) 에어플로우는 웹서버, 스케줄러, 익스큐터, 메세지 큐로 구성할 수 있습니다. 웹서버, 스케줄러는 에어플로우를 설치하면 되고, 익스큐터는 로컬 익스큐터, 셀러리 익스큐터는 에어플로우를 설치하면 구성되고, 쿠버네티스 익스큐터는 따로 설정해야 합니다. 그리고 여러개의 익스큐터와 스케줄러의 통신을 위해서 메시지 큐를 설치할 수 있습니다. 또한 익스큐터간 데이터 저장을 위한 DB 도 필요합니다. 따라서 에어플로우 하나를 사용하기 위해서는 다음의 5개 컴포넌트가 필요합니다. (시퀀셜 익스큐터를 이용하는 경우 sqlite를 이용해서 웹서버, 스케줄러, 익스큐터 만 있으면 됩니다.) 여기서는 셀러리 익스큐터를 이용하는 방법을 알아보겠습니다. 웹서버 스케줄러 익스큐터 시퀀셜 익스큐터 셀러리 익스큐터 메세지큐 레디스 Ra.. 2021. 12. 20.
[openstack] 오픈스택 VM 생성 중 unexpected state 'ERROR', wanted target 'ACTIVE'. last error: %!s(<nil>) 오픈스택 VM 생성 중에 이런 오류가 발생해서 VM 생성이 안되는 경우 서버의 오류 메세지를 확인하여 원인을 확인할 수 있습니다. 아래의 "No valid host was found. There are not enough hosts available" 경우 VM을 생성할 수 있는 자원이 부족하여 발생하였습니다. 에러의 원인을 파악하여 문제를 해결후 VM을 다시 생성하면 됩니다. $ openstack server show [VM ID] +-----------------------------+--------------------------------------------------------------------------------------------------------------------------.. 2021. 12. 18.
[hive] hive 2.3 버전 log4j2 취약점 처리 방안 hive 2.3 버전은 log4j 2.6 버전을 이용하기 때문에 CVE-2021-44228 취약점을 제거해야 합니다. 취약점 https://www.popit.kr/log4j-%EB%B3%B4%EC%95%88-%EC%B7%A8%EC%95%BD%EC%A0%90-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC-%EB%B0%8F-jenkins-%EC%84%9C%EB%B2%84-%ED%99%95%EC%9D%B8-%EB%B0%A9%EB%B2%95/?fbclid=IwAR0CBgT0ZP6eLCLpPKET7KfXX3av4NGQ37io5g2Wkj4yepI07wtsEliP-Eg log4j 보안 취약점 동작원리 및 jenkins 서버 확인 방법 | Popit 최근 log4j의 보안 취약점이 크게 이슈가 되고.. 2021. 12. 13.
[java] 자바 CLI 환경에서 클래스패스를 디렉토리로 설정 하는 방법 자바를 CLI 로 실행할 때 클래스패스가 많을 때는 파일로 하나씩 추가하는 것보다 디렉토리로 설정하는 것이 더 편합니다. 이때는 디렉토리 경로를 추가해줄 수 있습니다. # 파일 단위로 클래스 패스 추가 java -classpath .:/opt/hbase/lib/hadoop-common-2.7.4.jar:/opt/hbase/lib/hbase-common-1.4.13.jar:/opt/hbase/lib/hbase-client-1.4.13.jar:/opt/hbase/lib/commons-logging-1.2.jar:/opt/hbase/lib/guava-12.0.1.jar:/opt/hbase/lib/commons-collections-3.2.2.jar:/opt/hbase/lib/protobuf-java-2.5.0.. 2021. 12. 12.
[java] Error: Could not find or load main class 오류 처리 자바를 CLI 로 컴파일 하고 실행할 대 이런 오류를 볼 경우가 있습니다. 다양한 원인이 있을 수 있는데 저의 경우는 컴파일할 때 지정한 패키지 경로에 클래스 파일이 존재하지 않아서 였습니다. 자바를 컴파일 할 때 패키지가 지정되어 있다면 디렉토리 구조와 자바에 선언된 패키지가 일치해야 합니다. # 컴파일 $ javac -classpath "/opt/hbase/lib/*:." HBaseExample.java # 실행 $ java -classpath "/opt/hbase/lib/*:." HBaseExample 2021. 12. 12.
[EMR] EMR 생성시 설정 변경 AWS EMR은 클러스터 생성 시점에 하둡 클러스터의 설정을 변경할 수 있습니다. hdfs-site.xml, core-site.xml의 설정을 json 형태로 전달하여 클러스터 생성 시점에 설정을 변경할 수 있습니다. https://docs.aws.amazon.com/ko_kr/emr/latest/ReleaseGuide/emr-configure-apps.html 애플리케이션 구성 - Amazon EMR Amazon EMR API 설명 및 나열 작업은 Amazon EMR 작업 흐름의 일부로 사용되는 사용자 지정 및 구성 가능한 설정을 내보내며 이 설정은 일반 텍스트로 표시됩니다. 이러한 설정에 암호와 같은 민감한 정 docs.aws.amazon.com 설정 변경 방법 클러스터 생성 시점에 "고급 옵션"으로.. 2021. 12. 1.
[airflow] 에어플로우 DB 초기화 중 Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql 오류 에어플로우 설치중 mysql 5.x 버전을 이용할 때 다음과 같은 오류가 발생하는 경우가 있습니다. File "/home/deploy/.local/lib/python3.6/site-packages/alembic/runtime/migration.py", line 560, in run_migrations step.migration_fn(**kw) File "/home/deploy/.local/lib/python3.6/site-packages/airflow/migrations/versions/0e2a74e0fc9f_add_time_zone_awareness.py", line 44, in upgrade raise Exception("Global variable explicit_defaults_for_timest.. 2021. 11. 30.
[kerberos] 커버로스 키탭 머지 하기 커버로스 키탭은 여러 개의 키를 하나의 키로 합칠 수 있습니다. ktutil 커맨드를 이용하여 처리할 수 있습니다. 2021. 11. 27.
[airflow] PythonOperator에서 TypeError: function() got an unexpected keyword argument 'conf' 오류 에어플로우에서 파이썬 오퍼레이터를 이용할 때 이런 오류가 발생하는 경우가 있습니다. [2021-11-25 09:49:49,343] {taskinstance.py:1150} ERROR - func() got an unexpected keyword argument 'conf' Traceback (most recent call last): File "/home/deploy/.local/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 984, in _run_raw_task result = task_copy.execute(context=context) File "/home/deploy/.local/lib/python3.6/site-package.. 2021. 11. 25.
[kerberos] 커버로스 인증 파일 캐쉬 저장 방법 커버로스 인증시 옵션을 사용하지 않으면 /etc/krb5.conf 아래 default_ccache_name 의 위치에 인증 캐쉬를 저장합니다. 기본 저장위치가 API, KEYRING 같은 경우 애플리케이션이 이를 읽지 못하기 때문에 캐쉬를 파일로 저장하여야 합니다. kinit을 할 때 -c 옵션을 이용하여 인증파일을 캐쉬로 저장할 수 있습니다. 2021. 11. 18.
[airflow] BashOperator에서 jinja2.exceptions.TemplateNotFound: 오류 에어플로우 BashOperator 에서 템플릿을 사용하지 않는데, TelplateNotFound 오류가 발생하는 경우가 있습니다. 이 경우 스크립트 뒤에 공백을 추가하면 됩니다. [2021-11-17 18:14:21,099] {taskinstance.py:1150} ERROR - /home/user/sample.sh Traceback (most recent call last): File "/home/deploy/.local/lib/python3.6/site-packages/airflow/models/taskinstance.py", line 965, in _run_raw_task self.render_templates(context=context) File "/home/deploy/.local/lib/py.. 2021. 11. 18.
[hue] hue 와 LDAP 연동 휴에서 사용자를 LDAP 서버와 연동하여 조회할 수 있습니다. 공식 문서를 참고하면 더 좋습니다. https://docs.gethue.com/administrator/configuration/server/#ldap Server :: Hue SQL Assistant Documentation Server This section is about configuring the Hue server itself. These configuration variables are under the [desktop] section in the conf/hue.ini configuration file. Basics Point to MySQL or Postgres Directly below the [[database]] line.. 2021. 11. 15.
[hadoop] no leveldbjni64-1.8 in java.library.path, no leveldbjni-1.8 in java.library.path, no leveldbjni in java.library.path, No such file or directory 오류 수정 하둡 타임라인서버 실행 중 다음과 같은 오류가 발생하였다. leveldb 라이브러리를 찾을 수 없다고 하는데, jar 파일이 기본 경로에 들어 있기 때문에 문제가 될 것이 없어 보이는데 오류가 계속 발생하였다. 2021-11-15 08:09:34,187 ERROR org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryServer: Error starting ApplicationHistoryServer java.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no leveldbjni64-1.8 in java.library.path, no leveldbjni-1.8 in.. 2021. 11. 15.
[airflow] 에어플로우 설치 간단하게 에어플로우를 설치하고, 시퀀셜 익스큐터(SequentialExecutor)와 sqlite를 이용하여 테스트용으로 사용할 수 있는 에어플로우를 설치 하는 방법을 알아보겠습니다. * 이렇게 에어플로우를 설치하면 실행할 수 있지만, 이 에어플로우는 시퀀설 익스큐터를 이용하기 때문에 한번에 하나의 작업만 가능합니다. 2021. 10. 14.
[airflow] 에어플로우 RestApi 설정 에어플로우 기본 설정은 REST API 로 접속하면 거부하게 설정이 되어 있습니다. airflow.cfg 설정의 REST API 접근 오류 # 명령어로 현재 설정 상태 확인 $ airflow config get-value api auth_backend airflow.api.auth.backend.deny_all # airflow.cfg의 설정 확인 auth_backend = airflow.api.auth.backend.deny_all # rest api 호출시 오류 $ curl http://0.0.0.0:8080/api/v1/dags/example/dagRuns { "detail": null, "status": 401, "title": "Unauthorized", "type": "https://airfl.. 2021. 10. 6.