1
文档编写目的
Hue做为Hadoop平台的一款UI工具,提供了丰富的功能。可以通过Hue访问Hadoop的文件系统、Hive、Impala、HBase、Solr、Sqoop等。集成了Oozie实现界面化工作流调度流程,同样也可以集成第三方APP及SQL等。本篇文章Fayson主要介绍在使用Hue提供的Sqoop1编辑功能执行Sqoop作业异常问题分析。
- 测试环境
1.RedHat7.2
2.CM和CDH版本为5.15.0
2
Hue Sqoop1界面运行Sqoop作业
1.登录Hue,进入Sqoop1的编辑器页面
2.在命令编辑界面运行一个简单的Sqoop脚本进行测试
代码语言:javascript复制list-databases --connect jdbc:mysql://cdh2.fayson.com:3306 --username root --password 123456
该Sqoop脚本主要是用于访问MySQL数据库,并列出MySQL下所有的数据库,从上述运行结果可以看到失败了。
3.点击右上角的“Jobs”菜单,查看作业运行日志
4.点击刚最新运行的作业,进入作业运行详细界面
在作业的Logs中可以看到如下日志“Could not load db driver class: com.mysql.jdbc.Driver”
上述日志可以清晰的可到主要是由于无法加载MySQL驱动类导致的。
3
解决方式一
1.在命令编辑界面配置Sqoop依赖
2.添加MySQL驱动包依赖,该依赖是存储在HDFS上的
选择MySQL驱动文件
添加成功
3.再次运行Sqoop命令,显示命令执行成功
成功显示了MySQL下的所有库。
4
解决方式二
由于在Hue中运行Sqoop命令,最终是通过Oozie来进行作业的调度,所以这里我们可以通过将MySQL驱动包放在Oozie的共享库中。
1.使用如下命令找到最新的Oozie共享库在HDFS上地址
代码语言:javascript复制[root@cdh2 java]# oozie admin -oozie http://cdh1.fayson.com:11000/oozie -sharelibupdate
2.将MySQL的JDBC驱动包put到/user/oozie/share/lib/ lib_20181106094514/oozie的目录下
代码语言:javascript复制[root@cdh2 java]# hadoop fs -put mysql-connector-java-5.1.34.jar hdfs://nameservice1/user/oozie/share/lib/lib_20181106094514/sqoop
3.再次运行命令更新下Oozie的共享库
代码语言:javascript复制[root@cdh2 java]# oozie admin -oozie http://cdh1.fayson.com:11000/oozie -sharelibupdate
4.在Hue上运行Sqoop命令测试
5
总结
1.在Hue中通过Sqoop1的编辑界面执行Sqoop作业,最终还是通过Oozie执行的,默认Oozie的依赖中是没有MySQL的驱动,所以需要指定MySQL的驱动。
2.Hue上执行Sqoop是基于Oozie,那同样可以将MySQL的JDBC驱动包上传到Oozie的共享库来解决该问题,需要注意的是当CDH版本升级后,需要重新更新Oozie的共享库。