스파크 SQL에서는 JDBC드라이버를 이용해서 데이베이스에 직접 접근해서 정보를 가져올 수 있습니다. spark-shell, spark-submit으로 실행할 때 데이터베이스에 접근하기 위한 jar 파일을 함께 제공해야 합니다. 샘플 코드 import java.util.Properties // 프로퍼티 설정 val prop = new Properties() prop.put("user", "db_user_name") prop.put("password", "db_password") // 데이터베이스 연결 및 뷰 생성 val tableDf = spark.read.jdbc("jdbc:mysql://mysql_url:mysql_port/database_name", "table_name", prop) tableDf..
스파크 SQL에서는 JDBC 드라이버를 이용해서 데이터베이스에 접근할 때 다음과 같은 오류가 발생하는 경우가 있습니다. 에러 로그 19/11/12 03:07:36 INFO StateStoreCoordinatorRef: Registered StateStoreCoordinator endpoint Exception in thread "main" java.sql.SQLException: No suitable driver at java.sql.DriverManager.getDriver(DriverManager.java:315) at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$anonfun$6.apply(JDBCOptions.scala:105) at..
YARN은 2.6버전 부터 노드 레이블 기능을 제공합니다. 레이블은 서버를 특성에 맞게 구분하여 애플리케이션을 실행할 수 있는 기능을 제공합니다. 노드 레이블은 서버의 타입(ex: SSD, GPU)에 따라 작업을 처리하도록 구성할 수 있음 빠른 IO가 필요한 작업은 SSD 중심의 서버를 이용하도록 설정 빠른 CPU연산이 필요한 작업은 GPU를 이용할 수 있는 서버를 이용하도록 설정 특징 노드는 하나의 파티션을 가짐 기본 파티션은 DEFAULT이고 partiton="" 노드별로 설정을 다르게 할 수 있음 노드 파티션은 두가지 종류가 있음 Exclusive 설정한 노드만 사용할 수 있음 Non-Exclusive 운영상황에 여유가 있을때는 다른 노드도 이용 가능 Node Labels in YARN from D..
EMR 5.24에서 우지와 스파크 sql을 이용하여 작업을 하려고 하면 다음과 같은 오류가 발생합니다. 에러로그 Caused by: java.lang.IllegalArgumentException: Unable to instantiate SparkSession with Hive support because Hive classes are not found. at org.apache.spark.sql.SparkSession$Builder.enableHiveSupport(SparkSession.scala:870) at com.sec.bigdata3.analyzer.scala.profile.RunestoneProfile$.main(RunestoneProfile.scala:32) at com.sec.bigdata3..
하둡은 데이터를 저장할 때 HadoopFileSystem API를 이용하여 파일 시스템에 데이터를 저장합니다. 이 API를 이용하여 HDFS나 S3에 데이터를 저장할 수 있습니다. HDFS 분산 파일 시스템 대량의 데이터 처리에 유리 큰 사이즈의 파일에 최적화 네임노드가 메타데이터를 관리하고, 데이타노드가 데이터를 블록단위로 저장 하둡 3.x에서는 이레이져 코딩, 라우터 기반 연합, ozone 도입 Hadoop FileSystem API, 하둡 fs 커맨드, 웹 UI로 접근 S3 AWS에서 제공하는 객체 저장 시스템 확장성, 고가용성, 내구성, 보안, 성능 등의 특징을 가짐 저장용량과 요청 횟수에 따라 과금 키 기반으로 데이터가 저장됨. 디렉토리 시스템 아님. 파일 시스템 아님 REST API, AWS ..
2018년 4월 발표된 우지 5.0의 특징에 대해서 알아보겠습니다. 기존 4.3에서 사용하던 워크플로우와 기능을 그대로 이용할 수 있어서 특별히 수정해야 할 점은 없습니다. 특징 우지 런처가 맵리듀스 매퍼에서 YARN 애플리케이션 마스터로 변경 YARN 애플리케이션 타입에 Oozie Launcher로 나옴 우지 웹서버가 톰캣6에서 Jetty9으로 변경 웹 UI를 신규로 작성 ExtJS를 제외하고 새로 작성 서드파티 라이브러리 갱신 JDK8 지원 DB 쿼리 성능 향상을 위해서 인덱스 추가 보안취약점 수정(CVE-2017-15712 ) 참고 아파치 재단 블로그 - 바로가기 우지 5.0 - 홈페이지
EMR 5.24로 변경후 hive cli에서 set tez.queue.name을 실행하여도 큐가 설정되지 않는 문제가 발생하였습니다. 상황 YARN의 큐 설정을 변경 기존 default큐를 제거하고, dynamic, batch로 큐를 설정 hive CLI에서 큐를 설정하고 작업을 실행하면 오류발생 Caused by: java.util.concurrent.ExecutionException: org.apache.tez.dag.api.TezException: org.apache.hadoop.yarn.exceptions.YarnException: Failed to submit application_111122223333_0034 to YARN : Application application_111122223333..
log4j 패턴 레이아웃의 기본설정입니다. appender.console.type = Console appender.console.name = console appender.console.layout.type = PatternLayout appender.console.layout.pattern = [%d{yyyy-MM-dd HH:mm:ss}] [%-5p] [%c{1}:%L] - %m%n rootLogger.level = debug rootLogger.appenderRef.console.ref = console 출력 [2019-11-04 07:10:15] [INFO ] [Driver:2181] - Starting task [Stage-0:DDL] in serial mode # [%d{yyyy-MM-dd H..
EMR에서 사용하는 우지 5.1에서 다음과 같은 오류가 발생하였습니다. Error: E0307 : E0307: Runtime error [App directory [null] does not exist and app definition cannot be created because of missing config value [oozie.jobs.api.generated.xml]] 원인 OOZIE-3386 우지 5.1.0에서 발생하고 패치 되었으나 EMR에서는 발생 해결방법 HDFS에서 올려놓은 workflow.xml의 이름을 파라미터로 전달 $ oozie job -config coordinator.properties -run -Doozie.jobs.api.generated.xml=workflow.xml
우지 5.0에서 log4j 설정을 읽지 못해서 발생하는 오류는 우지의 쉐어라이브러리에 log4j 설정을 복사해서 적용할 수 있습니다. SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/mnt/yarn/filecache/56/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/lib/hadoop/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.sl..
메이븐 빌드를 처리할 때 PKIX 오류가 발생할 경우가 있습니다. 보통 내부망에서 사용하는 인증서가 자바의 인증서 목록에 등록되어 있지 않을 때 발생합니다. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 해결방법 자바의 인증서에 내부망의 인증서를 등록하면 됩니다. keytool 명령어는 사용하고자 하는 자바의 bin 폴더 아래 존재합니다. 여기에 인증서 목록(key store)의 위치를 지정하고, 인증서 파일의 경로(file)를 입력하면 됩니다. 각 경로는 절대 경로를 입력해도 됩니다. %J..
AWS EMR의 버전을 선택할 때는 버전에 따른 hadoop, hive, hue, spark 등의 버전을 확인해서 기존에 사용하는 애플리케이션과의 정합성을 확인해야 합니다. 다음 사이트에서 버전별 차이를 확인할 수 있습니다. 각 버전에 알려진 버그에 대해서도 기록되어 있기 때문에 이를 확인하고 작업하는 것이 좋습니다. 내용을 보면 5.20 버전에는 Hue와 하이브 TEZ의 작업에 문제가 있는 것을 확인할 수 있습니다. https://docs.aws.amazon.com/ko_kr/emr/latest/ReleaseGuide/emr-whatsnew-history.html Amazon EMR 새로운 소식 기록 - Amazon EMR Amazon EMR 새로운 소식 기록 모든 Amazon EMR 릴리스 버전의 릴..
ssh 터널링을 이용하여 원격지의 포트에 접속할 때 다음과 같은 오류가 발생하는 경우가 있습니다. channel 3: open failed: connect failed: Connection refused channel 3: open failed: connect failed: Connection refused 터널링 명령어 이때 사용한 터널링 명령어는 다음과 같았습니다. 로컬호스트의 14000포트와 원격지(10.20.30.40)의 8088 포트를 연결하였습니다. ssh -L 14000:127.0.0.1:8088 -oPort=20022 user@10.20.30.40 해결방법 원인은 원격지에 127.0.0.1에 대한 루프백설정이 막혀있어서 발생한 오류였습니다. 따라서 터널링 명령을 다음과 같이 변경하면 됩니다..
우지를 이용해서 액션을 실행할 때 다음과 같이 log4j 설정 정보를 찾지 못해서 기본설정으로 작업하여 에러로그만 출력하는 경우가 있습니다. 이때는 로그설정 파일을 우지 액션에서 함께 전달하면 됩니다. SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/mnt/yarn/filecache/56/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/lib/hadoop/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLogger..
IPv4와 IPv6에 대해서 간단하게 알아보겠습니다. IPv4 전체 12자리 숫자 32bit(8bit * 4) 주소체계 0~255까지의 3자리 숫자 4개로 구성 127.0.0.1 https://ko.wikipedia.org/wiki/IPv4 IPv6 IPv4의 주소체계 고갈로 탄생 128bit 주소체계 16bit로 표현된 16진수로 8자리로 구성 0000을 하나의 0으로 줄이거나, 연속되는 0을 없애고 : 로 구분할 수 있음 다음의 주소는 모두 동일한 주소를 알림 2001:0DB8:0000:0000:0000:0000:1428:57ab 2001:0DB8:0000:0000:0000::1428:57ab 2001:0DB8:0:0:0:0:1428:57ab 2001:0DB8:0::0:1428:57ab 2001:0D..
YARN의 커패시티 스케줄러의 큐는 운영중에 추가는 할 수 있지만, 삭제 할 수는 없습니다. 기존에 설정된 큐를 삭제하는 경우 다음과 같은 오류가 발생합니다. 리소스 매니저를 재시작해야 설정이 적용됩니다. 리소스 매니저 재시작 # 정지 $ sudo stop hadoop-yarn-resourcemanager # 실행 $ sudo start hadoop-yarn-resourcemanager 오류 $ yarn rmadmin -refreshQueues 19/10/31 04:26:55 INFO client.RMProxy: Connecting to ResourceManager at /10.11.60.235:8033 refreshQueues: java.io.IOException: Failed to re-init qu..
YARN의 커패시티 스케줄러를 설정하면서 root큐 아래 설정된 하위큐가 사용할 수 있는 코어(CORE) 레이블의 용량(capacity)의 합이 100을 넘어서 발생하는 오류입니다. capacity-scheduler.xml에 설정된 yarn.scheduler.capacity.root.[큐이름].accessible-node-labels.CORE.capacity 값의 총합이 100을 넘지 않도록 수정하고 yarn rmadmin -refreshQueues를 입력하여 큐 설정을 변경합니다. $ yarn rmadmin -refreshQueues 19/10/31 04:20:14 INFO client.RMProxy: Connecting to ResourceManager at /10.11.60.235:8033 refr..
EMR의 우지(oozie)를 이용하면서 다음과 같이 com.amazon.ws.emr.hadoop.fs.EmrFileSystem 클래스를 찾지 못한다는 오류를 발견하면 클래스패스에 라이브러리를 가지고 있는 jar 파일의 위치를 추가해주면 됩니다. Caused by: java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2273) at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2367) ... ..
원격 하이브 메타스토어를 이용하기 위해서는 RDB에 하이브 메타스토어 스키마를 설정해야 합니다. hive-site.xml에 RDB에 접속을 위한 정보를 입력하고, 커맨드를 입력하여 스키마를 생성할 수 있습니다. hive-site.xml 설정 원격 데이터베이스에 접속하기 위한 접속정보를 설정합니다. javax.jdo.option.ConnectionURL jdbc:mysql://database_ip:database_port/database_name javax.jdo.option.ConnectionDriverName org.mariadb.jdbc.Driver javax.jdo.option.ConnectionUserName user_name javax.jdo.option.ConnectionPassword pas..
자바의 라이선스 만료로 인하여 윈도우에서 open jdk 설치할 때는 다음과 같이 진행합니다. 깃허브에서 빌드된 자바 다운로드(https://github.com/ojdkbuild/ojdkbuild) 합니다. msi 파일은 실행하여 설치 안내메시지에 따라서 진행하면 됩니다. zip 파일은 원하는 경로에서 압축을 풀고, 환경변수에 JAVA_HOME을 지정합니다. JAVA_HOME은 {JAVA_LOCATION}/bin 까지 설정해야 합니다.
SLF4J를 이용하는 여러 가지 라이브러리를 함께 이용할 때 다음과 같은 오류가 발생할 수 있습니다. 해결 방법은 중복된 라이브러리를 정리해 주는 것입니다. 설치되어 있는 상태라면 아래의 경우 중복된 2개의 라이브러리중 하나를 삭제(rm) 또는 이동(mv) 예를 들면 rm /usr/lib/oozie/lib/slf4j-simple-1.6.6.jar 명령으로 jar 파일 삭제 빌드가 가능한 상황이라면 메이븐이나 그래들의 명령을 이용해 중복된 라이브러리는 빼고 로드하도록 설정 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/lib/oozie/lib/slf4j-log4j12-1.6.6.jar!/or..
AWS-EMR 에서 카프카와 스파크를 연동할 때 다음의 오류가 발생하면 kafka-client jar 파일을 추가해 주면 됩니다. scala> val query = df.writeStream.outputMode("append").format("console").start() java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/ByteArrayDeserializer at org.apache.spark.sql.kafka010.KafkaSourceProvider.createSource(KafkaSourceProvider.scala:74) at org.apache.spark.sql.execution.datasources.DataSource..
AWS EMR에서 스파크와 카프카를 연동할 때 EMR은 카프카 라이브러리를 기본적으로 제공하지 않기 때문에 다음과 같은 오류가 발생합니다. scala> val df = spark.readStream.format("kafka").option("kafka.bootstrap.servers","localhost:9092").option("subscribe","test").load() java.lang.ClassNotFoundException: Failed to find data source: kafka. Please find packages at https://cwiki.apache.org/confluence/display/SPARK/Third+Party+Projects at org.apache.spark.sq..
스파크를 스파크 쉘(spark-shell)을 이용하여 처리할 때 카프카와 연동할 때 다음의 오류가 발생하는 경우가 있습니다. scala> val df = spark.readStream.format("kafka").option("kafka.bootstrap.servers=localhost:9092").option("subscribe=test").load() :23: error: overloaded method value option with alternatives: (key: String,value: Double)org.apache.spark.sql.streaming.DataStreamReader (key: String,value: Long)org.apache.spark.sql.streaming.DataS..
로또 문제는 백트래킹을 이용해서 해결합니다.
이번 22회 시험에 아슬아슬하게 합격해서 ADsP 22회 시험 후기 및 ADsP 자격증 공부방법을 정리하였습니다. 시험 준비 데이터분석 준전문가 시험은 데이터 이해, 데이터 분석 기획, 데이터 분석 3과목으로 구성되어 있습니다. 21회 시험부터 기출 경향이 바뀌어서 기존 기출문제와 출제되는 문제의 경향이 다르기 때문에, 기출문제만 봐서는 합격이 어렵습니다. 기출문제와 비슷한 문제가 거의 나오지 않기 때문에 통계학과 데이터베이스에 대해 잘 모르시는 분은 한달 정도 공부하는 것이 좋을 것 같습니다. 공부방법은 1장 데이터 이해는 데이터, 데이터베이스, 데이터사이언스, 빅데이터의 개념에 대해서 알아두는 것이 좋습니다. 2장 데이터 분석 기획은 방법론에 관한 내용이 많아서 외워야하는 부분이 많습니다. 그래서 시..
- Total
- Today
- Yesterday
- oozie
- hbase
- HIVE
- Linux
- Tez
- 파이썬
- yarn
- 정올
- Hadoop
- java
- 백준
- SPARK
- 오류
- HDFS
- 다이나믹
- 하둡
- build
- Python
- mysql
- S3
- bash
- airflow
- SQL
- error
- AWS
- 하이브
- 알고리즘
- ubuntu
- emr
- nodejs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |