2013-10-28 11 views
6

Esportare informazioni da HDFS in MS-SQL utilizzando SQOOP. Sto eseguendo SQOOP tramite OOZIE. In questo momento ho hard-coded l'uid, pwd per la connessione jdbc nel flusso di lavoro OOZIE. Una volta che passo a prod, non sarò in grado di farlo. Qual è il modo migliore per passare le informazioni di autenticazione in una situazione come questa?Come posso fornire la password a SQOOP tramite OOZIE per connettersi a 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> 

Potrei passarli come parametri come $ userName, $ password. Ma l'attuale uid/pwd dovrebbe ancora essere mostrato nella console web di oozie.

UPDATE

Ho provato due modi (come suggerito sotto) per fare questo ... In VIM ho creato pwd di avere solo la password (senza spazi bianchi o qualsiasi altra cosa). Chiamato questo pwd

1) Ho provato a utilizzare il file system. Tuttavia ho ricevuto una IOException che dice che il file non esiste. Dopo aver esaminato il codice, sembra che sqoop usi il conf passato per accedere a fs. Quindi presumo che quando ha funzionato attraverso Oozie avrà accesso solo a HDFS.

2) Ho caricato il file della password in una posizione casuale su hdfs./users/my-name/pwd (pwd è il file). Ora può accedere al file (dal momento che non ottengo una IOException). Tuttavia non riesce a connettersi a SQLServer. Non sono sicuro di cosa devo fare per farlo funzionare?

UPDATE 2 stavo creando il file delle password in questo modo: echo "pwd" > my.password Questo aggiunge un EOL al file my.password ho cambiato per echo -n "pwd" > my.password ed ora funziona.

+0

Volevo solo notare che (almeno su CentOS 7) "echo -n" pw_d "> my.password'' omette il simbolo' '_'' se esiste, scrivendo solo' 'pwd'' sul file. Quindi, '' vi'' può essere un'alternativa migliore – Nutle

risposta

4

Penso che sia possibile sfruttare l'argomento --password-file, in modo che Oozie non possa mai vedere la password. Dai uno sguardo allo Sqoop User Guide per maggiori dettagli.

+0

grazie per questo. Guardando il codice, sembra che posso solo mettere il file delle password su hdf quando si esegue attraverso oozie. Nel documento affermano che potrebbe essere su hdf o sul disco rigido. Sai come posso costringerlo ad andare in HD? – hba

+0

Il caricamento del file dal disco locale è effettivamente fattibile, ma poichè l'oozie eseguirà Sqoop su qualsiasi macchina casuale sul tuo cluster Hadoop, usare questa capacità di Oozie è praticamente inutile. Consiglierei di caricare il file della password su HDFS e modificare le autorizzazioni in modo che solo tu possa leggerlo. –

+0

@Thx Jarek per favore vedi sopra ... – hba

Problemi correlati