2016-06-17 40 views
0

Sqoop作业始终在CLI中提示输入密码。为了避免这种情况,有人说sqoop.metastore.client.record.password属性应该设置为true。但到处都有人说我需要在sqqop_site.xml中更改此值。无论如何,我可以将这个价值单独设置为一项工作。我试图像下面创建一个作业和sqoop无法创建它带有密码问题的Sqoop作业

sqoop job --create TEST -D sqoop.metastore.client.record.password=true -- import \ 
--connect jdbc:netezza://xx.xxx.xx.xxx/database \ 
--username username \ 
--password password \ 
--table tablename \ 
--split-by key \ 
--hcatalog-database hivedatabase \ 
--hcatalog-table hivetable \ 
--hcatalog-storage-stanza 'STORED as ORC TBLPROPERTIES('orc.compress'='NONE')' \ 
-m 100 

错误:

Warning: /usr/iop/4.1.0.0/sqoop/../accumulo does not exist! Accumulo imports will fail. 
Please set $ACCUMULO_HOME to the root of your Accumulo installation. 
16/06/17 07:10:08 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6_IBM_20 
16/06/17 07:10:08 ERROR tool.BaseSqoopTool: Error parsing arguments for job: 
16/06/17 07:10:08 ERROR tool.BaseSqoopTool: Unrecognized argument: -D 
16/06/17 07:10:08 ERROR tool.BaseSqoopTool: Unrecognized argument: sqoop.metastore.client.record.password=true 

任何人都可以请帮我这。我需要在CLI中提示输入密码来运行一个作业。

+0

配置在sqoop-site.xml中sqoop.metastore.client.autoconnect.username 这些参数sqoop.metastore.client.autoconnect.password – marjun

+0

我不想改变sqoop_site.xml文件。我只想更改一项工作 – Sathyaraj

回答

1

您可以将密码保存在文件中,并使用参数--password-file指定此文件的路径。

--password-file 'Set path for a file containing the authentication password' 

Sqoop将读取该文件中的密码,并将其传递到使用安全的手段,而不在任务配置中暴露密码MapReduce的集群。

+0

这正是我们如何解决这个问题。只要存储的密码的位置通过权限和组等被锁定,那么它是相对安全的。在我们的情况下,我们采取了一个额外的步骤来加密hadoop端的密码,然后从一个内部调用sqoop命令它可以在将密码传递给sqoop之前解密密码。 –

+0

./bin/sqoop export --bindir ./ --connect jdbc:mysql:// localhost/DBname --username DB_Username --passoword yourDBpassword --tabletablename --export-dir/hdfspath –