1. 程式人生 > >HDP(Ambari)集成Hue

HDP(Ambari)集成Hue

release 默認安裝 grep 原因 then range sources vax detail

目錄

1. 安裝前準備

1.1下載Hue安裝包

1.2安裝依賴

2.安裝Hue

2.1Hue納入Ambari的管理

2.2版本修改

2.3重啟Ambari Server

2.4通過Ambari界面來安裝Hue

2.5安裝Hue

2.6手動安裝Hue

2.7修改Hue配置文件hue.ini

2.8生成Hue數據庫表

2.9其他組件配置修改

2.10啟動Hue

2.11登錄Hue

2.12安裝參考鏈接

3.整合問題

問題1

問題2

問題3

1. 安裝前準備

1.1下載Hue安裝包

環境:

Ambari:2.5.2.0

HDP:2.6.2.0

HDP-UTILS:1.1.0.21

Centos6.7

Hue下載地址:http://gethue.com/downloads/releases/3.12.0/hue-3.12.0.tgz

下載後,將文件拷貝到本地yum源的/var/www/html/HDP/centos6/hue/目錄下。

1.2在Hue安裝節點安裝依賴

yum install -y ant

yum install -y gcc g++

yum install -y libkrb5-dev libmysqlclient-dev

yum install -y libssl-dev libsasl2-dev libsasl2-modules-gssapi-mit

yum install -y libsqlite3-dev

yum install -y libtidy-0.99-0 libxml2-dev libxslt-dev

yum install -y maven

yum install -y libldap2-dev

yum install -y python-dev python-simplejson python-setuptools

沒安裝成功的,不需要管。

2. 安裝Hue

2.1Hue納入Ambari的管理

在主節點上執行如下三個命令

①.VERSION=`hdp-select status hadoop-client | sed ‘s/hadoop-client - \([0-9]\.[0-9]\).*/\1/‘`

②.rm -rf /var/lib/ambari-server/resources/stacks/HDP/$VERSION/services/HUE

③.sudo git clone https://github.com/EsharEditor/ambari-hue-service.git /var/lib/ambari-server/resources/stacks/HDP/$VERSION/services/HUE

2.2版本修改

上一步下載下來的文件中涉及到的Hue版本與所要安裝的Hue版本(3.12)是不一致的。所以需要修改相關文件。

涉及到版本的文件如下:

metainfo.xml

README.md

package/scripts/params.py

package/scripts/setup_hue.py

技術分享圖片

3.11.0替換成3.12.0即可

2.3重啟Ambari Server

在主節點執行命令:service ambari-server restart

2.4通過Ambari界面來安裝Hue

重啟Ambari Server後就能發現,可安裝的服務中有Hue了。

技術分享圖片

2.5選擇Hue,安裝

安裝前,需要在MySQL上創建Hue數據庫。

這個過程中,Hue安裝成功,但是啟動失敗。實際原因還是因為Hue沒有安裝成功。

Hue的默認安裝在機器的/usr/local/hue目錄下。失敗後,需要進行手動安裝。

2.6手動安裝Hue

進入部署Hue的節點上,將/usr/local/hue目錄下所有文件刪除。將/usr/local/hue-3.12.0目錄刪除。

執行命令:

chown -R hue:hue /usr/local/hue

chmod -R 777 /usr/local/hue

hue-3.12.0.tgz解壓縮到/usr/local/目錄下。

進入/usr/local/hue-3.12.0目錄,執行命令:make install

技術分享圖片

一切正常同時/usr/local/hue/build/env/bin/目錄如下就表明安裝成功。

技術分享圖片

2.7修改Hue配置文件hue.ini

配置文件在/usr/local/hue/desktop/conf/目錄下。從頭到尾配置。需要配置mysql、hive、hdfs、webhdfs、yarn等等。

2.8生成hue數據庫表

進入/usr/local/hue/build/env/bin/目錄,執行如下兩條命令:

hue syncdb

hue migrate

技術分享圖片

技術分享圖片

如果hue數據庫中類似如下,那麽說明成功:

技術分享圖片

2.9其他組件配置修改

l Hadoop配置

Custom hdfs-site添加如下兩個配置:

hadoop.proxyuser.hue.groups=*
hadoop.proxyuser.hue.hosts=*

技術分享圖片

同時開啟webhdfs

技術分享圖片

2.10啟動Hue

Ambari界面啟動Hue

2.11登錄Hue

用戶名、密碼:hue

技術分享圖片

2.12安裝參考鏈接

http://gethue.com/hadoop-hue-3-on-hdp-installation-tutorial/

http://blog.csdn.net/lusyoe/article/details/72896480

https://github.com/EsharEditor/ambari-hue-service

3.整合問題

問題1:啟動Hue失敗,報編碼問題UnicodeEncodeError: ‘ascii‘ codec can‘t encode character u‘\u201c‘ in position 3462: ordinal not in range(128)

解決辦法:在Hue安裝節點上修改sudo.py

vim /usr/lib/python2.6/site-packages/resource_management/core/sudo.py

添加

import sys

reload(sys)

sys.setdefaultencoding(‘utf-8‘)

技術分享圖片

參考鏈接:https://github.com/EsharEditor/ambari-hue-service/issues/19

問題2:Hue首頁PREFERRED_STORAGE_ENGINE We recommend MySQL InnoDB engine over MyISAM which does not support transactions.

解決辦法:執行如下兩個命令

mysql -u root -proot -e \

"SELECT CONCAT(‘ALTER TABLE ‘,table_schema,‘.‘,table_name,‘ engine=InnoDB;‘) \

FROM information_schema.tables \

WHERE engine = ‘MyISAM‘ AND table_schema = ‘hue‘;" \

| grep "ALTER TABLE hue" > /tmp/set_engine_innodb.ddl

mysql -u root -proot < /tmp/set_engine_innodb.ddl

參考鏈接: https://www.cloudera.com/documentation/enterprise/5-8-x/topics/hue_trb_misconfig.html

問題3:不管Hue使用的執行引擎(Tez、Mapreduce)是什麽,即使HiveServer2運行正常,但是在使用Hue時,第一次一切正常,但後面就會顯示如下信息:HiveThe application won‘t work without a running HiveServer2.

hiveserver2.log日誌文件輸入如下錯誤信息:

Thread-95]: thrift.ThriftHttpServlet (ThriftHttpServlet.java:doPost(145)) - Could not validate cookie sent, will try to generate a new cookie

2017-10-13 16:05:56,038 ERROR [HiveServer2-HttpHandler-Pool: Thread-95]: thrift.ThriftHttpServlet (ThriftHttpServlet.java:doPost(209)) - Error:

org.apache.hive.service.auth.HttpAuthenticationException: Authorization header received from the client is empty.

at org.apache.hive.service.cli.thrift.ThriftHttpServlet.getAuthHeader(ThriftHttpServlet.java:548)

at org.apache.hive.service.cli.thrift.ThriftHttpServlet.getAuthHeaderTokens(ThriftHttpServlet.java:529)

at org.apache.hive.service.cli.thrift.ThriftHttpServlet.getUsername(ThriftHttpServlet.java:507)

at org.apache.hive.service.cli.thrift.ThriftHttpServlet.doPasswdAuth(ThriftHttpServlet.java:355)

at org.apache.hive.service.cli.thrift.ThriftHttpServlet.doPost(ThriftHttpServlet.java:164)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:565)

at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:479)

at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225)

at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031)

at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)

at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)

at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)

at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)

at org.eclipse.jetty.server.Server.handle(Server.java:349)

at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:449)

at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:925)

at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:857)

at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)

at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:76)

at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:609)

at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:45)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

技術分享圖片

解決辦法:在hive配置界面,將Run as end user instead of Hive user(hive.server2.enable.doas)設置為false,重啟Hive即可。

技術分享圖片

默認情況下,HiveServer2以提交查詢的用戶執行查詢(true),如果hive.server2.enable.doAs設置為false,查詢將以運行hiveserver2進程的用戶運行。

HDP(Ambari)集成Hue