天天看點

Hadoop UI — HUE的簡單介紹

轉自:https://blog.csdn.net/ywheel1989/article/details/51560312

HUE是什麼

HUE=Hadoop User Experience

Hue是一個開源的Apache Hadoop UI系統,由Cloudera Desktop演化而來,最後Cloudera公司将其貢獻給Apache基金會的Hadoop社群,它是基于Python Web架構Django實作的。

通過使用Hue我們可以在浏覽器端的Web控制台上與Hadoop叢集進行互動來分析處理資料,例如操作HDFS上的資料,運作MapReduce Job,執行Hive的SQL語句,浏覽HBase資料庫等等。

HUE連結

  • Site: http://gethue.com/
  • Github: https://github.com/cloudera/hue
  • Reviews: https://review.cloudera.org

核心功能

  • SQL編輯器,支援Hive, Impala, MySQL, Oracle, PostgreSQL, SparkSQL, Solr SQL, Phoenix…
  • 搜尋引擎Solr的各種圖表
  • Spark和Hadoop的友好界面支援
  • 支援排程系統Apache Oozie,可進行workflow的編輯、檢視

HUE提供的這些功能相比Hadoop生态各元件提供的界面更加友好,但是一些需要debug的場景可能還是需要使用原生系統才能更加深入的找到錯誤的原因。

HUE中檢視Oozie workflow時,也可以很友善的看到整個workflow的DAG圖,不過在最新版本中已經将DAG圖去掉了,隻能看到workflow中的action清單和他們之間的跳轉關系,想要看DAG圖的仍然可以使用oozie原生的界面系統檢視。

HUE登入

如果自己搭建了HUE,則可以使用管理者賬戶建立一個新的使用者,然後使用新的使用者進行登入,見下圖:

Hadoop UI — HUE的簡單介紹

使用HUE官網上的live demo可以嘗鮮。如果大家自己沒有搭建大資料平台,沒有安裝HUE的話,可以先在該demo上嘗試。點選Play with the live Demo now!,将會進入HUE的”我的檔案”:

Hadoop UI — HUE的簡單介紹

HDFS檔案浏覽

HUE可以很友善的浏覽HDFS中的目錄和檔案,并且進行檔案和目錄的建立、複制、删除、下載下傳以及修改權限等操作。

HDFS實作了一個和POSIX系統類似的檔案和目錄的權限模型。每個檔案和目錄有一個所有者(owner)和一個組(group)。檔案或目錄對其所有者、同組的其他使用者以及所有其他使用者分别有着不同的權限。但,使用者身份機制對HDFS本身來說隻是外部特性。HDFS并不提供建立使用者身份、建立組或處理使用者憑證等功能。 使用HUE通路HDFS時,HDFS簡單的将HUE上的使用者名群組的名稱進行權限的校驗。

在Live Demo中,點選”檔案浏覽器”, 進入HDFS的家目錄:

Hadoop UI — HUE的簡單介紹

PS: Live Demo中禁了檔案上傳功能。

作業浏覽

點選Job Browser,可以檢視作業清單,并且可以通過點選右上角的”成功”,”正在運作”,”失敗”,”停止”來篩選不同狀态的作業:

Hadoop UI — HUE的簡單介紹

我們在實際工作中發現,當叢集(CDH5.2) 配置了HA後,當active的ResourceManager自動切換後(比如NN1上的ResourceManager是active,而NN2是standby,當NN1出現故障, NN2上的ResourceManager轉變為active狀态),HUE的job browser将不能夠正确顯示。隻有當修複故障後,将NN1上的ResourceManager重新變成active狀态,HUE的job browser才能正常工作。不知道這個問題在後續版本是否已經得到修複。

Hive查詢

HUE的beeswax app提供友好友善的Hive查詢功能,能夠選擇不同的Hive資料庫,編寫HQL語句,送出查詢任務,并且能夠在界面下方看到查詢作業運作的日志。在得到結果後,還提供進行簡單的圖表分析能力。

Hadoop UI — HUE的簡單介紹

點選”Data Browsers”->”Metastore表”,還可以看到Hive中的資料庫,資料庫中的表以及各個表的中繼資料等資訊。

Hadoop UI — HUE的簡單介紹

Oozie Workflow編輯

HUE也提供了很好的Oozie的內建,能夠在HUE上建立和編輯Bundles, Coordinator, Workflow. Oozie的介紹可以去官網檢視。下圖為在HUE上建立一個新的workflow,在該界面上,可以直接拖動不同的元件,變成DAG中的節點,并且設定各個action的流轉邏輯。

Hadoop UI — HUE的簡單介紹

當然Oozie也可以通過指令行的方式送出B,C,W. 不過是使用HUE建立的workflow,或者是通過指令行送出的workflow,都可以在HUE上檢視運作的狀況:

Hadoop UI — HUE的簡單介紹

隻是通過指令行送出的workflow就不可以在HUE上進行編輯了。使用配置檔案、指令行送出的方式能夠保證在生産環境上運作的和在測試環境上運作的版本一緻,而使用HUE界面編輯的方式雖然友善,但也可能會帶來人工操作在生産環境中失誤的風險,有利也有弊吧。

Contribution

我在給同僚準備教育訓練材料的時候,到HUE的github上去查找資料。在看到HUE的主要功能時,github上的原文是這樣的:

Hadoop UI — HUE的簡單介紹

恰好我司主要使用的資料庫是PostgreSQL,看到PostGresl感覺怪怪的,于是Google了一把,PostgreSQL有兩個名字:PostgreSQL和Postgres,目前官方網站上的名字仍然是PostgreSQL. 不管PostGresl是否有什麼典故,但是PostgreSQL一定是對的。是以,我去查了下如何給HUE送出代碼修改。在Github上能找到wiki: Contribute to HUE, HUE有自己的JIRA和Review Board, 但也說了

The Hue project gladly welcomes any patches or pull requests!

于是我在github上給HUE發了一個Issue和一個Pull Request。幾天後Pull Request被接收,merge到了master分支上,可以看到這個Commit。

在這裡記錄一下更新的步驟:

  1. Fork HUE的工程,比如 ywheel/hue
  2. 建立一個新的分支,不要使用master分支送出修改。比如我建立了fix-postgresql-spelling分支。
  3. 将代碼pull下來,修改後commit,送出到fix-postgresql-spelling分支。
  4. 建立issue。當HUE的工程上建立issue, 描述清楚問題,送出。
  5. 點選’Pull Request’, 選擇目的工程和分支,比如cloudera/hue的master分支。填寫comment, 說明已建立的issue, create pull request.

接下來就是等了,等該送出被review, 被merge到master分支, 等你自己的名字出現在Contributors裡面, then everything DONE!

繼續閱讀