歡迎訪問我的獨立部落格:
http://blog.ywheel.cn/post/2016/05/29/hue_introduction/
前段時間給同事們做了一次HUE入門使用的培訓,就順便整理出來。本篇文章先簡單介紹HUE,再介紹如何給HUE貢獻代碼。 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,則可以使用管理員賬戶建立一個新的使用者,然後使用新的使用者進行登入,見下圖:
使用HUE官網上的live demo可以嘗鮮。如果大家自己沒有搭建大資料平台,沒有安裝HUE的話,可以先在該demo上嘗試。點擊Play with the live Demo now!,將會進入HUE的”我的文件”:
HDFS檔案瀏覽
HUE可以很方便的瀏覽HDFS中的目錄和檔案,並且進行檔案和目錄的建立、複製、刪除、下載以及修改許可權等操作。
HDFS實現了一個和POSIX系統類別似的檔案和目錄的許可權模型。每個檔案和目錄有一個所有者(owner)和一個組(group)。檔案或目錄對其所有者、同組的其他使用者以及所有其他使用者分別有著不同的許可權。但,使用者身份機制對HDFS本身來說只是外部特性。HDFS並不提供建立使用者身份、建立組或處理使用者憑證等功能。 使用HUE訪問HDFS時,HDFS簡單的將HUE上的使用者名稱和組的名稱進行許可權的校正。
在Live Demo中,點擊”檔案瀏覽器”, 進入HDFS的家目錄:
PS: Live Demo中禁了檔案上傳功能。 作業瀏覽
點擊Job Browser,可以查看作業列表,並且可以通過點擊右上方的”成功”,”正在運行”,”失敗”,”停止”來篩選不同狀態的作業:
我們在實際工作中發現,當叢集(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語句,提交查詢任務,並且能夠在介面下方看到查詢作業啟動並執行日誌。在得到結果後,還提供進行簡單的圖表分析能力。
點擊”Data Browsers”->”Metastore表”,還可以看到Hive中的資料庫,資料庫中的表以及各個表的中繼資料等資訊。
Oozie Workflow編輯
HUE也提供了很好的Oozie的整合,能夠在HUE上建立和編輯Bundles, Coordinator, Workflow. Oozie的介紹可以去官網查看。下圖為在HUE上建立一個新的workflow,在該介面上,可以直接拖動不同的組件,變成DAG中的節點,並且設定各個action的流轉邏輯。
當然Oozie也可以通過命令列的方式提交B,C,W. 不過是使用HUE建立的workflow,或者是通過命令列提交的workflow,都可以在HUE上查看啟動並執行狀況:
只是通過命令列提交的workflow就不可以在HUE上進行編輯了。使用設定檔、命令列提交的方式能夠保證在生產環境上啟動並執行和在測試環境上啟動並執行版本一致,而使用HUE介面編輯的方式雖然方便,但也可能會帶來人工操作在生產環境中失誤的風險,有利也有弊吧。 Contribution
我在給同事準備培訓材料的時候,到HUE的github上去尋找資料。在看到HUE的主要功能時,github上的原文是這樣的:
恰好我司主要使用的資料庫是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。
在這裡記錄一下更新的步驟: Fork HUE的工程,比如 ywheel/hue 建立一個新的分支,不要使用master分支提交修改。比如我建立了fix-postgresql-spelling分支。 將代碼pull下來,修改後commit,提交到fix-postgresql-spelling分支。 建立issue。當HUE的工程上建立issue, 描述清楚問題,提交。 點擊’Pull Request’, 選擇目的工程和分支,比如cloudera/hue的master分支。填寫comment, 說明已建立的issue, create pull request.
接下來就是等了,等該提交被review, 被merge到master分支, 等你自己的名字出現在Contributors裡面, then everything DONE!
ps: 雖然改了個單詞拼字就出來說簡直是丟人,不過算是一個good start, 希望能在不久的將來真的能給開源項目(特別是流行的大資料生態中的開源項目)貢獻代碼,加油!