0498-Hue Sqoop1的編輯器中執行Sqoop作業失敗問題分析

  • 2019 年 11 月 27 日
  • 筆記

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腳本進行測試

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上地址

[root@cdh2 java]# oozie admin -oozie http://cdh1.fayson.com:11000/oozie -sharelibupdate

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

3.再次運行命令更新下Oozie的共享庫

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