我們正在面對Cloudera CDH 5.8.5中與Sqoop v1.4.6的錢包利用有關的一些問題。我們的方案:帶錢包的Sqoop導入
- 用戶文件夾:/家/ myuser的
- 錢包夾:/家/ myuser的/錢包(cwallet.sso,cwallet.sso.lck,ewallet.p12,電子錢包。 p12.lck,sqlnet.ora中,tnsnames.ora中)
錢包是公配置爲如果用完
sqlplus /@MY_TNS_NAME
我可以連接到沒有密碼的數據庫。
問題是與sqoop。 我可以連接到數據庫,並列出內使用的所有表:
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"
如果我試圖轉儲一個表到HDFS使用下面的命令(如建議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'
我得到這個錯誤:
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權限)。