環境信息
因使用要求,需要臨時在集羣中加裝Hue。Hue所在集羣的情況如下:
- CentOS 7.4
- Hue 4.10
- Hadoop 3.x
- Hive 3.x
- HBase 2.x
本篇記錄Hadoop集羣安裝Hue的全過程。
Hue編譯
Hue 4.10版本下載可在GitHub Release下載:Release Release 4.10 · cloudera/hue (github.com)
在編譯前需要在環境環境安裝如下內容:
yum install sqlite-devel
yum install ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-plain gcc gcc-c++ krb5-devel libffi-devel libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel python-devel gmp-devel
yum install npm
然後將下載好的源代碼包解壓,進入源代碼解壓的根目錄執行:
make install
編譯成功後Hue可在編譯機啓動。如果需要在其他機器部署,需要將usr/local/hue
目錄打包壓縮後複製到目標機器。
安裝和基礎配置
將上一步編譯打包後的Hue解壓在目標機器usr/local/hue
。然後配置/usr/local/hue/desktop/conf/hue.ini
:
http_host=0.0.0.0
http_port=8888
time_zone=Asia/Shanghai
# Webserver runs as this user
server_user=hue
server_group=hue
配置項解釋如下:
- http_host: bind host。Hue綁定什麼IP。0.0.0.0表示多網絡場景可以用任何一個網絡下的IP訪問Hue。
- http_port: HTTP端口號。
- time_zone: 時區。
-
server_user
和server_group
: Hue web server啓動使用的用戶身份。默認爲Hue,按需修改。
MySQL元數據同步
Hue自身的配置需要一個外部數據庫幫忙存儲。默認不配置情況下Hue使用的是sqlite3。sqlite3儲存形式僅僅是一個數據庫文件。沒有自身的服務。經過博客作者驗證Hue配置成sqlite3使用的時候還會出現database is locked
的錯誤。所以說除了學習用途不建議Hue配置爲默認的sqlite3。建議使用MySQL等其他數據庫。
下面給出配置MySQL數據庫的步驟。
首先需要修改hue.ini
文件的[[database]]
和[[librdbms]]
節,如下所示。
[[database]]
engine=mysql
host=mysqlhost
port=3306
user=hue
password=hue
name=hue
[librdbms]
[[databases]]
name=hue
engine=mysql
host=mysqlhost
port=3306
user=hue
password=hue
其中name
爲hue使用的database名稱。MySQL中的hue用戶,hue數據庫和hue用戶訪問hue數據庫的權限需要提前創建並配置好。配置的方法可查閱MySQL相關資料,這裏不再贅述。
到這一步,我們創建好的hue數據庫裏面是空的,沒有任何表。因此我們需要hue初始化數據庫。執行下面命令創建元數據表:
/usr/local/hue/build/env/bin/hue syncdb
/usr/local/hue/build/env/bin/hue migrate
執行成功後在hue數據庫執行show tables
,可以發現hue爲我們創建好了所有運行時候用到的table。
啓動Hue
到這裏位置Hue的安裝和基本配置已完成。可以嘗試啓動Hue。啓動命令如下:
nohup /usr/local/hue/build/env/bin/supervisor &
然後使用瀏覽器訪問hue的IP 8888端口(按照例子中的配置)。如果可以打開Hue的web頁面,說明前面操作無誤。可以使用admin/admin創建新用戶並登錄。
下面介紹Hue集成部分大數據組件的方法。
HDFS文件瀏覽集成
若使用Hue瀏覽HDFS中的數據,要求Hadoop開啓webHDFS。
在hdfs-site.xml
中增加如下配置:
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
重啓Hadoop後修改hue.ini
:
[[hdfs_clusters]]
[[[default]]]
fs_defaultfs=hdfs://hadoop_ip:8020
webhdfs_url=http://hadoop_ip:50070/webhdfs/v1
然後重啓Hue。
注意:
如果出現User: xxx is not allowed to impersonate xxx
錯誤,需要增加Hadoop用戶代理的配置。類似如下:
core-site.xml
:
<property>
<name>hadoop.proxyuser.hue.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hue.groups</name>
<value>*</value>
</property>
httpfs-site.xml
:
<property>
<name>httpfs.proxyuser.hue.hosts</name>
<value>*</value>
</property>
<property>
<name>httpfs.proxyuser.hue.groups</name>
<value>*</value>
</property>
HBase集成
HBase要求啓動thrift server:
./hbase-daemons.sh start thrift2
默認HBase thrift server端口號爲9090。如需修改可參考HBase文檔。
然後修改hue.ini
:
[hbase]
hbase_clusters=(Cluster|hbase_thrift_server_ip:9090)
hbase_conf_dir=/path/to/hbase/conf
其中hbase_clusters
爲HBase的thrift server地址和端口號,務必按照給出的格式配置,即(Cluster|ip:port)
。
配置完畢後重啓Hue。
Hive集成
Hive集成需要提供hiveserver2的地址和端口號,以及metastore的地址。
修改hue.ini
,示例如下:
[beeswax]
hive_server_host=hiveserver2_ip
hive_server_port=10000
hive_server_http_port=10001
hive_metastore_host=metastore_ip
hive_conf_dir=/path/to/hive/conf
# auth_username=
# auth_password=
use_sasl=true
注意,需要配置use_sasl=true
否則會出現如下錯誤:
thrift.transport.TTransport.TTransportException: TSocket read 0 bytes
Hive如果沒有開啓認證,無需配置auth_username
和auth_password
。
最後重啓Hue。
查詢Hive表的時候可能會遇到如下錯誤:
Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found (code THRIFTTRANSPORT): TTransportException('Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found',)
這個錯誤說意味着我們沒有安裝cyrus-sasl
。安裝的方法爲執行:
yum install cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5