0498-Hue Sqoop1的编辑器中执行Sqoop作业失败问题分析

2019-11-27 19:45:32 浏览数 (1)

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的共享库。

0 人点赞