Ambari2.7.4集成Hue4.6.0

一、前言

Hue是一个开源的Apache Hadoop UI系统,由Cloudera Desktop演化而来,最后Cloudera公司将其贡献给Apache基金会的Hadoop社区,它是基于Python Web框架Django实现的。

通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job,执行Hive的SQL语句,浏览HBase数据库等等。

Ambari2.7.4集成Hue4.6.0

二、版本信息

Ambari:2.7.4

HDP:3.1.4

HUE:4.6.0   下载地址:https://cdn.gethue.com/downloads/hue-4.6.0.tgz

ambari-hue-service 集成插件  下载地址:https://github.com/lijufeng2016/ambari-hue-service

全文参考https://blog.csdn.net/u013289115/article/details/104757902,感谢这位大佬提供的插件,但是有些步骤不够详细也比较乱,弄了两天才搞成功。按照自己的思路重新整理了一下。

二、环境准备

1、hue的master节点上执行,为编译环境做准备

yum install sqlite-devel  libxslt-devel.x86_64 python-devel openldap-devel asciidoc cyrus-sasl-gssapi  libxml2-devel.x86_64 gcc gcc-c++ kernel-devel openssl-devel gmp-devel libffi-devel

Ambari2.7.4集成Hue4.6.0

注意:一定要全部yum安装成功,不然后面编译hue会失败。

 

#安装新版的nodejs

curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -

yum install -y nodejs

Ambari2.7.4集成Hue4.6.0

2、所有机器上创建用户和组

useradd -g hue hue

3、提前在mysql创建好hue的库并授权

create database hue character set utf8; 

CREATE USER 'hue'@'%'IDENTIFIED BY 'Siger_123';

grant ALL PRIVILEGES ON *.* TO 'hue'@'%';

CREATE USER 'hue'@'localhost'IDENTIFIED BY 'Siger_123';

grant ALL PRIVILEGES on *.* to hue@'localhost' identified by 'Siger_123';

FLUSH PRIVILEGES;   

4、提前建好hue在hdfs的HOME目录

su hdfs

hadoop fs -mkdir /user/hue

hadoop fs -chown hue:hue /user/hue

三、搭建

1、下载插件源码

在ambari server节点执行

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/lijufeng2016/ambari-hue-service.git /var/lib/ambari-server/resources/stacks/HDP/$VERSION/services/HUE

Ambari2.7.4集成Hue4.6.0

2、拷贝安装包

mkdir /var/www/html/ambari/HDP/centos7/3.1.4.0-315/hue/

将hue-4.6.0.tgz安装包放在hue目录下

Ambari2.7.4集成Hue4.6.0

3、修改代码和环境配置

  • (1)package/files/configs.sh文件

cd /var/lib/ambari-server/resources/stacks/HDP/3.1/services/HUE/package/files

vim configs.sh

Ambari2.7.4集成Hue4.6.0

  • (2)package/scripts/params.py文件

第32行 download_url 改成你自己的地址,可以跟hdp的本地仓库放一起

第40行 ambari_server_hostname 改成你自己的地址

http://172.8.10.100/ambari/HDP/centos7/3.1.4.0-315/hue/hue-4.6.0.tgz

Ambari2.7.4集成Hue4.6.0

  • (3)修改ignore_groupsusers_create [w1]

cd /var/lib/ambari-server/resources/scripts

python configs.py -u admin -p admin -n CloudTest -l siger-master.test.com -t 8080 -a get -c cluster-env |grep -i ignore_groupsusers_create

python configs.py -u admin -p admin -n CloudTest -l siger-master.test.com -t 8080 -a set -c cluster-env -k ignore_groupsusers_create -v true

Ambari2.7.4集成Hue4.6.0

  • (4)修改编码[w2]

# 在hue的安装节点上:

vim /usr/lib/ambari-agent/lib/resource_management/core/sudo.py

 

# 添加如下代码:

import sys

reload(sys)

sys.setdefaultencoding(‘utf-8’)

Ambari2.7.4集成Hue4.6.0

4、部署安装

# 重启ambari

ambari-server restart

 

# ambari界面操作

界面左侧 >> services >> Add service >> Hue >> NEXT >> 选择Hue Server >> NEXT >> 配置:数据库配置,这里选了mysql:

HUE DATABASES:

Ambari2.7.4集成Hue4.6.0

Ambari2.7.4集成Hue4.6.0

HUE USER INFO:

Ambari2.7.4集成Hue4.6.0

HUE SERVICE MOOULE:

Ambari2.7.4集成Hue4.6.0

# 安装成功

Ambari2.7.4集成Hue4.6.0

5、编译hue

cd /usr/hdp/3.1.4.0-315/hue/

make apps

Ambari2.7.4集成Hue4.6.0

6、修改配置

  • (1)修改hue的pseudo-distributed.ini 配置 [w3]

       allowed_hosts=*

Ambari2.7.4集成Hue4.6.0

  • (2)修改hue源码 [w4]

vim /usr/hdp/3.1.4.0-315/hue/desktop/core/src/desktop/lib/conf.py

 

第293行改为:

if raw is None or raw=='':

Ambari2.7.4集成Hue4.6.0

 

  • (3)修改host和port [w5]

# 把hiveserver2的host和端口号手动设置一下

修改hue-hive-site

Ambari2.7.4集成Hue4.6.0

修改pseudo-distributed.ini

Ambari2.7.4集成Hue4.6.0

 

  • (4)修改use_sasl [w6]

修改pseudo-distributed.ini,在beeswax的配置下面加上 use_sasl=true

Ambari2.7.4集成Hue4.6.0

 

  • (5)修改源码 [w7]

新版的hue4.6.0与hdp3.1.4这种双新组合往往自带坑位,网上也找不到任何答案,经过一步步推测排查,首先可以确定的是后端返回字段的时候有问题,与之相关的是hive相关的包,经过漫长的一步一步排查,确定到了哪一行代码。

vim /usr/hdp/3.1.4.0-315/hue/apps/beeswax/src/beeswax/server/hive_server2_lib.py

118行和119行的2改成1即可

Ambari2.7.4集成Hue4.6.0

 

  • (6)启动thrift [w8]

hdp3中,hbase的thrift默认不开启,需要手动在各个Hmaster节点启动,注意,一定要使用hbase用户启动thrift,而不是thrift2!!否则后面还会有问题,上代码

su hbase

/usr/hdp/current/hbase-master/bin/hbase-daemon.sh start thrift

Ambari2.7.4集成Hue4.6.0

建议把启动thrift的命令写到启动hbase master的脚本里,这样就不用每次手动起了。

7、启动

#改完重启,终于看到人样的页面了,创建hue账号,第一次任意设置,我这里设置成admin/admin,

Ambari2.7.4集成Hue4.6.0


 [w1] 不修改,安装时报错:KEY ERROR -u'hue'

keyError -u'hue'

Error: Error: Unable to run the custom hook script ['/usr/bin/python', '/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/hook.py', 'ANY', '/var/lib/ambari-agent/data/command-303.json', '/var/lib/ambari-agent/cache/stack-hooks/before-ANY', '/var/lib/ambari-agent/data/structured-out-303.json', 'INFO', '/var/lib/ambari-agent/tmp', 'PROTOCOL_TLSv1_2', '']

 

 [w2] 不修改,安装时报错:UnicodeEncodeError: 'ascii' codec can't encode character u'\u201c' in position 3462: ordinal not in range(128)

 因为/usr/lib/python2.7/site-packages/resource_management/core/sudo.py文件在新版本中不适用!需要修改编码

 

 [w3] 不修改,安装时报错:Invalid HTTP_HOST header: ‘siger-master.test.com:8888’. You may need to add u’ siger-master.test.com’ to ALLOWED_HOSTS.

Ambari2.7.4集成Hue4.6.0

 

[w4] 不修改,访问hue时会报:加载数据库时出错

Ambari2.7.4集成Hue4.6.0

 

 [w5] 端口号当成字符串输入了,会报错:%d format: a number is required, not str

Ambari2.7.4集成Hue4.6.0

 

 [w6] 不修改,会报错:TSocket read 0 bytes (code THRIFTTRANSPORT): TTransportException(‘TSocket read 0 bytes’,)

Ambari2.7.4集成Hue4.6.0

 

 [w7] 不修改,会报错:显示无列

Ambari2.7.4集成Hue4.6.0

 

 [w8]  不启动,查看hbase报错,无法联系到 HBase Thrift 1 服务器:Could not connect to siger-master.test.com:9090

Ambari2.7.4集成Hue4.6.0

 

 

上一篇:centos7 ambari 2.6.2.0+hdp 2.6.5.0大数据集群安装部署(企业级)


下一篇:Hadoop 格式化format namenode 后,ambari端启动datanode节点无法正常启动处理