之前一直用phpHiveAdmin,也一直在關注hue,最近打算調研一下hue,hue在最近兩年發展很快,頁面效果和功能上都有很大程度的提升,所支持的服務也越來越多,除了hive,hbase,目前還支持sqoop,impala,pig等。
hue的一個大致架構如下圖所示
核心服務是Hue Server,在本地使用SQLLite作爲默認的DB,用戶可以通過Hue UI(也就是通過瀏覽器)查看Hue的服務並使用相關的服務。Hue由python實現,通過thrift與所支持的各種服務進行交互。
目前集羣使用的版本是CDH5.0.0,Hue相關服務的安裝也非常的方便,採用yum方式安裝即可。安裝Hue的機器可以是脫離集羣外的某臺機器。
sudo yum install hue
我這次主要是研究Hue與Hive的交互,在Hue中負責與Hive交互的模塊叫BeeasWax,所以在啓動Hue的服務之前,需要做一些相關的配置。配置主要分兩方面,一方面是Hue本身需要做的配置,另一方面就是hadoop集羣中需要修改一些配置來配合Hue的使用。Hue本身配置相關的文件是/etc/hue/conf/hue.ini。首先需要做Hue的一些基本配置,主要的幾個屬性如下所示
[desktop]
secret_key 隨機字符串,推薦30-60個字符,主要和cookies安全性相關
http_host 訪問Hue的host
http_port 訪問Hue的port
ssl_certificate 如果使用https,需要配置ssl相關的配置
ssl_private_key
ldap_password ldap驗證方式的用戶密碼
BeeasWax相關的一些主要屬性如下
[beeswax]
hive_server_host HiveServer的host
hive_server_port HiveServer的port
hive_conf_dir Hive配置文件目錄
hive_server_bin HiveServer的bin目錄
配置好了Hue相關的,還需要配置hadoop集羣的一些屬性,比較重要的有如下幾個
hive-site.xml
hive.server2.enable.impersonation=true
使用提交任務用戶的身份運行Hive Job,如果不配置,會默認以HiveServer的啓動用戶來運行Job
hdfs-site.xml
dfs.webhdfs.enabled=true
core-site.xml
hadoop.proxyuser.hue.groups=*
hadoop.proxyuser.hue.hosts=*
webhdfs相關的配置,Hue需要使用WebHDFS或HttpFs來訪問HDFS,二者配置一個即可
配置完成後,就可以啓動Hue的服務了(使用Hue管理Hive需要啓動HiveServer,目前推薦使用HiveServer2)
service hue start
在瀏覽器輸入hue_host:hue_port就可以進入登錄頁面,第一次輸入的是管理員的用戶名和密碼,通過管理員權限可以建立其他的用戶和組。登錄後可以進入Hive Editor來編寫HQL,提交後可以實時查看到Job運行的狀態,如下圖所示
不過在後續的使用和測試過程中,發現使用Hue來訪問Hive很不穩定,上圖左側的MetaStore信息總是加載不出來,查看了HiveServer2的log,基本有兩種錯誤,一種是thrift相關的連接異常,另一種就是OutOfMemory
使用jstat查看了下HiveServer2堆內存的使用情況,並沒有發現明顯的異常情況,隨後google了一把,
Hue的google郵件組中有關於這兩種問題的討論(https://groups.google.com/a/cloudera.org/forum/#!topic/cdh-user/nkM1gRIIIjo),基本可以確定是bug級別的問題,有人建議升級到CDH5.0.1,在Jira上也有人反應過此問題(Hive-6390),目前我還沒做升級後的相關測試,後續會繼續探索相關的問題。
後續升級到了CDH5.1.0版本,沒有再出現以上問題,Hue可以正常使用了