복붙노트

[HADOOP] Oozie + Sqoop : JDBC 드라이버 Jar 위치

HADOOP

Oozie + Sqoop : JDBC 드라이버 Jar 위치

6 노드 cloudera 기반의 hadoop 클러스터가 있고 oozie의 sqoop 작업에서 oracle 데이터베이스에 연결하려고합니다.

내 ojdbc6.jar을 sqoop lib 위치로 복사했다. (필자의 경우 /opt/cloudera/parcels/CDH-4.2.0-1.cdh4.2.0.p0.10/lib/sqoop/lib/) ) 모든 노드에서 모든 6 노드에서 간단한 'sqoop eval'을 실행할 수 있는지 확인했습니다.

Oozie의 sqoop 동작을 사용하여 동일한 명령을 실행하면 "db 드라이버 클래스를로드 할 수 없습니다 : oracle.jdbc.OracleDriver"

공유 라이브러리를 사용하는 방법에 대한이 기사를 읽었으며 작업 / 작업 / 워크 플로 관련 종속성에 관해 이야기 할 때 나에게 의미가 있습니다. 하지만 나는 sqoop에 대한 확장으로서 JDBC 드라이버 설치를보고, 그래서 그것은 sqoop 설치 lib에 속한다고 생각한다.

이제는 sqoop이이 ojdbc6 jar 파일을 lib 폴더에 넣었습니다. 어떻게 Oozie 워크 플로에서 볼 수 없습니까?

뭔가 예상되었거나 뭔가 빠졌습니까?

제쳐두고, JDBC 드라이버 jar의 적절한 위치는 어디에서 생각합니까?

미리 감사드립니다.

해결법

  1. ==============================

    1.JDBC 드라이버 jar (및 이에 의존하는 모든 jar)는 HDFS의 Oozie sharelib 폴더에 있어야합니다. Cloudera 4.2 대신 Hortonworks 데이터 플랫폼 1.2를 실행 중이므로 세부 사항은 다를 수 있지만 JDBC 드라이버는 / user / oozie / share / lib / sqoop에 있습니다. 이렇게하면 Oozie를 통해 JDBC를 사용하여 Sqoop을 실행할 수 있습니다.

    JDBC 드라이버 jar (및 이에 의존하는 모든 jar)는 HDFS의 Oozie sharelib 폴더에 있어야합니다. Cloudera 4.2 대신 Hortonworks 데이터 플랫폼 1.2를 실행 중이므로 세부 사항은 다를 수 있지만 JDBC 드라이버는 / user / oozie / share / lib / sqoop에 있습니다. 이렇게하면 Oozie를 통해 JDBC를 사용하여 Sqoop을 실행할 수 있습니다.

    데이터 노드의 sqoop lib 디렉토리에 JDBC 드라이버 jar를 넣을 필요는 없습니다. 내 setupt에서 내 데이터 노드의 명령 줄에서 간단한 sqoop 평가판을 실행할 수 없습니다. 나는 이것이 왜 효과가있을 것이라고 생각하는지에 대한 논리를 이해합니다. JDBC 드라이버 jar가 HDFS에 있어야하는 이유는 모든 데이터 노드가 HDFS에 액세스 할 수 있도록하기 위해서입니다. 귀하의 솔루션은 동일한 목표를 달성해야합니다. 나는 왜 Oozie의 내부 작업에 익숙하지 않아서 sharelib를 사용하지만 솔루션이 그렇지 않은지에 대해 말하지 않습니다.

  2. ==============================

    2.CDH5에서는 '/ user / oozie / share / lib / lib _ $ {timestamp} / sqoop'에 jar 파일을 넣어야합니다. 그런 다음 sharelib를 업데이트하거나 oozie를 다시 시작해야합니다.

    CDH5에서는 '/ user / oozie / share / lib / lib _ $ {timestamp} / sqoop'에 jar 파일을 넣어야합니다. 그런 다음 sharelib를 업데이트하거나 oozie를 다시 시작해야합니다.

    update sharelib :

    oozie admin -oozie http : // localhost : 11000 / oozie -sharelibupdate

  3. ==============================

    3.CDH-5를 사용하는 경우 JDBC 드라이버 jar (및 해당 Jar가 의존하는 모든 jar)는 HDFS의 '/ user / oozie / share / lib / lib_timestamp / sqoop'폴더에 있어야합니다.

    CDH-5를 사용하는 경우 JDBC 드라이버 jar (및 해당 Jar가 의존하는 모든 jar)는 HDFS의 '/ user / oozie / share / lib / lib_timestamp / sqoop'폴더에 있어야합니다.

  4. ==============================

    4.나는 mysql 항아리를 찾을 수 없었던 동일한 문제에 직면했다. 나는이 늙은 관리자 인 cloudera 4.4를 사용 중입니다. --oozie http : // localhost : 11000 / oozie -sharelibupdate 명령이 작동하지 않습니다.

    나는 mysql 항아리를 찾을 수 없었던 동일한 문제에 직면했다. 나는이 늙은 관리자 인 cloudera 4.4를 사용 중입니다. --oozie http : // localhost : 11000 / oozie -sharelibupdate 명령이 작동하지 않습니다.

    이 문제를 해결하기 위해 아래 단계를 수행했습니다.

    hadoop put /var/lib/sqoop2/mysql-connector-java.jar / user / oozie / share / lib / sqoop

  5. from https://stackoverflow.com/questions/15978156/oozie-sqoop-jdbc-driver-jar-location by cc-by-sa and MIT license