본문 바로가기

빅데이터405

[oozie] E0701: XML schema error, cvc-complex-type.2.4.c 오류 해결 방법 우지에서 워크플로우를 실행할 때 다음의 오류가 발생하는 경우가 있습니다. Because E0701 : E0701: XML schema error, cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'hive'. 원인 이는 워크플로우 XML이 스키마에 맞게 정상작으로 생성되지 않은 경우에 발생합니다. 우지 버전과 xml의 네임스페이스에 선언한 액션의 버전에 따라 사용할 수 있는 엘리먼트가 정해져 있기 때문에 우지의 버전에 따라 스키마를 잘 선택해야 합니다. 워크플로우에 적용한 스키마 버전과 현재 작성한 XML의 내용을 확인하여 수정해야 합니다. 2019. 12. 11.
[oozie] Error: E0701:XML schema error, Content is not allowed in prolog. 오류 해결 방법 우지에서 워크플로우를 추가하고 실행하려고 할 때 다음의 오류가 발생하는 경우가 있습니다. Error: E0701:XML schema error, Content is not allowed in prolog. 원인 SAXParser에서 발생하는 이 오류는 보통 XML을 읽지 못하는 경우에 발생합니다. XML을 저장할 때 BOM이 들어가 있는 경우 발생하기도 하지만 우지에서는 workflow의 실행경로를 잘 못 전달하는 경우에 발생할 수 있습니다. 저는 oozie.wf.application.path에 오타가 있어서 워크플로우의 주소가 달라서 이 오류가 발생하였습니다. 해결방법 따라서 path를 입력할 때 경로를 정확하게 입력해야 합니다. hadoop fs -ls 명령으로 해당 경로의 워크플로우를 확인할 수 있.. 2019. 12. 11.
[oozie] 워크플로우 실행 중 Error: E0701:XML schema error, Content is not allowed in prolog. 오류 해결 방법 우지에서 워크플로우를 실행 하려고 할 때 다음과 같은 오류가 발생하는 경우가 있습니다. Error: E0701:XML schema error, Content is not allowed in prolog. 원인 XML 워크플로우를 읽지 못하는 경우 이 오류가 발생합니다. 보통 워크플로우가 형식에 맞지 않거나(XML 파싱 불가, BOM 형식), 오타가 있는 경우에 발생할 수 있습니다. XML 문법을 체크하기 위해서 xmllint 명령을 이용하여 문법오류를 확인해 보는 것이 좋습니다. 저는 워크플로우의 위치를 지정하는 oozie.wf.application.path에 오타가 있어서 워크플로우를 읽을 수 가 없어서 오류가 발생하였습니다. 해결방법 작업 경로를 정확하게 입력하여 주면 됩니다. ls명령으로 해당 경로.. 2019. 12. 6.
[hive] MSCK is missing partition columns under location. 오류 해결 방법 EMR에서 하이브의 테이블에 MSCK 명령을 이용해서 테이블을 재구성할 때 다음의 오류가 발생하는 경우가 있습니다. Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: MSCK is missing partition columns under s3://bucket_name/directory_location 원인 이 오류는 지정한 버켓의 폴더가 없어서 발생하는 오류입니다. S3의 특성상 디렉토리만 생성되면 파일시스템에 따라서 $folder$ 가 생성되면서 이 특수 파일이 옮겨지는 과정에서 누락되면 이 오류가 발생합니다. 해결방법 이 오류는 디렉토리를 만들어서 해결할 수도 있고, 아래의 설정을 이용해서 오류가 있는 폴더는 무시하고 처리할 수 있도록 설정할.. 2019. 12. 4.
[hive] Error in getting fields from serde.Invalid Field null 오류 수정 방법 하이브에서 파티션의 정보를 확인할 때 다음의 오류가 발생하는 경우가 있습니다. hive> desc formatted TABLE_NAME partition(partition1='A'); FAILED: Excution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Error in getting fields from serde.Invalid Field null 원인 이 오류는 확인 하려고 하는 파티션의 정보를 부족하게 제공해서 발생합니다. 위의 예제의 경우 partition1과 partition2 두 개의 파티션을 가진 테이블에서 정보를 하나만 제공하여 오류가 발생하였습니다. 해결방법 아래와 같이 테이블의 파티션에 관련된 모.. 2019. 12. 4.
[spark] org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid configuration of tez jars, tez.lib.uris is not defined in the configuration; 오류 해결 방법 Spark SQL을 이용할 때 다음의 오류가 발생하는 경우 tez 환경 설정을 넣어주면 됩니다. : org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid configuration of tez jars, tez.lib.uris is not defined in the configuration; 설정 tez.lib.uris hdfs:///apps/tez/tez.tar.gz tez.use.cluster.hadoop-libs true 2019. 11. 20.
[spark] JDBC드라이버를 이용하여 spark sql로 데이터 가져오는 방법 스파크 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.. 2019. 11. 13.
[spark] Exception in thread "main" java.sql.SQLException: No suitable driver 오류 해결 방법 스파크 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.. 2019. 11. 13.
[YARN] YARN Node Label YARN은 2.6버전 부터 노드 레이블 기능을 제공합니다. 레이블은 서버를 특성에 맞게 구분하여 애플리케이션을 실행할 수 있는 기능을 제공합니다. 노드 레이블은 서버의 타입(ex: SSD, GPU)에 따라 작업을 처리하도록 구성할 수 있음 빠른 IO가 필요한 작업은 SSD 중심의 서버를 이용하도록 설정 빠른 CPU연산이 필요한 작업은 GPU를 이용할 수 있는 서버를 이용하도록 설정 특징 노드는 하나의 파티션을 가짐 기본 파티션은 DEFAULT이고 partiton="" 노드별로 설정을 다르게 할 수 있음 노드 파티션은 두가지 종류가 있음 Exclusive 설정한 노드만 사용할 수 있음 Non-Exclusive 운영상황에 여유가 있을때는 다른 노드도 이용 가능 Node Labels in YARN from D.. 2019. 11. 8.
[spark] Unable to instantiate SparkSession with Hive support because Hive classes are not found. 오류 해결 방법 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.. 2019. 11. 8.
[hadoop] 하둡에서 S3를 파일시스템으로 이용하기 위한 방법 하둡은 데이터를 저장할 때 HadoopFileSystem API를 이용하여 파일 시스템에 데이터를 저장합니다. 이 API를 이용하여 HDFS나 S3에 데이터를 저장할 수 있습니다. HDFS 분산 파일 시스템 대량의 데이터 처리에 유리 큰 사이즈의 파일에 최적화 네임노드가 메타데이터를 관리하고, 데이타노드가 데이터를 블록단위로 저장 하둡 3.x에서는 이레이져 코딩, 라우터 기반 연합, ozone 도입 Hadoop FileSystem API, 하둡 fs 커맨드, 웹 UI로 접근 S3 AWS에서 제공하는 객체 저장 시스템 확장성, 고가용성, 내구성, 보안, 성능 등의 특징을 가짐 저장용량과 요청 횟수에 따라 과금 키 기반으로 데이터가 저장됨. 디렉토리 시스템 아님. 파일 시스템 아님 REST API, AWS .. 2019. 11. 6.
[oozie] Oozie 5.0 특징 2018년 4월 발표된 우지 5.0의 특징에 대해서 알아보겠습니다. 기존 4.3에서 사용하던 워크플로우와 기능을 그대로 이용할 수 있어서 특별히 수정해야 할 점은 없습니다. 특징 우지 런처가 맵리듀스 매퍼에서 YARN 애플리케이션 마스터로 변경 YARN 애플리케이션 타입에 Oozie Launcher로 나옴 우지 웹서버가 톰캣6에서 Jetty9으로 변경 웹 UI를 신규로 작성 ExtJS를 제외하고 새로 작성 서드파티 라이브러리 갱신 JDK8 지원 DB 쿼리 성능 향상을 위해서 인덱스 추가 보안취약점 수정(CVE-2017-15712 ) 참고 아파치 재단 블로그 - 바로가기 우지 5.0 - 홈페이지 2019. 11. 5.
[oozie] 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]] 오류 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 2019. 11. 4.
[oozie] 우지 액션의 log4j 설정 추가 우지 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.. 2019. 11. 4.
[oozie][hive][log4j] ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. 오류 해결 방법 우지를 이용해서 액션을 실행할 때 다음과 같이 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.. 2019. 10. 31.
[hadoop][yarn] Caused by: java.io.IOException: default cannot be found during refresh! 오류 수정 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.. 2019. 10. 31.
[hadoop][yarn] Caused by: java.lang.IllegalArgumentException: Illegal capacity of 4.0 for children of queue root for label=CORE 오류 해결 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.. 2019. 10. 31.
[oozie][EMR] EMR Oozie 실행시 java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found 오류 수정 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) ... .. 2019. 10. 30.
[hive] 하이브 schemaTool을 이용하여 스키마 생성 원격 하이브 메타스토어를 이용하기 위해서는 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.. 2019. 10. 30.
[oozie][slf4j] SLF4J: Class path contains multiple SLF4J bindings. 오류 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.. 2019. 10. 25.
[spark] AWS EMR에서 Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.serialization.ByteArrayDeserializer 오류 발생시 해결 방법 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.. 2019. 10. 14.
[spark] AWS-EMR에서 스파크와 카프카 연동에서 발생한 Caused by: java.lang.ClassNotFoundException: kafka.DefaultSource 오류 해결 방법 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.. 2019. 10. 14.
[spark] <console>:23: error: overloaded method value option with alternatives: 오류 스파크를 스파크 쉘(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.. 2019. 10. 14.
[kafka] 분산 스트리밍 플랫폼 - 카프카 카프카란? Apache Kafka는 링크드인에서 개발한 분산 스트리밍 플랫폼(distributed streaming platform) 2019.09 현재 2.3.0 버전이 가장 최신 생산자는 데이터를 생성 카프카 서버(브로커)는 데이터를 파티션 단위로 저장 데이터를 저장할 때 디스크를 이용하여, 장애가 발생하여도 데이터 유실이 없음 하드디스크의 순차적 읽기 기능을 이용하여 속도를 유지 사용자는 브로커에 데이터를 요청하여 데이터를 가져감 유스케이스 메시징(Messaging) 생산자(Producer)와 사용자(Consumer) 사이의 메시지 전달 웹사이트 동작 체크(Website Activity Tracking) 웹사이트의 운영 메시지를 전달하여 동작 체크 가능 메트릭(Metrics) 서버, 애플리케이션의 .. 2019. 9. 24.
[R] R을 이용하여 CSV 파일을 읽을 때 첫번째 문자가 깨지는 오류 해결 방법 R을 이용하여 파일을 읽을 때 첫 번째 칼럼의 이름이나 첫번재 데이터의 문자가 깨지는 경우가 있습니다. 이는 UTF-8 형식 문서의 BOM으로 인하여 문자가 깨진것으로 인식하기 때문입니다. 이를 해결하기 위하여 read.csv(fileEncoding="UTF-8-BOM") 처럼 fileEncoding을 BOM형식을 확인하도록 선언하여 주면 됩니다. # UTF-8의 BOM으로 인하여 파일이 깨짐 > mlbstat = read.csv(file = "mlb-player-stats-Batters.csv", header = T) > summary(mlbstat) 癤풮layer Team Pos G AB R H X2B Adeiny Hechavarria: 3 BAL : 28 1B: 76 Min. : 1.00 Min. .. 2019. 9. 16.
[R] 기본 함수: 연산,절대값,반올림,올림,버림,수열 R의 기본함수를 이용하는 방법입니다. 대입, 기본연산 절대값 반올림, 올림, 버림 수열 데이터 확인, 객체 구조 확인, 모드 확인 데이터 프레임 접근, 변경 데이터 병합 2019. 9. 10.
[airflow] 워크플로우 모니터링 플랫폼 - apache airflow Airflow 란? 에어비앤비에서 개발한 워크플로우 스케줄링, 모니터링 플랫폼 빅데이터는 수집, 정제, 적제, 분석 과정을 거치면서 여러가지 단계를 거치게 되는데 이 작업들을 관리하기 위한 도구 2019.09 현재 1.10.5 버전이 최신이며 아파치의 탑레벨 프로젝트로 등록^1 특징 Dynamic 에어플로우 파이프라인(동작순서, 방식)을 파이썬 코드를 이용하여 구성하기 때문에 동적인 구성이 가능 Extensible 파이썬을 이용하여 오퍼레이터, 익스큐터를 사용자의 환경에 맞게 확장하여 구성하는 것이 가능함 Elegant 에어플로우 파이프라인은 간결하고 명시적이며, 진자 템플릿(jinja template)을 이용하여 파라미터화 된 데이터를 전달하고 자동으로 파이프라인을 생성하는 것이 가능 Scalable .. 2019. 9. 9.
[R] 파일 읽기/쓰기 R에서 파일을 읽고 쓰는 방법은 다음과 같습니다. 에러 주의 사항 read.delim() 명령은 txt파일은 마지막 행에 공백이 있어야 합니다. 공백이 없으면 다음과 같은 오류가 발생합니다. > source = read.delim("source.txt", header=FALSE, sep=" ") Warning message: In read.table(file = file, header = header, sep = sep, quote = quote, : 'source.txt'에서 readTableHeader에 의하여 발견된 완성되지 않은 마지막 라인입니다 읽기/쓰기 함수 선택 R에서 문자를 읽고 쓰는 패키지는 다양하게 존재합니다. fread(), fwrite()가 기본라이브러리보다 빠른 속도를 보여주는 것.. 2019. 9. 9.
[sqoop] sqoop 설정 정보를 옵션 파일로 전달하는 방법 $ sqoop --options-file ./import.txt --table TEST # import.txt # option files import --connect jdbc:mysql://localhost/db --username foo 스쿱은 자주 사용하는 옵션정보를 파일로 저장하여 설정할 수 있습니다. 필요한 옵션정보를 개행문자로 구분하여 입력하면 됩니다. 2019. 9. 5.
[spark-dataframe] 데이터 프레임에 새로운 칼럼 추가 스파크 데이터프레임에서 칼럼을 추가하거나, 한 칼럼의 값을 다른 값으로 변경 할 때는 withColumn 함수를 이용합니다. val df = spark.read.json("/user/people.json") scala> df.show() +----+-------+ | age| name| +----+-------+ |null|Michael| | 30| Andy| | 19| Justin| +----+-------+ // 새로운 칼럼 추가 scala> df.withColumn("xx", $"name").show() +----+-------+-------+ | age| name| xx| +----+-------+-------+ |null|Michael|Michael| | 30| Andy| Andy| | 19| .. 2019. 8. 8.