1. 程式人生 > >Hue安裝配置實踐

Hue安裝配置實踐

簡單之美 2014-12-17 65236 閱讀

Hue是一個開源的Apache Hadoop UI系統,最早是由Cloudera Desktop演化而來,由Cloudera貢獻給開源社群,它是基於Python Web框架Django實現的。通過使用Hue我們可以在瀏覽器端的Web控制檯上與Hadoop叢集進行互動來分析處理資料,例如操作HDFS上的資料,執行MapReduce Job等等。很早以前就聽說過Hue的便利與強大,一直沒能親自嘗試使用,下面先通過官網給出的特性,通過翻譯原文簡單瞭解一下Hue所支援的功能特性集合:

  • 預設基於輕量級sqlite資料庫管理會話資料,使用者認證和授權,可以自定義為MySQL、Postgresql,以及Oracle
  • 基於檔案瀏覽器(File Browser)訪問HDFS
  • 基於Hive編輯器來開發和執行Hive查詢
  • 支援基於Solr進行搜尋的應用,並提供視覺化的資料檢視,以及儀表板(Dashboard)
  • 支援基於Impala的應用進行互動式查詢
  • 支援Spark編輯器和儀表板(Dashboard)
  • 支援Pig編輯器,並能夠提交指令碼任務
  • 支援Oozie編輯器,可以通過儀表板提交和監控Workflow、Coordinator和Bundle
  • 支援HBase瀏覽器,能夠視覺化資料、查詢資料、修改HBase表
  • 支援Metastore瀏覽器,可以訪問Hive的元資料,以及HCatalog
  • 支援Job瀏覽器,能夠訪問MapReduce Job(MR1/MR2-YARN)
  • 支援Job設計器,能夠建立MapReduce/Streaming/Java Job
  • 支援Sqoop 2編輯器和儀表板(Dashboard)
  • 支援ZooKeeper瀏覽器和編輯器
  • 支援MySql、PostGresql、Sqlite和Oracle資料庫查詢編輯器

下面,我們通過實際安裝來驗證Hue的一些功能。

環境準備

這裡,我所基於的基本環境及其配置情況,如下所示:

  • CentOS-6.6 (Final)
  • JDK-1.7.0_25
  • Maven-3.2.1
  • Git-1.7.1
  • Hue-3.7.0(branch-3.7.1)
  • Hadoop-2.2.0
  • Hive-0.14
  • Python-2.6.6

基於上面的軟體工具,要保證正確安裝和配置。需要說明的是,我們通過Hue來執行Hive查詢,需要啟動HiveServer2服務:


cd /usr/local/hive
bin/hiveserver2 &

否則通過Hue Web控制無法執行Hive查詢。

安裝配置

我新建了一個hadoop使用者,以hadoop使用者,首先使用yum工具來安裝Hue相關的依賴軟體:


sudo yum install krb5-devel cyrus-sasl-gssapi cyrus-sasl-deve libxml2-devel libxslt-devel mysql mysql-devel openldap-devel python-devel python-simplejson sqlite-devel

然後,執行如下命令進行Hue軟體包的下載構建:


cd /usr/local/
sudo git clone https://github.com/cloudera/hue.git branch-3.7.1
sudo chown -R hadoop:hadoop branch-3.7.1/
cd branch-3.7.1/
make apps

上述過程如果沒有任何問題,我們就已經安裝好Hue。Hue的配置檔案為/usr/local/branch-3.7.1/desktop/conf/pseudo-distributed.ini,預設的配置檔案不能正常執行Hue,所以需要修改其中的內容,與我們對應的Hadoop叢集配置相對應。該配置檔案根據整合不同的軟體,將配置分成多個段,每個段下面還有子段,便於管理配置,如下所示(省略子段名稱):

  • desktop
  • libsaml
  • libopenid
  • liboauth
  • librdbms
  • hadoop
  • filebrowser
  • liboozie
  • oozie
  • beeswax
  • impala
  • pig
  • sqoop
  • proxy
  • hbase
  • search
  • indexer
  • jobsub
  • jobbrowser
  • zookeeper
  • spark
  • useradmin
  • libsentry

我們很容易根據需要來配置自己需要的內容。我們修改配置檔案的情況,如下表所示:

Hue配置段Hue配置項Hue配置值說明
desktopdefault_hdfs_superuserhadoopHDFS管理使用者
desktophttp_host10.10.4.125Hue Web Server所在主機/IP
desktophttp_port8000Hue Web Server服務埠
desktopserver_userhadoop執行Hue Web Server的程序使用者
desktopserver_grouphadoop執行Hue Web Server的程序使用者組
desktopdefault_useryanjunHue管理員
hadoop/hdfs_clustersfs_defaultfshdfs://hadoop6:8020對應core-site.xml配置項fs.defaultFS
hadoop/hdfs_clustershadoop_conf_dir/usr/local/hadoop/etc/hadoopHadoop配置檔案目錄
hadoop/yarn_clustersresourcemanager_hosthadoop6對應yarn-site.xml配置項yarn.resourcemanager.hostname
hadoop/yarn_clustersresourcemanager_port8032ResourceManager服務埠號
hadoop/yarn_clustersresourcemanager_api_urlhttp://hadoop6:8088對應於yarn-site.xml配置項yarn.resourcemanager.webapp.address
hadoop/yarn_clustersproxy_api_urlhttp://hadoop6:8888對應yarn-site.xml配置項yarn.web-proxy.address
hadoop/yarn_clustershistory_server_api_urlhttp://hadoo6:19888對應mapred-site.xml配置項mapreduce.jobhistory.webapp.address
beeswaxhive_server_host10.10.4.125Hive所在節點主機名/IP
beeswaxhive_server_port10000HiveServer2服務埠號
beeswaxhive_conf_dir/usr/local/hive/confHive配置檔案目錄

上面主要配置了Hadoop叢集相關的內容,以及Hive(beeswax段配置的是Hive,通過HIveServer2與Hive互動)。 
最後,啟動Hue服務,執行如下命令:


cd /usr/local/branch-3.7.1/
build/env/bin/supervisor &

Hue功能驗證

我們主要通過在Hue Web控制檯上執行Hive查詢,所以需要準備Hive相關的表和資料。

  • Hive準備

我們首先在Hive中建立一個數據庫(如果沒有許可權則授權):


GRANT ALL TO USER hadoop;
CREATE DATABASE user_db;

這裡,hadoop使用者是Hive的管理使用者,可以將全部許可權賦給該使用者。 
建立示例表,建表DDL如下所示:


CREATE TABLE user_db.daily_user_info (
  device_type int,
  version string,
  channel string,
  udid string)
PARTITIONED BY (
  stat_date string)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '\t'
STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';

準備的資料檔案格式,示例如下所示:

.2.1     C-gbnpk     b01b8178b86cebb9fddc035bb238876d
     3.0.7     A-wanglouko     e2b7a3d8713d51c0215c3a4affacbc95
     1.2.7     H-follower     766e7b2d2eedba2996498605fa03ed331.2.7     A-shiry     d2924e24d9dbc887c3bea5a1682204d9
     1.5.1     Z-wammer     f880af48ba2567de0f3f9a6bb70fa962
     1.2.7     H-clouda     aa051d9e2accbae74004d761ec747110
     2.2.13     H-clouda     02a32fd61c60dd2c5d9ed8a826c53be42.5.9     B-ywsy     04cc447ad65dcea5a131d5a993268edf

各個欄位之間使用TAB分隔,每個欄位含義與上面表user_db.daily_user_info的欄位對應,然後我們將測試資料載入到示例表的各個分割槽之中:


LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-05.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-05');
LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-06.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-06');
LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-07.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-07');
LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-08.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-08');
LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-09.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-09');
LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-10.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-10');
LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-11.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-11');

可以通過Hive CLI介面登入,查看錶中資料:


SELECT COUNT(1) FROM daily_user_info;

我這裡有241709545條記錄作為測試資料。

  • Hue登入頁面

Hue服務啟動成功後,可以直接通過瀏覽器開啟連線http://10.10.4.125:8000/,就可以登入。第一次開啟,需要輸入預設使用者和口令,然後就可以登入進去,如下圖所示: 
hue-login 
首次登入,選擇使用的使用者即為Hue管理員使用者,許可權很大,可以新增使用者並管理使用者及其使用者組的操作許可權。

  • Hue使用者首頁

登入成功以後,進入Hue Web控制檯首頁,如下圖所示: 
hue-index 
登入成功後,首先會執行一些基本環境的配置檢查工作,它與我們實際修改配置時都指定了哪些應用有關係。

  • Hive查詢編輯器頁面

使用者登入成功後,選擇Query Editors下面的Hive選單項,如圖所示: 
hue-hive-query 
在提交查詢的時候,由於該查詢執行時間較長,可以等待查詢執行,最後結果顯示在的現房的Results標籤頁上,也可以在執行過程中檢視Hive後臺執行情況。

  • Job瀏覽器頁面

通過Job瀏覽器(Job Browser)頁面http://10.10.4.125:8000/jobbrowser/,可以檢視執行在Hadoop叢集上各種狀態的Job,包括Succeeded、Running、Failed、Killed這4種狀態,如圖所示: 
hue-job-browser 
如果想要看到Job具體執行狀態資訊,需要正確配置並啟動Hadoop叢集的JobHistoryServer和WebAppProxyServer服務,可以通過Web頁面看到相關資料,我們的示例,如圖所示: 
hue-job-browser-detail 
如果想看某個Job對應的MapTask或者ReduceTask執行情況,可以點選對應連結進去,和通過Hadoop YARN的Job Web管理介面類似,監控起來非常方便。

  • 使用者管理和授權認證

以授權管理員使用者登入成功後,可以通過點選右上角使用者(我這裡是yanjun),下拉列表中有“Manage Users”選單項,在這裡面可以建立新使用者,並指定訪問許可權,如下圖所示: 
hue-manage-users 
上面,我建立了幾個使用者,並指定使用者所屬的組(Groups,支援組管理)。實際上,我們可以將不同的Hue應用設定為不同的組,然後將新建的使用者分配到該相關組,通過這種方式可以控制使用者訪問Hue應用的許可權。上面建立並分配許可權的使用者可以通過設定的使用者名稱和口令登入Hue Web管理系統,與各種Hadoop相關的應用(不僅僅限於此,如MySQL、Spark等)進行互動。

總結

通過上面的瞭解,以及安裝配置過程所遇到的問題,做一個總結:

  • 如果基於CentOS環境安裝配置Hue,可能相對複雜一點,不一定能夠很容易的配置成功。我開始基於CentOS-5.11(Final)進行配置,沒有配置成功,可能是使用的Hue的版本太高(branch-3.0和branch-3.7.1我都試過),或者可能是CentOS依賴的一些軟體包無法安裝等問題導致的。建議最好使用較新版本的CentOS,我這裡使用的是CentOS-6.6 (Final),Hue使用的branch-3.7.1原始碼編譯,並且Python版本需要2.6+。
  • 使用Hue,我們可能會對使用者管理及其許可權分配也很感興趣,所以資料儲存,可以根據需要使用我們熟悉的其他關係資料庫,如MySQL等,並做好備份,以防使用Hue應用的相關使用者資料丟失,造成無法訪問Hadoop叢集等問題。需要修改Hue的配置檔案,將預設儲存方式sqlite3改成我們熟悉的關係資料庫,目前支援MySQL、Postgresql,以及Oracle。
  • 如果有必要,可能結合Hadoop叢集底層的訪問控制機制,如Kerberos,或者Hadoop SLA,配合Hue的使用者管理和授權認證功能,更好地進行訪問許可權的約束和控制。
  • 根據前面我們提到的Hue特性,我們可以根據自己實際的應用場景,來選擇不同的Hue應用,通過這種外掛式的配置來啟動應用,通過Hue與其互動,如Oozie、Pig、Spark、HBase等等。
  • 使用更低版本的Hive,如0.12,可能在驗證過程中會遇到問題,可以根據Hive的版本來選擇相容版本的Hue來安裝配置。
  • 由於本次安裝配置實踐,並沒有使用Cloudera發行的CDH軟體包,如果使用CDH可能會更加順利一些。

參考連結