参考资料:
ambari-hue-service:Ambari集成Hue github代码
Hue官方文档 database部分介绍
文档目录
- 4.1 yum安装python-simplejson报错:No package python-simplejson available.
- 4.2 hue初始化报错 : ‘ascii’ codec can’t encode character u’\u201c’ in position 3462: ordinal not in range(128)
- 4.3 hue初始化报错 :HTTP request sent, awaiting response… 404 Not Found
- 4.4 hue界面打开报错: 1044, “Access denied for user ‘hue’@’%’ to database ‘desktop/desktop.db’”
- 4.5 hue界面访问hdfs报错 Cannot access: /. Note: you are a Hue admin but not a HDFS superuser, “hadoop” or part of HDFS supergroup, “supergroup”
一. 安装前准备
1.1 环境配置
我的环境配置如下:
环境 | 对应版本 |
---|---|
Amabri | 2.6.0.0 |
HDP | 2.6.3.0 |
HDP-UTILS | HDP-UTILS-1.1.0.21 |
CentOs | 7.4 |
1.2 下载Hue安装包
注:如果官网下载碰到问题可使用如下链接
提取码: qflu
下载后,将hue-4.2.0.tgz文件拷贝到本地yum源的hue目录下.此路径可以通过查看hdp源配置文件获取,例:
# 注: 有的ambari对应HDP.repo文件
cat /etc/yum.repos.d/hdp.repo | grep baseurl
# 显示结果如下
baseurl=http://{hostname}/ambari/HDP/centos7/2.6.3.0-235
baseurl=http://{hostname}/ambari/HDP-UTILS
#那么上述配置对应hue目录为
/var/www/html/ambari/HDP/centos7/2.6.3.0-235/hue
1.3 在Hue安装节点安装必要依赖
在安装Hue的节点上执行如下命令安装必要依赖
yum install -y ant
yum install -y maven
yum install -y git
yum install -y gcc gcc-c++ make
yum install -y cyrus-sasl-devel cyrus-sasl-plain cyrus-sasl-gssapi
yum install -y krb5-devel libxml2-devel libxslt-devel
yum install -y python-setuptools
yum install -y openldap-devel python-devel sqlite-devel openssl-devel gmp-devel libffi-devel saslwrapper-devel
yum install -y mysql mysql-devel
yum install -y asciidoc
yum install -y python-simplejson # 注: 若该命令运行异常,请跳转问题一查看解决方案
二. 将Hue集成到Ambari
2.1 将Hue添加进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 根据实际情况修改代码
2.2.1 版本修改
2.1步骤中下载下来的文件中涉及到的Hue版本与所要安装的Hue版本(4.2)是不一致的。所以需要修改相关文件。
涉及到版本的文件如下
metainfo.xml
README.md
package/scripts/params.py
package/scripts/setup_hue.py
将上述文件中出现的所有3.11.0替换成4.2.0即可
2.2.2 脚本修改
为了保证Hue能够正常下载安装,我们还需要对部分脚本做必要的修改
脚本目录如下
/var/lib/ambari-server/resources/stacks/HDP/2.6/services/HUE/package/scripts/
修改common.py文件
首先新增如下几条执行命令,修改之后结果如下:
接下来注释掉如下几行,注释之后显示如下:
修改setup_hue.py文件
注释掉如下两行,修改之后显示如下:
修改params.py文件
首先,修改32行,download_url配置,修改之后结果如下图:
注意:这里配置应该根据自己实际情况! 最后需要保证download_url参数返回的结果和1.2步骤中配置的值一致
否则hue初始化过程中会出现404问题导致失败
接下来,修改186行,将端口号修改为50070,如下:
检查configs.sh文件
该文件所在目录:
/var/lib/ambari-server/resources/stacks/HDP/2.6/services/HUE/package/files
检查该文件中ambari平台密码,端口号设置是否和ambari-server配置一致,不一致需要进行更正
2.3 重启ambari-server
修改完2.2所述配置之后,执行如下命令重启ambari-server
ambari-server restart
我们已经可以在添加服务列表里看到Hue服务
三. Ambari中安装配置hue
3.1 hue正式安装前配置
3.1.1 安装hadoop-httpfs
如果hdfs启用了HA模式,那么需要开启hadoop-httpfs服务,因为webhdfs不能自动感知hdfs-site.xml里面配的HA高可用信息。而HDP是阉割了httpfs的,所以这里需要手动安装,操作如下:
# 安装 hadoop-httpfs
sudo yum install hadoop-httpfs
# 启动HttpFs
sudo service hadoop-httpfs start(或者/usr/hdp/current/hadoop-httpfs/etc/rc.d/init.d/hadoop-httpfs start)
3.1.2 hdfs添加相关配置
注意: 下述参数在添加过程中碰到参数已经存在的提示无需理会,直接添加下一个即可
HDFS组件在自定义core-site配置文件中添加如下参数
hadoop.proxyuser.hue.groups=*
hadoop.proxyuser.hue.hosts=*
hadoop.proxyuser.httpfs.groups=*
hadoop.proxyuser.httpfs.hosts=*
hadoop.proxyuser.livy.groups=*
hadoop.proxyuser.livy.hosts=*
HDFS组件在自定义hdfs-site配置文件中添加如下参数:
dfs.namenode.acls.enabled=true
同时确保webhdfs处于开启状态
3.1.3 mysql数据库配置
需要在MySQL上创建Hue数据库
create database hue;
CREATE USER hue@'%'IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON hue.* TO hue@'*' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON hue.* TO hue@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
3.2 hue初始化
上述配置结束后,可以在ambari web界面上依照提示进行hue初始化工作
Hue Databases配置
此处也可以配置到MySQL Configs部分中
Hue User Info配置
启用User Sync,使用linux系统本地用户
Hue Service Module配置
其它保持默认值,点击下一步,一直到完成安装部署
这里涉及到源码编译,所以会等待比较长的时间
此时,如果遇到报错,根据界面提示的相关错误信息去排查解决
如果/usr/local/hue/build/env/bin/目录如下证明安装成功
注意! 截止到到上述操作,我们仅仅完成了hue的安装工作,
这个时候启动或者界面跳转会失败,因为我们还没有对安装好的Hue进行进一步配置
3.3 hue初始化后进行的配置
手动修改Hue配置文件Hue.ini
配置文件在/usr/local/hue/desktop/conf/目录下。从头到尾配置。需要配置mysql、hive、hdfs、webhdfs、yarn等等。根据自己已有的组件进行修改(hue启动代码是通过界面配置参数刷入到pseudo-distributed.ini文件,此操作仅作参考),具体内容如下所示:
修改[desktop]
修改[[database]]
修改[hadoop]
注意:我这里的示例集群开启了HA
修改[[yarn_cluesters]]
注: 我这里的示例yarn也开启了HA配置
修改[[ha]]
修改[beeswax]
修改[spark]
修改[firebrowser]
修改[zookeeper]
修改[libzookeeper]
注:我这里只列举了自己的组件,如果涉及到其它组件,也要根据实际情况修改配置文件
3.4 生成hue数据库和表
进入/usr/local/hue/build/env/bin/目录,执行如下两条命令:
./hue syncdb
./hue migrate
hue数据库中表类似下图,证明执行成功:
3.5 启动和登录Hue
如果要启用HBase,启动hue之前,先要启动 hbase thrift service,ambari HDP 默认没有启动hbase thrift,需要自己手动启动。在HBase Master节点上执行:
/usr/hdp/current/hbase-client/bin/hbase-daemon.sh start thrift
在Ambari界面启动Hue,快速链接上打开Hue界面
出现如下界面,证明hue安装配置正常
输入账户名密码登录即可! 我这里登录用户名:hue,密码:hue
四. Ambari集成Hue过程中遇到的问题及解决方案
4.1 yum安装python-simplejson报错:No package python-simplejson available.
问题描述:
# 执行以下命令安装simplejson的时候
yum install python-simplejson -y
报错:
No package python-simplejson available.
Error: Nothing to do
解决方案:
可以尝试以下几种下载方式:
方法一:
wget https://pypi.python.org/packages/source/s/simplejson/simplejson-3.5.2.tar.gz#md5=10ff73aa857b01472a51acb4848fcf8b --no-check-certificate
tar vxzf simplejson-3.5.2.tar.gz
cd simplejson-3.5.2
python setup.py install
方法二:
pip install simplejson
方法三:
easy_install simplejson
我最终用方法一解决了该问题
4.2 hue初始化报错 : ‘ascii’ codec can’t encode character u’\u201c’ in position 3462: ordinal not in range(128)
问题描述:
# hue初始化时报错,如下
File "/usr/lib/python2.6/site-packages/resource_management/core/sudo.py", line 141, in create_file
fp.write(content)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u201c' in position 3462: ordinal not in range(128)
问题原因:
编码问题
解决方案:
修改报错文件的编码方式,如下:
vim /usr/lib/python2.6/site-packages/resource_management/core/sudo.py
# 添加如下内容:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
如下图所示:
4.3 hue初始化报错 :HTTP request sent, awaiting response… 404 Not Found
# 界面上install hue报错, 具体提示如下:
2020-11-11 14:08:52 (298 MB/s) - 'hue.tgz' saved [48520359/48520359]
--2020-11-11 14:08:52-- http://{ip}/ambari/HDP-UTILS/hue/hue-4.2.0.tgz
Reusing existing connection to 172.16.87.191:80.
HTTP request sent, awaiting response... 404 Not Found
2020-11-11 14:08:52 ERROR 404: Not Found.
FINISHED --2020-11-11 14:08:52--
Total wall clock time: 0.2s
Downloaded: 1 files, 46M in 0.2s (298 MB/s)
报错原因:
从报错提示来看,给出的链接下并没有hue-4.2.0.tgz压缩包
怀疑是download_url部分配置解析问题
解决方案:
修改params.py文件
cd /var/lib/ambari-server/resources/stacks/HDP/2.6/services/HUE/package/scripts/
vim params.py
# 修改download_url配置为如下,注:该配置需要根据个人实际情况修改,请勿直接复制粘贴
download_url = 'cat /etc/yum.repos.d/hdp.repo | grep "baseurl" | grep "ambari/HDP/centos" | awk -F \'=\' \'{print $2"/hue /hue-4.2.0.tgz"}\''
修改完毕之后,重新初始化,问题得到解决!
4.4 hue界面打开报错: 1044, “Access denied for user ‘hue’@’%’ to database ‘desktop/desktop.db’”
问题描述:
hue初始化结束并成功启动之后,ambari点击quicklinks进入Hue界面时界面报错:
OperationalError at /hue/accounts/login/
(1044, "Access denied for user 'hue'@'%' to database 'desktop/desktop.db'")
Request Method: GET
Request URL: http://ambari-191-master:8888/hue/accounts/login/?next=/
Django Version: 1.6.10
Exception Type: OperationalError
Exception Value:
(1044, "Access denied for user 'hue'@'%' to database 'desktop/desktop.db'")
Exception Location: /usr/local/hue/build/env/lib/python2.7/site-packages/MySQL_python-1.2.5-py2.7-linux-x86_64.egg/MySQLdb/connections.py in __init__, line 193
Python Executable: /usr/local/hue/build/env/bin/python2.7
Python Version: 2.7.5
问题原因:
hue数据库初始化异常
解决方案:
进入/usr/local/hue/build/env/bin/目录,执行如下两条命令:
./hue syncdb
./hue migrate
正确之后重启hue,及相关组件,点击链接,界面正常显示!
4.5 hue界面访问hdfs报错 Cannot access: /. Note: you are a Hue admin but not a HDFS superuser, “hadoop” or part of HDFS supergroup, “supergroup”
报错详情:
Cannot access: /. Note: you are a Hue admin but not a HDFS superuser, "hadoop" or part of HDFS supergroup, "supergroup".
SecurityException: Failed to obtain user group information: org.apache.hadoop.security.authorize.AuthorizationException: User: hue is not allowed to impersonate hue (error 403)
报错原因:
权限问题, hue用户不具备相应hdfs目录的访问权限
解决方案:
为hue添加如下配置
该配置与3.1.1过程中所在的主机名一致
修改如下配置,将Default User的值配置为报错的用户
修改完上述配置之后,重新启动hue.问题即可得到解决