2016-07-08 2 views
1

내 맵 축소 작업이 hive-hcatalog-xxx.jar와 같은 타사 라이브러리에 의존하는 상황이 있습니다. 나는 오지로 모든 일을하고있다. Mapreduce 작업은 Java 작업을 통해 실행됩니다. 내 직업에 제 3 자 라이브러리를 포함시키는 가장 좋은 방법은 무엇입니까? 나는제 3 자 항아리 축소 작업

  1. 번들 모든 종속 항아리 주요 항아리에 손에 두 가지 옵션이 있습니다 및 지방 항아리를 만들 수 있습니다.

  2. 는 HDFS 위치에 모든 종속 항아리를 유지하고 -libjars 옵션 내가 선택할 수있는 하나의

를 통해 추가? 제발 조언.

내 mapreduce 작업이 oozie의 Java 활동을 통해 호출되기 때문에 oozie lib 폴더에서 사용 가능한 라이브러리는 매퍼/감속기의 클래스 경로에 추가되지 않습니다. 이 Java 액션을 매핑 액션으로 변경하면 jar 파일을 사용할 수 있습니까?

미리 감사드립니다.

답변

2

1. 모든 종속 항아리를 기본 항아리에 묶고 팻 항아리를 만듭니다. 또는 2. 모든 종속 항아리를 HDFS 위치에 보관하고 을 통해 추가하십시오. -libjars 옵션 어느 것을 선택할 수 있습니까?

비록 두 접근법 모두 실제로 적용됩니다. Uber jar 즉 첫 번째 접근 방식을 제안합니다.

Uber jar : 내부에 lib/ 폴더가 있고 더 많은 종속 jar ('uber'jar로 알려진 구조체)가있는 jar 파일로, 일반 'hadoop jar'명령을 통해 작업을 제출하면 lib/.jars 제공된 jar가 conf.setJarByClass 또는 conf.setJar을 통해 명시 적으로 지정되었으므로 프레임 워크에서 가져옵니다. 즉,이 사용자 위버 항아리가 맵핑 된 항아리로 JT로 이동하면 프레임 워크가 올바르게 처리하고 lib/.jars가 모두 고려되어 classpath에 배치됩니다.

장점은 당신이 당신의 동네 짱 항아리 실제로 종속성이 없기 때문에, 의존성이 목적지에 설치되어 있는지 여부를 전혀 관심이 당신의 동네 짱 항아리를 배포 할 수 없다는 것입니다. 내 맵리 듀스 작업이 oozie의 자바 작업을 통해 호출 될 때

는 oozie lib 폴더에서 사용할 수있는 라이브러리는 매퍼/감속기의 클래스 경로 에 추가되지 않습니다. 이 자바 작업을 맵핑 액션으로 변경하면 항아리를 사용할 수 있습니까? 위의 질문에 대한

, 대답은 광범위하기 때문에,

나는 sharelibCDH4.xx에서 링크에 대한 CDH5.xx & How to configure Mapreduce action with Oozie shre lib.이 당신

+0

대답 주셔서 너무 감사드립니다. Uber jar는 크기가 더 크며 작업 시작 시간에 영향을 줍니까? 비트 차이를 통해 – sunitha

+0

은 단일 항아리가 있기 때문에 존재합니다. 스파크 관련 개발 또한 대부분의 사람들은 uber jar를 사용합니다. –

1

당신은 분명히 당신에 의해 제안 된 접근 방법을 채택 할 수있다, 그러나 Oozie는있다 sharelib은 hcatalog을 준비했습니다.job.propertiesoozie.action.sharelib.for.actiontype 속성이있는 상태로 즉시 사용할 수 있습니다. java 행동을 지정할 수 있습니다

oozie.action.sharelib.for.java=hcatalog 

이 당신의 실행 작업에 oozie 공유 LIB hcatalog에서 라이브러리를로드합니다. 이 일을해야합니다.

당신은 여기 hcatalog의 내용을 체크 아웃 할 수 있습니다

hdfs dfs -ls /user/oozie/share/lib/lib_*/hcatalog