编译部署 HUE 到 CentOS 6
手工部署 HUE 到 centos6 下的 HDP
本次部署参考了HDP官方文档 Command Line Installation。 为了进行本次测试,需要先搭建基于centos6的大数据环境,只是要使用 ambari-vagrant/centos6.8
目录下Vagrantfile来启动虚拟机。然后安装Ambari,再利用Ambari部署HDP。
- 部署环境:vagrant管理下的3台VM(c6801/c6802/c6803);
- 操作系统:centos6.8;
- Ambari管理下的HDP组件:HDFS/YARN/MR2/ZooKeeper/AmbariMetrics。
- HUE安装源:HDP本地源
检测一下安装源是否可用:
$ cat /etc/yum.repos.d/HDP.repo
[HDP-2.5]
name=HDP-2.5
baseurl=http://repo.imaicloud.com/HDP/centos6/2.x/updates/2.5.3.0
$ yum list hue hue-*
Installed Packages
hue.x86_64 2.6.1.2.5.3.0-37.el6 @HDP-2.5
hue-beeswax.x86_64 2.6.1.2.5.3.0-37.el6 @HDP-2.5
hue-common.x86_64 2.6.1.2.5.3.0-37.el6 @HDP-2.5
hue-hcatalog.x86_64 2.6.1.2.5.3.0-37.el6 @HDP-2.5
hue-oozie.x86_64 2.6.1.2.5.3.0-37.el6 @HDP-2.5
hue-pig.x86_64 2.6.1.2.5.3.0-37.el6 @HDP-2.5
hue-server.x86_64 2.6.1.2.5.3.0-37.el6 @HDP-2.5
配置HDP支持HUE
通过 Ambmari 界面停止:NameNode 服务。 通过 Ambari 在 HDFS 服务的 Custom core-site 配置中增加一下参数(点击Add Property):
hadoop.proxyuser.hue.groups = *
hadoop.proxyuser.hue.hosts = *
安装 hue 包
通过 Ambari 停止所有的 HDP 服务。
执行以下命令安装 hue:
$ yum install hue
修改 hue 配置文件
hue 配置文件位于 /etc/hue/conf/hue.ini
。
配置 HDFS 集群
在配置文件的 [hadoop][[hdfs_clusters]] [[[default]]]
小节中:
fs_defaultfs=hdfs://c6801.ambari.apache.org:8020
webhdfs_url=http://c6801.ambari.apache.org:50070/webhdfs/v1/
配置 YARN(MR2) 集群
在配置文件的 [hadoop][[yarn_clusters]] [[[default]]]
小节中:
resourcemanager_api_url=http://c6802.ambari.apache.org:8088
resourcemanager_rpc_url=http://c6802.ambari.apache.org:8050
proxy_api_url=http://c6802.ambari.apache.org:8088
history_server_api_url=http://c6802.ambari.apache.org:19888
app_timeline_server_api_url=http://c6802.ambari.apache.org:8188
node_manager_api_url=http://c6802.ambari.apache.org:8042
需要先通过Ambari界面查看各个组件安装的主机FQDN,不同环境下的主机HQDN可能不同。
本测试环境没有安装其他的HDP服务,只配置了上述服务。
启停 hue 服务
启动、停止、重启分别执行下列命令:
$ /etc/init.d/hue start
$ /etc/init.d/hue stop
$ /etc/init.d/hue restart
这里当然执行启动命令。
验证 Hue 安装
确保你的 windows 主机配置文件 hosts(如 c:/windows/system32/drivers/etc/hosts
)中定义了:
192.168.68.101 c6801.ambari.apache.org
在浏览器中输入这个地址:
http://c6801.ambari.apache.org:8000/dump_config
如果Hue安装正确,会出现Hue登录界面。登录界面提示:
由于这是您第一次登录,请选择任何用户名和密码。一定要记住这些,因为 它们将成为您的Hue超级用户凭据。
可以输入类似 admin/admin
当 Hue 的管理员账号。
登录后可以点File Browser菜单看看HDFS上的文件清单。
可以点击 About > Configuration
看看配置,点击 About > Check
检查配置问题。
需要说明的是,HDP 的 HUE 版本的界面与 githue.com 版本(最新的是3.12.0版本)有所不同,可能是 HDP 内置的 HUE 版本较古老。
编译 Hue
为什么要自己编译HUE?因为无论githue.com还是HDP都没有为HUE提供各种版本linux的下载源。
测试发现,在 centos6.8 下编译的 hue 在 centos7.0 下运行不了(貌似因为 python 版本不同)。因此需要分别在 centos6.8/centos7.3/ubuntu14.4 下进行了编译。本章主要描述 centos7.3 和 ubuntu14.4 下的编译过程。
centos 7.3 下编译HUE
使用下面的 vagrant box 搭建的 centos7 编译环境:
config.vm.box = "geerlingguy/centos7"
实测发现下面的 box 执行 yum update 有很多错误,不如上面的那个box:
config.vm.box = "bento/centos-7.3"
准备
按HUE官方github库的 提示 ,编译环境需要先装 Oracle JDK。
更详细的手册在 这里 。
首先,卸载已有JDK的方法:
$ rpm -qa | grep java 或 rpm -qa | grep jdk
java-1.8.0-openjdk-headless-1.8.0.131-0.b11.el6_9.x86_64
$ rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.131-0.b11.el6_9.x86_64
到 Oracle Java下载页面 下载RPM包。直接用 wget 不行,需要先下载到 windows 下。现已经把安装包上传到 repo.imaicloud.com。
$ wget http://repo.imaicloud.com/hue/jdk-8u131-linux-x64.rpm
$ rpm -ivh jdk-8u131-linux-x64.rpm 或 yum install jdk-8u131-linux-x64.rpm
安装编译需要的其他包(centos6):
yum install git ant gcc gcc-c++ wget tar asciidoc krb5-devel libxml2-devel libxslt-devel openldap-devel python-devel python-simplejson python-setuptools sqlite-devel rsync saslwrapper-devel pycrypto gmp-devel libyaml-devel cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi libffi-devel mysql-devel openssl-devel make apache-maven libtidy
centos7下maven需要这样安装:yum install maven
。 sqlite-devel的下载需要翻墙。可以手工下载和安装:
$ wget http://repo.imaicloud.com/hue/sqlite-devel-3.7.17-8.el7.x86_64.rpm
$ yum install sqlite-devel-3.7.17-8.el7.x86_64.rpm
下载源码和编译
下载 hue 源码,然后编译:
$ git clone https://github.com/cloudera/hue.git
$ cd hue
$ make apps > hue_make.log 2>&1
make apps 后面的代码是为了把编译过程输出到文件,以便以查错。
测试 hue
$ build/env/bin/hue runserver
$ curl -L http://127.0.0.1:8000
打包和本地源
把编译结果打包成tarball:
$ cd ..
$ tar -zcvf hue.tgz hue (把hue目录打包成hue.tgz)
$ mv hue.tgz hue-3.12.0-centos7.tgz (文件改名)
$ scp hue-3.12.0-centos7.tgz root@repo.imaicloud.com:/opt/nginx/repo/hue/ (将tar包上传到本地源)
新生成的barball的下载路径是 http://repo.imaicloud.com/hue/hue-3.12.0-centos7.tgz
。(Vagrant:/e/t)
ubuntu14 下编译 hue
准备编译需要的包:
apt-get install git ant gcc g++ wget tar libkrb5-dev libxml2-dev libxslt1-dev libldap2-dev python-dev python-setuptools libsqlite3-dev libsasl2-dev libsasl2-modules-gssapi-mit libmysqlclient-dev maven libtidy-0.99-0 libffi-dev libssl-dev
安装oracle JDK:
$ apt list --installed | grep openjdk (根据安装openjdk决定下面的remove)
$ apt remove openjdk-7-jre
$ apt remove openjdk-7-jre-headless
$ apt-get install software-properties-common
$ add-apt-repository ppa:webupd8team/java
$ apt-get update
$ apt-get install oracle-java8-installer
编译、打包同 centos 下。
上传 tar 包到 imaicloud.com 本地源:
$ scp hue-3.12.0-ubuntu14.tgz root@repo.imaicloud.com:/opt/nginx/repo/hue/ (将tar包上传到本地源)
新生成的barball的下载路径是 http://repo.imaicloud.com/hue/hue-3.12.0-ubuntu14.tgz
,大小大约400M。 (Vagrant:/e/vagrant9/ambari-vagrant/ubuntu14.4/u1409)
ambari-hue-service
github上的 EsharEditor/ambari-hue-service 库是将 hue 制作成了 Ambari 的服务,通过 Ambari 将 hue 部署到 HDP 集群。
在 centos6 下通过 ambari 部署 hue
准备
测试环境的三台VM是(操作系统centos6.8)c6801/c6802/c6803,是Ambari安装的HDP。在c6801上执行:
$ 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/imaidev/ambari-hue-service.git /var/lib/ambari-server/resources/stacks/HDP/$VERSION/services/HUE
可以把上面的VERSION定义一行添加到文件 ~/.bashrc
的最后,以便这个环境变量随时可用。
不同的操作系统需要不同的hue安装包,repo.imaicloud.com上现有三个操作系统的HUE-3.12.0安装包:
- centos6:https://repo.imaicloud.com/hue/hue-3.12.0-centos6.tgz
- centos7: https://repo.imaicloud.com/hue/hue-3.12.0-centos7.tgz
- ubuntu14: https://repo.imaicloud.com/hue/hue-3.12.0-ubuntu14.tgz
编辑文件 /var/lib/ambari-server/resources/stacks/HDP/2.5/services/HUE/package/scripts/params.py
中的代码,根据操作系统选择正确的tar包,如ubuntu14下需要修改成:
download_url = 'echo "http://repo.imaicloud.com/hue/hue-3.12.0-ubuntu14.tgz"'
重启ambari:
$ ambari-server restart
通过ambari界面添加服务,在服务清单中可以看到多了一个HUE服务。选中HUE服务,一路按默认值点 next 按钮。hue一般默认装在u1401节点上。如果启用了kerberos需要输入管理员的主体和密码(如 root/amdin@AMBARI.APACHE.ORG
)。
一般会在 Install, Start and Test
一步出问题,逐个解决。
可能需要重启一些受影响的服务。然后用浏览器访问地址:http://u1401.ambari.apache.org:8000
。会出现hue登录界面,这就表示安装成功了。也可直接输入ip,即192.168.14.101:8000
。
卸载HUE
通过Ambari界面卸载HUE服务,然后手工删除hue相关目录:
rm -rf /opt/hue* (原来是 rm -rf /usr/local/hue*)
rm -rf /var/log/hue
rm -rf /var/run/hue
rm /usr/hdp/current/hadoop-client/lib/hue-plugins-3.12.0-SNAPSHOT.jar
centos7 下部署 hue
与centos6基本一样,下载的hue包是hue-3.12.0-centos7.tgz。
ubuntu14 下通过 ambari 部署 HUE
参照前面centos6下的说明,下载 ambari-hue-service 到Ambari的服务目录下。
imaidev/ambari-hue-server默认是部署在centos7环境下,需要修改修在链接。编辑文件 /var/lib/ambari-server/resources/stacks/HDP/2.5/services/HUE/package/scripts/params.py
中的内容:
download_url = 'echo "http://repo.imaicloud.com/hue/hue-3.12.0-ubuntu14.tgz"'
默认安装目录是 /opt/hue
,确保这个目录不存在。
重启ambari服务:
$ ambari-server restart
通过ambari界面添加服务,在服务清单中可以看到多了一个HUE服务。选中HUE服务,一路按默认值点next按钮。hue一般默认装在u1401节点上。如果启用了kerberos需要输入管理员的主体和密码(如 root/amdin@AMBARI.APACHE.ORG
)。
一般会在 Install, Start and Test
一步出问题,逐个解决。貌似ubuntu14比centos6/7出的问题少。
可能需要重启一些受影响的服务。然后用浏览器访问地址:http://u1401.ambari.apache.org:8000
。会出现hue登录界面,这就表示安装成功了。也可直接输入ip,即192.168.14.101:8000
。
Ambari 安装 hue(未完成)
准备 hue 元数据库
直接使用Ambari自带的PostgreSQL数据库,为HUE创建数据库hue和数据库用户hue:
$ sudo -u postgres psql
postgres=# CREATE USER hue WITH PASSWORD '1'; (新建一个数据库用户hue,密码是1)
CREATE ROLE (这是个成功的提示)
postgres=# CREATE DATABASE hue OWNER hue; (创建用户数据库hue,并指定所有者为hue)
CREATE DATABASE
Ambari 向导
Hue Metastore配置:
DB FLAVOR = PostgreSQL
Database Name = hue
Database Username = hue
Database Password = 1
Hue Metastore Host = u1401.ambari.apache.org
Hue Metastore Port = 5432
将PostgreSQL Configs的开关打开:
PostgreSQL Nice Name = "PostgreSQL DB" (默认)
PostgreSQL User = hue
PostgreSQL Password = 1
PostgreSQL Database Name = hue
PostgreSQL Host = u1401.ambari.apache.org
PostgreSQL Port = 5432
PostgreSQL Options = {}
之后提示 Configure principal name and keytab location for service users and hadoop service components.
说明需要手工创建HUE的主体和相应的keytab。
$ kadmin.local -q "addprinc hue/u1401.ambari.apache.org@AMBARI.APACHE.ORG"
$ kadmin.local
kadmin.local: ktadd -k hue.keytab hue/u1401.ambari.apache.org@AMBARI.APACHE.ORG
$ mv hue.keytab /etc/security/keytabs/ (将hue.keytab移动到HDP默认的keytabs目录)
部署 hue 碰到的问题
对EsharEditor/ambari-hue-service 的修改主要集中在目录 /var/lib/ambari-server/resources/stacks/HDP/2.5/services/HUE/package/scripts
下几个py源码中。
download_url
将 {print $2"hue/hue-3.11.0.tgz"}
修改成了 {print $2"/hue/hue-3.11.0.tgz"}
(加了个斜杠 params.py
)。
tar 解压路径
按 common.py 脚本的预期,hue 将解压到 /usr/local/hue
目录下。实际上tar命令解压后的路径是 /usr/local/hue-3.11.0
。为了解决这个问题,在 params.py 中定义了一个 hue_version 变量(params.py):
hue_version = "hue-3.11.0"
#hue_dir = format('{hue_install_dir}/hue')
hue_dir = format('{hue_install_dir}/{hue_version}')
注释掉的是原来的写法。手工打包的hue.tgz,如果包中的路径是hue,而不带版本号,则不需要做这个修改。
符号链接
如果符号链接存在就报错,现在增加-f参数,可以覆盖原有符号链接(common.py):
#Execute('ln -s {0} /usr/hdp/current/hue-server'.format(params.hue_dir))
Execute('ln -f -s {0} /usr/hdp/current/hue-server'.format(params.hue_dir))
做以上修改后,可以通过Ambari成功安装Hue。
pseudo-distributed.ini
{ambari-hue-service}/package/scripts/setup_hue.py文件中注释掉了以下几行:
# Logger.info(format("Creating {hue_conf_dir}/pseudo-distributed.ini config file"))
# File(format("{hue_conf_dir}/pseudo-distributed.ini"),
# content = InlineTemplate(params.hue_pseudodistributed_content),
# owner = params.hue_user
# )
如果以上代码在,通过ambari启动hue服务的时候报ecodeing错误。
supervisor.log 写权限
在hue-install.log报告没有写入/opt/hue/logs/supervisor.log的权限。解决办法如下:
$ chmod +w /opt/hue/logs
$ chmod +w /opt/hue/logs/*
赋予了用户hue针对上述目录的权限。感觉这个问题与在当前机器上进行的编译、本地调试有关。按说正常不会出现。由于在本机上进行了编译和调试,导致/opt/hue/logs目录的拥有者是root,按说这个目录的拥有者应是hue用户。
符号链接 hue-plugins-3.11.SNAPSHOT.jar
Logger.info("Creating symlinks /usr/hdp/current/hadoop-client/lib/hue-plugins-3.11.0-SNAPSHOT.jar")
# Link("{0}/desktop/libs/hadoop/java-lib/*".format(params.hue_dir),to = "/usr/hdp/current/hadoop-client/lib")
Link("/usr/hdp/current/hadoop-client/lib/hue-plugins-3.12.0-SNAPSHOT.jar",to = "{0}/desktop/libs/hadoop/java-lib/hue-plugins-3.12.0-SNAPSHOT.jar".format(params.hue_dir))
不明白原来的写法的目的。根据直觉改写了。原写法在ubuntu14下执行报错,但在centos6下没问题。
build/env/bin/supervisor
启动使用 github.com/cloudera/hue
下载包,该下载包中没有 build 目录,自然就没有 build/env/bin/supervisor
文件,导致日志文件中报错:
$ cat /var/log/hue/hue-install.log
-su: /usr/local/hue-release-3.12.0/build/env/bin/supervisor: No such file or directory
说明 github.com/cloudera/hue 下载包不能用,download_url
只能用手工编译的tar包。
/opt/hue 目录不存在
手工编译使用的目录是/opt/hue, 启动hue服务提示找不到 /opt/hue/build/env/bin
目录。临时解决方案是建立一个软符号链接:
ln -s /usr/local/hue /opt/hue
- 提示
找不到yarn-site配置文件
,通过 ambari 先装 YARN,再装 hue,不再报错。 - 在 Centos7.3 安装的时候会发现 libtidy-0.99-0 这个包并不存在,需要更改为 libtidy,在 metainfo.xml 这个文件里修改。
- 如果 ambari 的密码更改过,在安装 hue 之后启动的过程中会有错误,需要更改
/var/lib/ambari-agent/cache/stacks/HDP/2.6/services/HUE/package/files/configs.sh
这个文件里面 PASSWD 这给参数。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论