본문 바로가기

빅데이터405

[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.
[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.
[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.
[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.
[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.
[hive] hive 와 db 연결에서 Public Key Retrieval is not allowed 오류가 발생하는 경우 처리 mysql 8.x나 5.x에서 데이터베이스 접속 암호를 암호화 처리 하는 경우 다음과 같은 오류가 발생할 수 있습니다. 이럴 때는 데이터베이스 커넥션 스트링에 옵션을 추가하여 문제를 해결할 수 있습니다. 오류 : Public Key Retrieval is not allowed $ /opt/hive/bin/schematool -dbType mysql -initSchema Metastore connection URL: jdbc:mysql://xxx.xx:3306/db_name?useSSL=false Metastore Connection Driver : com.mysql.cj.jdbc.Driver Metastore connection User: sha256_user org.apache.hadoop.hive.m.. 2021. 10. 6.
[hue] 데이터베이스 마이그레이션 중 django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient.so.20 오류 휴 데이터베이스를 마이그레이션 하는 중에 다음의 오류가 발생하는 경우가 있습니다. 이때는 mysql 라이브러리를 설치 해주면 됩니다. 방법1: pymysql 라이브러리 설치 첫 번째 방법은 파이썬용 pymysql 라이브러리를 설치 하는 것입니다. 설치 방법은 다음과 같습니다. pip install pymysql 방법2: mysql lib 설치 첫 번째 방법을 이용하여 라이브러리를 설치 하는 중 오류가 발생할 수 있습니다. 이때는 mysql 라이브러리를 설치 하면 됩니다. TypeError: 'encoding' is an invalid keyword argument for this function 2021. 10. 6.
[alluxio] 알루시오 설치 및 실행 알루시오(alluxio)는 인메모리 분산 스토리지 시스템 입니다. 알루시오는 여러 종류의 저장 시스템을 하나의 시스템인 것 처럼 이용할 수 있게 해줍니다. 예를 들어 하이브에서 테이블을 만들때 다음과 같이 로케이션을 주고 테이블을 생성하고, 알루시오는 해당 위치에 HDFS, S3, GS, Azure, HBase 등을 마운트해서 사용할 수 있습니다. CREATE TABLE u_user ( userid INT, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' LOCATION 'alluxio://master:port/table_data'; 즉, 알루시오는 논리적인 저장장소의 위치를 제공하고, 실제 데이터가 저장된 물리적인 저장 위치는 다양하게 연동할 수 있게 .. 2021. 9. 28.
[presto] 프레스토(presto) 설치 및 실행 프레스토 설치 방법을 알아보겠습니다. 프레스토를 다운로드 하고 압축을 해제합니다. 프레스토의 설정 3가지를 {프레스토홈}/etc 에 설정합니다. jvm.config config.properties node.properties 커넥터를 설정합니다. {프레스토홈}/etc/catalog 에 하이브 연동을 위한 카탈로그를 설정합니다. hive.properties 하이브에 하둡 관련 설정을 전달하기 위한 설정 파일을 생성합니다. hive.properties 파일에 hdfs-site.xml, core-site.xml 파일 위치를 지정합니다. 설정 파일 카탈로그 설정 파일 실행 확인 카탈로그까지 설정 후 프레스토 CLI를 실행하고 데이터를 확인할 수 있습니다. 2021. 8. 23.
[amundsen] 도커를 이용한 아문센(amundsen) 실행 방법 아문센은 데이터 카탈로그 플랫폼의 하나로 사내 데이터 확인을 위한 플랫폼 입니다. 사내 여러곳에 저장되어 있는 데이터 위치를 모아서 보여주고, 추천해 주는 시스템입니다. https://www.amundsen.io/amundsen/installation/ Quick Start - Amundsen  Installation Bootstrap a default version of Amundsen using Docker The following instructions are for setting up a version of Amundsen using Docker. Make sure you have at least 3GB available to docker. Install docker and docker-comp.. 2021. 8. 22.