2013-10-28 7 views
6

私はSQOOPを使用してHDFSからMS-SQLに情報をエクスポートしています。私はOOZIEを通じてSQOOPを実行しています。今は、OOZIEワークフローで、jdbc接続のためのuid、pwdをハードコーディングしました。私はprodに切り替えると、私はこれを行うことができなくなります。このような状況で認証情報を渡す最善の方法は何ですか?私はOOZIEを通じてSQOOPにパスワードを提供してMS-SQLに接続できますか?

<sqoop xmlns="uri:oozie:sqoop-action:0.2"> 
      <job-tracker>${jobTracker}</job-tracker> 
      <name-node>${nameNode}</name-node> 
      <arg>export</arg> 
      <arg>--connect</arg> 
      <arg>jdbc:sqlserver://$sqlServerIP:1433</arg> 
      <arg>--table</arg> 
      <arg>tableName</arg> 
      <arg>--export-dir</arg> 
      <arg>/user/sqoop/file</arg> 
      <arg>--username</arg> 
      <arg>me</arg> 
      <arg>--password</arg> 
      <arg>password</arg> 
</sqoop> 

$ userName、$ passwordなどのパラメータとして渡すことができます。しかし、実際のuid/pwdはまだoozie Webコンソールに表示されます。

UPDATE

私はこれを行うには、2つの方法を(怒鳴る示唆したように)試してみた... VIMで、私はちょうどパスワード(なし空白または何かを)持っているPWDを作成しました。このpwdと呼ばれています。

1)ファイルシステムを使用しようとしました。しかし、ファイルが存在しないというIOExceptionがあります。コードを調べた後、sqoopはfsにアクセスするためにconfを渡したように見えます。だから、私はそれがHDFSへのアクセスのみを持つことになると仮定しています。

2)パスワードファイルをhdfs上のランダムな場所にロードしました。/users/my-name/pwd(pwdはファイル)。これでファイルにアクセスできます(IOExceptionが発生しないため)。ただし、SQLServerに接続できません。私はそれを働かせるために何をする必要があるのか​​分かりません。

私はそうのようなパスワードファイルを作成していたUPDATE 2echo "pwd" > my.password は、これは私がecho -n "pwd" > my.passwordに変更し、今それが動作ファイルmy.password にEOLを追加します。

+0

ちょうど(少なくともCentOS 7で) '' echo -n "pw_d"> my.password''は '' _''シンボルがあればそれを省略し、 '' pwd''だけをファイル。つまり、 '' vi''がより良い代替手段になります – Nutle

答えて

4

--password-file引数を指定することで、Oozieがパスワードを見ないようにすることができると思います。詳細についてはSqoop User Guideをご覧ください。

+0

これはありがとうございます。コードを見ると、oozieを実行しているときにのみhdfsにパスワードファイルを置くことができるようです。彼らはhdfsまたはハードドライブのいずれかになる可能性があると主張している。どのように私はそれがHDに行くことができるか知っていますか? – hba

+0

ローカルドライブからファイルをロードすることは確かに可能ですが、OozieはHadoopクラスタの任意のマシン上でSqoopを実行するため、Oozieのこの機能を使用することは無用です。パスワードファイルをHDFSにアップロードし、あなただけが読むことができるようにアクセス権を変更することをお勧めします。 –

+0

@Thx Jarek上記を参照してください... – hba

関連する問題