2017-09-26 4 views
0

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のユーザーに許可アクセス許可)。

答えて

0

私たちは問題を解決することができました。

問題はウォレットに関連していました。

私が知る限り、2種類の財布があります。最初のタイプは、作成されたマシンでのみ使用できます。第2のタイプは、複数のマシンで使用できます。

私たちの問題は、私たちの財布が最初のタイプであったことです。

マップの縮小中にウォレットがマッパーに分散されるため、この「非共有」ウォレットではマッパー(別のマシンにある)は使用できません。

私たちは、コマンドを使用してWalletを作成する必要がありました:

mkstore -wrl "<wallet_folder>" -create 
関連する問題