Hue 編譯安裝和大數據組件集成配置 環境信息

環境信息

因使用要求,需要臨時在集羣中加裝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_userserver_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_usernameauth_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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章