最近遇到sqoop密码导入的问题,记录下。Sqoop从关系型数据库导入到hdfs中时,需要关系型数据库的密码,但是密码明文展示不安全,所以在hadoop2.6之后,sqoop使用hadoop的credential使用password-alias。
用hadoop生成jceks,如下List-1所示,之后在/tmp下生成mysql.password.jceks文件,之后将mysql.password.jceks传到hdfs的/user/sqoop.
List-1
hadoop credential create mydb.password.alias -provider localjceks://file/tmp/mysql.password.jceks
Enter alias password:
Enter alias password again:
mydb.password.alias has been successfully created.
之后sqoop中如何使用呢,如下List-2,使用别名mydb.password.alias,而不是直接使用密码。
List-2
sqoop import \
-Dhadoop.security.credential.provider.path=jceks://hdfs/user/sqoop/mysql.password.jceks \
--connect jdbc:mysql://x.x.x.x:3306/xxx \
--username xxx --password-alias mydb.password.alias \
...