HDFS를 운영중 네임노드가 일시적으로 중단되었을 때 데이터노드가 블록 리포트를 네임노드에 전달하고 응답을 받지 못하면 StaleStorage가 발생합니다. 이 오류는 일시적인 오류이기 때문에 일반적으로 모르고 넘어갈 수 있습니다. 데이터노드의 블록 리포트는 기본적으로 6시간(dfs.blockreport.intervalMsec)에 한번씩 생성하기 때문에 이 오류는 네임노드가 정상이 되어도 바로 사라지지 않습니다. 이럴 때는 FS 명령을 이용해서 오류를 바로 처리할 수 있습니다.
파이썬에서 MySQL이나 MariaDB를 이용할 때는 pymysql 라이브러리를 이용합니다. pip를 이용하여 라이브러리를 먼저 설치하고 다음의 예제를 이용하면 됩니다. pymysql 설치 pip install PyMySQL execute vs executemany execute는 단발성 입력 executemany는 배치 잡을 처리 dict 형으로 데이터를 입력할 때 DB의 키워드(예약어) 데이터가 있으면 오류가 발생함.
파이썬 2에서는 유니코드가 제대로 출력되지 않기 때문에 웹서버응답으로 한글이 들어오면 유니코드자체가 출력되는 경우가 있습니다. 유니코드를 한글로 출력하는 방법은 인코딩을 추가하면 확인할 수 있지만 에러 메시지일때는 간단하게 확인하기가 어렵습니다. 이럴 때는 간단하게 python3에서 유니코드를 출력하면 한글을 확인할 수 있습니다. # 오류 [08/Dec/2020 21:55:05 +0900] forms ERROR u'\uac00\ub2a5\ud55c \uad6c\uc131 \uc624\ub958' to boolean value # 파이썬3 실행후 출력 $ python3 Python 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1 20191121 (Red Hat 8...
hue에서 too many open sessions. stop a running query before starting a new one 오류가 발생하는 경우 일반적인 경우 사용자가 많아서 설정된 세션 개수를 초과해서 발생합니다. 이런 경우 휴 설정의 max_number_of_sessions 값을 늘려주면 됩니다. 하지만 저의 경우 휴를 설정하면서 휴의 실행, 종료를 반복하다보니 정상적으로 종료되지 못한 세션이 존재하여 발생하였습니다. 이럴 때는 휴의 데이터베이스에서 세션정보를 찾아서 지워주면 됩니다. 아래와 같이 beeswax_session 테이블에 이전에 테스트할 때 생성한 세션의 정보가 살아 있어서 오류가 발생하여 모든 정보를 지우고 세션을 새로 생성하여 문제를 해결하였습니다. mysql> sele..
주키퍼의 슈퍼유저가 되면 모든 노드의 ACL을 설정할 수 있습니다. 슈퍼 유저가 되기 위해서는 다음의 과정을 거쳐야 합니다. DigestAuthenticationProvider를 실행하여 해쉬값을 확인 DigestAuthenticationProvider를 먼저 실행하여 암호에 대한 해쉬값을 확인합니다. export ZK_CLASSPATH=/etc/zookeeper/conf/:/usr/hdp/current/zookeeper-server/lib/*:/usr/hdp/current/zookeeper-server/* java -cp $ZK_CLASSPATH org.apache.zookeeper.server.auth.DigestAuthenticationProvider super:super123 OUTPUT: sup..
오류 HBase 리전서버 실행중 아래와 같이 Reported time is too far out of sync with master. Time difference of 52328ms > max allowed of 30000ms 오류가 발생하였습니다. 2020-12-02 14:22:15,357 INFO [regionserver/:16020] regionserver.HRegionServer: STOPPED: Unhandled: org.apache.hadoop.hbase.ClockOutOfSyncException: Server ,16020,1606886533858 has been rejected; Reported time is too far out of sync with master. Time differen..
하둡 fs 명령에서 디버깅을 위한 메세지를 출력하고 싶을 때는 하둡의 로깅 레벨을 변경하면 됩니다. 다음은 HADOOP_ROOT_LOGGER를 변경하여 fs 커맨드에서 로그를 출력하는 방법입니다. export HADOOP_ROOT_LOGGER=DEBUG,console # 로그가 출력됨 $ hadoop fs -Dfs.swift.service.kw.username= -Dfs.swift.service.kw.password= -ls swift://default.service/ 20/11/04 08:24:37 DEBUG util.Shell: setsid exited with exit code 0 20/11/04 08:24:37 DEBUG conf.Configuration: parsing URL jar:file:/..
postgres에서 테이블 목록에 존재하는 테이블을 조회할 때 테이블이 존재하지 않는다고 나올때가 있습니다. postgres=> \dt List of relations Schema | Name | Type | Owner --------+---------------------------+-------+---------- public | VERSION | table | hiveuser -- 조회 안됨 postgres=> select * from VERSION; ERROR: relation "version" does not exist LINE 1: select * from VERSION; ^ -- 조회 됨 postgres=> select * from "VERSION"; VER_ID | SCHEMA_VERSIO..
CentOS에서 AdoptOpenJDK 설치할 때 명령은 다음과 같습니다. 이 명령으로 설치할 수 없다면 리파지토리 설정을 추가해야 합니다. yum install -y adoptopenjdk-8-openj9 리파지토리 설정 리파지토리는 /etc/yum.repos.d에 repo 파일을 추가하면 됩니다. $ ls /etc/yum.repos.d $ vi adopt.repo [AdoptOpenJDK] name=AdoptOpenJDK baseurl=http://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/centos/$releasever/$basearch enabled=1 gpgcheck=1 gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/..
문제 우지에서 하이브를 이용할 때 다음의 오류가 발생하는 경우가 있습니다. 이 경우는 우지의 쉐어 라이브러리(sharelib)설정을 이용하지 않을 때 로컬에서 라이브러리를 확인하지 못할 때 발생할 수 있습니다. Caused by: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.HiveMain not found at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2273) at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2367) ... 13 more 해결 방법 우지 작업 실..
문제 하이브 작업중 다음과 같은 오류가 발생하였습니다. 하이브 테이블의 파티션 정보를 읽어오는 중에 문제가 발생한 것으로 생각되는데 클래스를 보면 kyro.util 관련 클래스를 사용하고 있습니다. 이는 spark에서 사용하는 클래스로 버그로 인해서 문제가 발생하고 있고, 하이브 작업에서 단독으로 작업을 할 때는 필요하지 않습니다. Serialization trace: partSpec (org.apache.hadoop.hive.ql.plan.PartitionDesc) aliasToPartnInfo (org.apache.hadoop.hive.ql.plan.MapWork) at org.apache.hadoop.hive.ql.exec.Utilities.getBaseWork(Utilities.java:463) ..
Helm 차트를 이용할 때 yaml 파일에서 다음과 같은 오류가 발생하였습니다. 스펙에 존재하는 필드인데 존재하지 않는 다는 오류가 발생하는데 이런 경우 yaml 파일을 찾아보면 들여쓰기가 제대로 되지 않아서 오류가 발생하였습니다. yaml 파일으 데이터의 구분을 들여쓰기(indentation)으로 구분하기 때문에 잘 구분해서 사용해야 합니다. Error: error validating "": error validating data: ValidationError(StatefulSet.spec.template.spec): unknown field "emptyDir" in io.k8s.api.core.v1.PodSpec script returned exit code 1
AWS에서 EMR을 생성하고 ssh 연결을 설정하는 방법은 다음과 같습니다. EC2 키페어(KeyPair) 생성 EMR 생성시 키페어 선택 ssh 인바운드 규칙 추가 키페어로 접속 EC2 키페어 생성 AWS 콘솔의 EC2 대시보드에서 키 페어를 먼저 생성합니다. 키 페어를 생성하면 로컬에 생성한 키페어가 생성한 이름으로 xxx.pem 형식으로 다운로드 됩니다. EMR 생성시 키페어 선택 EC2 생성시 이전에 생성한 키페어를 선택합니다. ssh 인바운드 규칙 추가 EMR의 마스터 노드에 접속하기 위한 인바운드 규칙을 추가해야 합니다. 보안 및 액세스 > 마스터 보안 그룹 > ElasticMapReduce-master 선택 보안그룹에서 ElasticMapReduce-master 선택 인바운드 규칙 추가 유형..
CentOS에서 마리아DB를 설치하고 사용자 권한을 설정하는 방법은 다음과 같습니다. 설치 sudo yum install mariadb-server # 시작 sudo systemctl start mariadb # 종료 sudo systemctl stop mariadb 사용자 권한 설정 CREATE USER 'user_name'@'%' identified by 'password'; CREATE USER 'user_name'@'localhost' identified by 'password'; CREATE DATABASE db_name; grant all privileges on db_name.* to 'user_na..
문제 Hue를 빌드할 때 다음의 오류가 발생할 수 있습니다. 컴파일 된 pyc 파일과 실행환경의 파이선 버전이 달라서 데이터를 읽을 수 없을 때 발생하는 오류입니다. ValueError: bad marshal data (unknown type code) 해결 방법 Hue를 빌드 할 때. 파이선3의 환경으로 설정하라고 되어 있었지만 장고 모듈을 빌드하는 과정에서 해당 오류가 발생하여 파이썬2로 빌드하여 문제를 해결할 수 있었습니다. export PYTHON_VER=python2.7 해당 오류는 pyc 파일을 삭제하고 실행 환경의 파이썬으로 다시 빌드하면 해결할 수 있습니다. find . -name "*.pyc" 참고 marshal을 이용해서 파일을 읽는 방법은 다음과 같습니다. import marshal ..
문제 Hue를 설정할 때 하이브서버2(HiveServer2)와 연결할 때 하이브서버2의 쓰리프트 연결 모드가 http일 경우에만 동작합니다. 쓰리프트 모드가 binary일 경우 다음과 같은 오류가 발생합니다. The application won't work without a running HiveServer2 해결 방법 하이브서버2의 쓰리프트 모드 변경을 위해 hive-site.xml 파일에 설정을 변경하고 재시작합니다. hive.server2.transport.mode http
하이브 실행 엔진을 설정하고 맵리듀스, 테즈를 실행하기 위해서는 실행을 위한 라이브러리를 HDFS에 업로드 하고 설정파일에 각 라이브러리의 위치를 지정해야 실행할 수 있습니다. 다음 파일의 위치는 HDFS 상의 위치입니다. MR 엔진: mapred-site.xml mapreduce.application.framework.path /hadoop/apps/mapreduce/hadoop-version.tar.gz#mapreduce TEZ 엔진: hive-site.xml tez.lib.uris /hadoop/apps/tez/tez.tar.gz
문제 hue를 빌드하는 중에 libffi 패키지에서 다음 파일이 없어서 오류가 발생하는 경우가 있습니다. 이는 파이썬 2, 파이썬 3의 설치 여부에 따라 디펜던시 정보가 달라져서 발생합니다. fatal error: ffi.h: No such file or director 해결방법 이 문제가 발생하면 다음 설치를 파이썬2, 파이썬3를 설치하고 다시 실행하면 됩니다. sudo yum install ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-plain gcc gcc-c++ krb5-devel libffi-devel libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel sqlite-de..
문제 hue를 빌드하는 중에 파이썬 mysql 라이브러리에서 MySQL-python-1.2.5 컴포넌트를 빌드하는 중 다음 오류가 발생하였습니다. _mysql.c: Cannot open include file my_config.h 해결방법 이 문제를 해결하는 방법은 MySQL 개발 페이지에서 my_config.h 파일을 다운로드 받아서 컴포넌트의 위치에 복사하면 됩니다. MySQL 개발 페이지 https://dev.mysql.com/doc/dev/mysql-server/8.0.11/my__config_8h_source.html
intellij에서 그래들을 이용하여 빌드를 할 때 build.gradle 파일에서 "No candidates found for method call plugins." 오류가 발생하는 경우가 있습니다. Reload All Gradle Projects 처리 Help > Find Action > Reload All Gradle Projects 그래들 프로젝트를 리로드 intellij 재부팅 인텔리J를 재실행 하면 라이브러리를 다시 로드 하여 문제가 해결됨
스파크쉘으르 이용하여 작업을 실행하면 작업에 필요한 라이브러리를 묶어서 hdfs에 올리고, 이 라이브러리를 사용해서 워커노드에서 작업을 처리합니다. 따라서 hdfs연결 설정이 올바르지 않으면 해당 오류가 발생합니다. java.io.FileNotFoundException: File file:/tmp/spark-126d2844-5b37-461b-98a4-3f3de5ece91b/__spark_libs__3045590511279655158.zip does not exist at org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:611)해결방법 /etc/spark/spark-env.sh에서 configura..
postgres의 명령어를 알아보겠습니다. 사용자 목록 조회: \du postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- a | | {} h | | {} o | | {} postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} 데이터 베이스 목록 조회: \l postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privile..
우지에서 더비(derby) 데이터베이스를 사용하지 않고 외부의 데이터베이스를 사용하기 위해서는 다음의 설정을 oozie-site.xml에 설정하고, ooziedb.sh를 실행하면 됩니다. lib 아래 데이터 베이스 라이브러리를 넣어 주어야 합니다. # -sqlfile은 데이터베이스를 설정한 명령을 저장 ./ooziedb.sh create -sqlfile /var/tmp/oozie/oozie.sql -run oozie db 연결 설정 oozie.service.JPAService.jdbc.driver=org.postgresql.Driver oozie.service.JPAService.jdbc.url=jdbc:postgresql://postgres_url/ oozie.service.JPAService.jdbc..
스파크쉘의 마스터를 yarn으로 설정하고 yarn 클러스터 외부의 클라이언트에서 실행할 때 다음의 오류가 발생하는 경우가 있습니다. 오류 $ ./spark-shell --master yarn Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). 20/09/09 16:01:26 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 20/09/09 16:0..
hbase의 리전서버가 등록될 때 같은 서버가 호스트명(hostname)과 IP로 중복되어 등록되는 경우가 있습니다. 로그를 확인해 보면 다음과 같습니다. 정상 상태일 때는 서버의 도메인 명인 region-server.com으로 등록하고, 오류 상태일 때는 IP로 받아서 호스트명인 region-server로 등록합니다. 이 경우 동일한 서버가 중복 등록되어 오류가 발생합니다. # 정상 상태 2020-09-02 14:42:53,335 INFO [B.defaultRpcServer.handler=8,queue=2,port=16000] master.ServerManager: Registering server=region-server.com,16020,1599025371919 # 오류 상태 2020-09-02 1..
우지 4.3.0을 설정하는 중 Cannot initialize Cluster 오류가 발생하였습니다. 오류 우지 작업 중 클러스터를 초기화하지 못한다는 오류가 발생하였습니다. 오류 내용은 mapreduce.framework.name=yarn으로 설정되어 있기 때문에 고가용성(HA) 구성된 리소스 매니저의 주소를 확인하지 못하는 것으로 생각하였습니다. Caused by: java.io.IOException: Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the correspond server addresses. at org.apache.hadoop.mapreduce.Cluster.initia..
GCP의 빅쿼리를 간단하게 알아보고, 빅쿼리 CLI를 이용하는 방법을 알아보겠습니다. 빅쿼리(BigQuery)란? 구글 클라우드(GCP)에서 제공하는 완전 관리형 데이터 분석 플랫폼 서버관리 없음, 쿼리로 데이터를 조회하는 서비스형 솔루션 저장비용과 조회비용이 있음 구글 클라우드 저장소와 다른 빅쿼리 저장소 비용있음 웹UI, CLI 환경에서 이용 가능 칼럼 기반으로 데이터를 저장 키나, 인덱스 개념 없음 갱신, 삭제 불가 데이터 복제를 통해 장애 복구에 대비함 BigQuery 문서 BigQuery 문서 | Google Cloud 대규모 데이터세트를 양방향으로 분석합니다. cloud.google.com 빅쿼리 구성 빅쿼리 데이터는 관계형 데이터베이스와 유사한 형태로 프로젝트, 데이터셋트, 테이블로 구성 프..
에어플로우 컨셉 에어플로우 공식 컨셉 문서를 통해 작업을 실행하고, 모니터링 하는 방법을 알아보겠습니다. 핵심 구상 DAG 파이썬으로 정의한 작업의 모음 작업 = Task = Operator 동작의 실행순서, 동작 시간, 공통 파라미터 등을 정의 에어플로우의 DAG_FOLDER에 파이썬 파일을 생성하면 에어플로우가 주기적으로 해당 폴더를 스캔하여 인식함 Scope 에어플로우는 파이썬 파일에 선언된 DAG를 모두 로딩 DAG는 글로벌 영역으로 선언되어야 함 자주 사용하는 패턴등을 SubDagOperator로 구현할 수도 있음 기본 파라미터 default_args는 모든 오퍼레이터에 적용 됨 공통 파라미터를 모든 오퍼레이터에 전달 default_args = { 'start_date': date..
- Total
- Today
- Yesterday
- airflow
- SQL
- 파이썬
- ubuntu
- 하둡
- S3
- mysql
- build
- java
- nodejs
- 오류
- hbase
- Python
- 하이브
- AWS
- HDFS
- SPARK
- 백준
- Linux
- yarn
- 정올
- 다이나믹
- oozie
- Hadoop
- 알고리즘
- error
- Tez
- bash
- emr
- HIVE
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |