开发者学堂课程【Sqoop 企业级大数据迁移方案实战:Job 作业的使用--免密执行】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/718/detail/12846
Job 作业的使用--免密执行
本节介绍 Job 作业的免密执行。之前创建 job 查看甚至执行时,发现即使指定了--password,最后还是要输入一次mysql 的密码。推荐使用另外一种方式来避免该问题的出现,该参数为--password-file。从参数名上看它是一个文件的一个密码,要求文件路径指定的文件必须位于我们的 HDFS 上,而且它的权限必须是400权限。最重要的一点:在服务中必须有这类属性存在允许 sqoop 将密码放在 sqoop 存储上。
接下来开启 job 的免密操作:
1、首先创建密码文件,该密码文件存放在 HDFS 上。
打开服务器,输入
echo -n “hadoop”> itcastmysql.pwd
//使用 cho 将密码追加进入
hadoop fs -mkdir -p /input/sqoop/pwd
//创建保存密码的路径
hadoop fs -put itcastmysql.pwd /input/sqoop/pwd
///将保存的密码上传在该路径下
查看当前文件在哪个路径下,刷新浏览器访问,点击 input 数据,点击到最后:
会发现当前权限并不是400,接着修改权限,输入
hadoop fs -chmod 400 /input/sqoop/pwd/itcastmysql.pwd
修改完成后该文件的权限发生变化。
2、检查 sqoop 的 sqoop-site.xml 是否存在如下配置:
输入cd conf/
ll
结果中存在 sqoop-site.xml,再来打开 sqoop-site.xml,输入
vim sqoop-site.xml
并没有相关参数,将如下代码复制粘贴在文件尾部:
<property>
<name>sqoop.metastore.client.record.password</name>
<value>true</value>
<description>If true. allow saved passwords in the metastore.
</description>
</property>
相当于添加了一个新的参数,允许存放密码文件
保存完成后再来创建 job 执行就不会使用密码。
3、创建 sqoop job
在服务器上输入 cd..
复制粘贴如下代码:
bin/sqoop job --create itcastjob2 -- import--connect jdbc:mysql://node-1-1:3306/userdb \
--username root \
--password-file /input/sqoop/pwd/itcastmysg1.pwd\
//与之前--password hadoop\不同,新增文件,该文件则是上传保存的文件
--target-dir /sqoopresu1t666\
--table emp --m1
创建好 job 再来执行 job,会发现不需要密码。
输入 bin/sqoop job -exec itcastjob2
回车发现没有 Enter password 选项。
如果不想每次输密码或调用其它软件不方便输入密码时可以打开权限,实际上这种操作更加安全,不能看到明文密码。如果不想每次输密码并且发出警告,就可以把密码保存在 HDFS 上,注意:要求权限必须是400才可以,并且确保在事务中这一个选项打开。<description>If true. allow saved passwords in the metastore 如果为 true,允许保存密码在 metastore 存储,也就是 HDFS 路径上。以上就是免密执行 sqoop 作业的操作。