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)
... 28 more
EmrFileSystem 이란?
EmrFileSystem
은 EMR에서 S3에 접근하여 파일을 읽고, 쓰게해주는 HDFS 구현체 입니다. S3를 HDFS와 동일한 명령으로 접근할 수 있습니다. EMR와 연계하여 사용하는 EC2 인스턴스에서 S3에 접근하려고 필요로 합니다.
해결방법 - 클래스패스(classpath) 지정
해당 파일시스템은 emrfs-hadoop-assembly-2.30.0.jar
파일에 존재하고, EMR은 /usr/share/aws/emr/emrfs/lib/
아래 해당 파일이 존재합니다. 이 위치를 실행하려고 하는 서비스에 추가해주면 됩니다.
$ java -cp /usr/share/aws/emr/emrfs/lib/*
# EMR oozie의 경우 /usr/lib/oozie/bin 아래 oozie-jetty-server.sh 파일 수정
$ vi oozie-jetty-server.sh
# 다음과 같이 옵션에 추가
jetty_opts="${jetty_opts} -cp ${JETTY_DIR}/*:${JETTY_DIR}/dependency/*:${BASEDIR}/lib/*:${BASEDIR}/libtools/*:${JETTY_DIR}:/usr/share/aws/emr/emrfs/lib/*"
# 수정후 우지 서비스 정지후 재시작
$ sudo oozie stop
$ sudo oozie start
EmrFs 라이브러리 위치
해당위치에는 다음과 같은 파일이 존재합니다. 다른 EC2 서버에 우지를 설치할 경우에는 필요한 파일을 복사해서 사용해도 됩니다.
$ ls -al /usr/share/aws/emr/emrfs/lib/
total 20572
drwxr-xr-x 2 root root 4096 Oct 29 02:15 .
drwxr-xr-x 7 root root 4096 Oct 29 02:15 ..
-rw-r--r-- 1 root root 4467 Jan 10 2019 aopalliance-1.0.jar
-rw-r--r-- 1 root root 605519 Jan 10 2019 bcpkix-jdk15on-1.51.jar
-rw-r--r-- 1 root root 2842667 Jan 10 2019 bcprov-jdk15on-1.51.jar
-rw-r--r-- 1 root root 16926807 Jan 10 2019 emrfs-hadoop-assembly-2.30.0.jar
-rw-r--r-- 1 root root 565410 Jan 10 2019 ion-java-1.0.2.jar
-rw-r--r-- 1 root root 2497 Jan 10 2019 javax.inject-1.jar
-rw-r--r-- 1 root root 16431 Jan 10 2019 jcl-over-slf4j-1.7.21.jar
-rw-r--r-- 1 root root 26880 Jan 10 2019 jmespath-java-1.11.393.jar
-rw-r--r-- 1 root root 41071 Jan 10 2019 slf4j-api-1.7.21.jar
반응형
'빅데이터 > oozie' 카테고리의 다른 글
[oozie] 우지 액션의 log4j 설정 추가 (0) | 2019.11.04 |
---|---|
[oozie][hive][log4j] ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. 오류 해결 방법 (0) | 2019.10.31 |
[oozie][slf4j] SLF4J: Class path contains multiple SLF4J bindings. 오류 (0) | 2019.10.25 |
[oozie] 우지 액션(action) 체크 설정 변경하기 (0) | 2019.04.19 |
[oozie] 우지 워크플로우(workflow) 기본 스펙 및 실행 (0) | 2019.04.19 |