温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github:
https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
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的编辑器页面
![5984e416ad9df9829c50ce8f1f2896d5.png](https://i-blog.csdnimg.cn/blog_migrate/c96b5d388d00f09474a29336c2654916.jpeg)
![0ace9a2dcf99b13bf1ef7c9ea4fe69ea.png](https://i-blog.csdnimg.cn/blog_migrate/ed11089d1685b9cdbc0a620791453e63.jpeg)
2.在命令编辑界面运行一个简单的Sqoop脚本进行测试
list-databases --connect jdbc:mysql://cdh2.fayson.com:3306 --username root --password 123456
![a784fd87a9e73e0e409215f867759891.png](https://i-blog.csdnimg.cn/blog_migrate/6a32fd8e8296a2fc70be988492f6bf08.jpeg)
该Sqoop脚本主要是用于访问MySQL数据库,并列出MySQL下所有的数据库,从上述运行结果可以看到失败了。
3.点击右上角的“Jobs”菜单,查看作业运行日志
![cf98e3aca3dcf7759068baacc32989d6.png](https://i-blog.csdnimg.cn/blog_migrate/cebfa0f234993a9d20b4e93347b6daaf.jpeg)
4.点击刚最新运行的作业,进入作业运行详细界面
![b3345c54234761ca646f6f5e2839f448.png](https://i-blog.csdnimg.cn/blog_migrate/be4ae69e42b5e7041ac62b6c6022c192.jpeg)
在作业的Logs中可以看到如下日志“Could not load db driver class: com.mysql.jdbc.Driver”
![750f587bb9f939cc496b9df9654e46a1.png](https://i-blog.csdnimg.cn/blog_migrate/34fac8a45bd2b0d8931751329700cccd.jpeg)
上述日志可以清晰的可到主要是由于无法加载MySQL驱动类导致的。
3
解决方式一
1.在命令编辑界面配置Sqoop依赖
![be5c938a9ceea3fedac7166888e5fbde.png](https://i-blog.csdnimg.cn/blog_migrate/17b31a428ff5a3564b95c694551ca33a.jpeg)
2.添加MySQL驱动包依赖,该依赖是存储在HDFS上的
![ea4ab4164ec205f2c4a919b3fc9f3e46.png](https://i-blog.csdnimg.cn/blog_migrate/6cb056c35dfc56c8d8452fb9e13cbe75.jpeg)
选择MySQL驱动文件
![9b4d3d51aea17639f89b2d6612a82a69.png](https://i-blog.csdnimg.cn/blog_migrate/427417f23c8b01300aee8af7053d0bbf.jpeg)
添加成功
![1a93dd9db0fc84c7d9c234129f7dffe2.png](https://i-blog.csdnimg.cn/blog_migrate/6e4f9fa144761bbfa6bb56c78bbdac5e.jpeg)
3.再次运行Sqoop命令,显示命令执行成功
![d0a5dd81a8405c358de18df6d5e30298.png](https://i-blog.csdnimg.cn/blog_migrate/8f449bca477f5a187e751971ee18662e.jpeg)
成功显示了MySQL下的所有库。
![c7439ad655178055787163e7429f1735.png](https://i-blog.csdnimg.cn/blog_migrate/f32f513f6a6eaf5bb8678b8768db4cc1.jpeg)
4
解决方式二
由于在Hue中运行Sqoop命令,最终是通过Oozie来进行作业的调度,所以这里我们可以通过将MySQL驱动包放在Oozie的共享库中。
1.使用如下命令找到最新的Oozie共享库在HDFS上地址
[root@cdh2 java]# oozie admin -oozie http://cdh1.fayson.com:11000/oozie -sharelibupdate
![1fc9569328b4872e963119676d492e2d.png](https://i-blog.csdnimg.cn/blog_migrate/12a612e2dc95f844684f91fa81cb0c35.jpeg)
2.将MySQL的JDBC驱动包put到/user/oozie/share/lib/ lib_20181106094514/oozie的目录下
[root@cdh2 java]# hadoop fs -put mysql-connector-java-5.1.34.jar hdfs://nameservice1/user/oozie/share/lib/lib_20181106094514/sqoop
![f78fc0c4e16c967f0cda8b867e71c53f.png](https://i-blog.csdnimg.cn/blog_migrate/22d7f44b9b5ea45575603bae18ac159e.jpeg)
3.再次运行命令更新下Oozie的共享库
[root@cdh2 java]# oozie admin -oozie http://cdh1.fayson.com:11000/oozie -sharelibupdate
![0083bb06c6f12ae00c3f8e6cde5d5e5f.png](https://i-blog.csdnimg.cn/blog_migrate/f35a617e42875a0fd3f9238aaf00c20f.jpeg)
4.在Hue上运行Sqoop命令测试
![49246664e2bf2884abdbe679344370ba.png](https://i-blog.csdnimg.cn/blog_migrate/2b6c14105389de90321b09fd678b9636.jpeg)
![b688b13595e1a833df877c3cc2175473.png](https://i-blog.csdnimg.cn/blog_migrate/3708d0abca4fa09fdaaad9c21fa50fa1.jpeg)
5
总结
1.在Hue中通过Sqoop1的编辑界面执行Sqoop作业,最终还是通过Oozie执行的,默认Oozie的依赖中是没有MySQL的驱动,所以需要指定MySQL的驱动。
2.Hue上执行Sqoop是基于Oozie,那同样可以将MySQL的JDBC驱动包上传到Oozie的共享库来解决该问题,需要注意的是当CDH版本升级后,需要重新更新Oozie的共享库。
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
![2d8f430229b7e1fd92708aa30542190a.gif](https://i-blog.csdnimg.cn/blog_migrate/74c08257eb9338e8baf39460768e6876.gif)
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操