2017-09-26 16 views
0

우리는 Cloudera CDH 5.8.5에서 Sqoop v1.4.6을 사용하여 지갑 사용과 관련된 몇 가지 문제에 직면 해 있습니다. 우리의 시나리오 :Squoop with wallet

  • 사용자 폴더 : /홈/참고 MyUser
  • 지갑 폴더 : /홈/참고 MyUser/지갑 (cwallet.sso, cwallet.sso.lck, ewallet.p12, e 월렛. 지갑이 잘 나는

    sqlplus /@MY_TNS_NAME 
    
    를 실행하는 경우로 구성된

p12.lck, SQLNET.ORA, tnsnames.ora를)

암호없이 db에 연결할 수 있습니다.

문제는 sqoop입니다. 나는 DB에 연결하고 사용하여 내부의 모든 테이블을 나열 할 수 있습니다

export HADOOP_OPTS="-Doracle.net.tns_admin=/home/myuser/wallet -Doracle.net.wallet_location=/home/myuser/wallet" 

sqoop list-tables --connect "jdbc:oracle:thin:@MY_TNS_NAME" 

내가 (here를 제안) 다음 명령

export HADOOP_OPTS="-Doracle.net.tns_admin=/home/myuser/wallet -Doracle.net.wallet_location=/home/myuser/wallet" 

sqoop import -D mapreduce.map.java.opts='-Doracle.net.tns_admin=. -Doracle.net.wallet_location=.' -files /home/myuser/wallet/cwallet.sso,/home/myuser/wallet/ewallet.p12,/home/myuser/wallet/sqlnet.ora,/home/myuser/wallet/tnsnames.ora -libjars "/var/lib/sqoop/oraclepki.jar,/var/lib/sqoop/osdt_cert.jar,/var/lib/sqoop/osdt_core.jar,/var/lib/sqoop/sqljdbc4.jar" --m 1 --connect "jdbc:oracle:thin:@MY_TNS_NAME" --query "SELECT * FROM MYTABLE WHERE \$CONDITIONS" --target-dir '/tmp/mytabledump' 

와 HDFS에 테이블을 덤프하려고하면 나는 이것을 얻을 오류 :

Error: java.lang.RuntimeException: java.lang.RuntimeException: java.sql.SQLException: encountered a problem with the Secret Store. Check the wallet location for the presence of an open wallet (cwallet.sso) and ensure that this wallet contains the correct credentials using the mkstore utility: java.io.IOException: oracle.security.crypto.core.CipherException: Invalid padding string (or incorrect password)...

수동으로 사용자 및 암호를 제공하는 지갑을 사용하지 않고 동일한 명령을 실행하면 작동합니다.

지갑을 매퍼에게 전달하는 데 문제가있는 것 같습니다. 이 문제를 해결하는 방법에 대해 알고 싶습니다.

추가 정보 :

  • ACL은 Sqoop을 사용자가 /홈/참고 MyUser에게 액세스 할 수 있습니다
  • /홈/참고 MyUser/지갑 폴더 소유자 그룹은 Sqoop을 기본 그룹 (RWX입니다 사용 권한).

답변

0

우리는이 문제를 해결할 수있었습니다.

문제는 지갑과 관련이 있습니다.

내가 아는 한 2 가지 유형의 지갑이 있습니다. 첫 x 째 유형은 작성된 시스템에서만 사용할 수 있습니다. 두 번째 유형은 여러 시스템에서 사용할 수 있습니다.

우리의 문제는 우리 지갑이 첫 번째 유형이라는 것입니다.

지도가 축소되는 동안지도가 매퍼간에 배포되므로이 "비공개"지갑을 사용하면 다른 컴퓨터에있는지도 작성자가지도를 사용할 수 없습니다.

mkstore -wrl "<wallet_folder>" -create 
:

우리는 명령을 사용하여 지갑을 만들어야했습니다