Cloudera CDH 5.8.5のSqoop v1.4.6でのウォレットの使用に関するいくつかの問題に直面しています。私たちのシナリオ:ウォレット付きSqoopインポート
- ユーザーフォルダ:/ホーム/ myuserの
- 財布フォルダ:/ホーム/ myuserの/財布(のcwallet.sso、cwallet.sso.lck、ewallet.p12と、ewallet。財布はよく、私は
を実行する場合のように構成され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プライマリグループ(rwxのある/ホーム/ myuserの/財布
- /ホーム/ MYUSERにアクセスするためにsqoopのユーザーに許可アクセス許可)。