来源
HUE=HadoopUser Experience,看这名字就知道怎么回事了吧,没错,直白来说就是Hadoop用户体验,是一个开源的Apache Hadoop UI系统,由Cloudera Desktop演化而来,最后Cloudera公司将其贡献给Apache基金会的Hadoop社区,它是基于Python Web框架Django实现的。通过使用HUE我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据。
帮助文档
http://archive.cloudera.com/cdh5/cdh/5/hue-3.7.0-cdh5.3.0/manual.html
准备环境依赖
打开官方网站可以找到对应的部署HUE所需的各种依赖列表,如下图所示:
如上图所示,这部分内容是告诉你,安装编译Hue需要依赖哪些Linux安装包,你只需要使用yum命令一次安装就可以了,在此给大家整理好该命令(注意使用root权限安装):
# yum -y install ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi gcc gcc-c++ krb5-devel libtidy libxml2-devel libxslt-devel openldap-devel python-devel sqlite-devel openssl-devel mysql-devel gmp-devel
安装完后把openjdk全部删除
(查询:# rpm -qa | grep java)
(删除:# rpm -e --nodeps xxxxxxx-java-xxxx.rpm)
hue-chd安装包 https://download.csdn.net/download/kxj19980524/11158592
解压hue,然后进行编译 make apps
如果编译过程中出现如下错误的话
vim /usr/include/openssl/x509.h 使用root用户编辑,在该文件中删除751、752 这两行,必须删掉,注释不行,然后把hue删除掉,重新解压编译
编译完成后,配置HUE,/opt/modules/cdh/hue-3.7.0-cdh5.3.6/desktop/conf/hue.ini
secret_key=jFE93j;2[290-eiw.KEiwN2s3['d;/.q[eIW^y#e=+Iei*@Mn<qW5o
http_host=hadoop-senior01.buba.com
http_port=8888
time_zone=Asia/Shanghai
启动HUE build/env/bin/supervisor 出现如下表示启动成功
访问8888端口出现如下信息,这句话是在提示你,第一次使用本工具,需要创建一个用户及密码,且会成为hue的超级用户凭证,在此呢,我设置为admin用户名,密码随意,那就123456吧,然后呢就可以见到如下界面了:
现在只是启动成功能正常访问了,还没配置与hdfs的配置,所以不能访问hdfs
配置hadoop
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!-- Oozie Server的Hostname -->
<property>
<name>hadoop.proxyuser.kxj.hosts</name>
<value>*</value>
</property>
<!-- 允许被Oozie代理的用户组 -->
<property>
<name>hadoop.proxyuser.kxj.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.httpfs.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.httpfs.groups</name>
<value>*</value>
</property>
如果你的Hadoop配置了高可用,则必须通过httpfs来访问,需要添加如下属性,反则则不必须。(如果HUE服务与Hadoop服务不在同一节点,则必须配置)
属性:hadoop.proxyuser.hue.hosts
变更为:hadoop.proxyuser.httpfs.hosts
属性值:*
属性:hadoop.proxyuser.hue.groups
变更为:hadoop.proxyuser.httpfs.groups
属性值:*
httpfs-site.xml
<configuration>
<property>
<name>httpfs.proxyuser.hue.hosts</name>
<value>*</value>
</property>
<property>
<name>httpfs.proxyuser.hue.groups</name>
<value>*</value>
</property>
</configuration>
解释:以上两个属性主要用于HUE服务与Hadoop服务不在同一台节点上所必须的配置。
尖叫提示:
* 如果没有配置NameNode的HA,HUE可以用WebHDFS来管理HDFS
* 如果配置了NameNodeHA,则HUE只可用HttpFS来管理HDFS
scp同步到其它hadoop节点
scp -r etc/ hadoop-senior02.buba.com:/opt/modules/hadoop-2.5.0-cdh5.3.6/
scp -r etc/ hadoop-senior03.buba.com:/opt/modules/hadoop-2.5.0-cdh5.3.6/
启动httpfs服务 ,在哪台节点启动都可以
$ /opt/modules/hadoop-2.5.0-cdh5.3.6/sbin/httpfs.sh start
重启hadoop集群
配置hue.ini 找到[hadoop]标签
fs_defaultfs=hdfs://hadoop-senior01.buba.com:8020
webhdfs_url=http://hadoop-senior01.buba.com:14000/webhdfs/v1
hadoop_conf_dir=/opt/modules/hadoop-2.5.0-cdh5.3.6/etc/hadoop
hadoop_hdfs_home=/opt/modules/hadoop-2.5.0-cdh5.3.6
hadoop_bin=/opt/modules/hadoop-2.5.0-cdh5.3.6/bin
如果配置了namenode高可用的话加上这个,后面的值为高可用名称
启动hue build/env/bin/supervisor ,这儿提示的该目录不属于hdfs用户
原因是hdfs都属于kxj这个用户
解决办法,可以将hdfs所属用户改为hdfs,也可以更改hue为kxj用户
/opt/modules/hue-3.7.0-cdh5.3.6/desktop/libs/hadoop/src/hadoop/fs/webhdfs.py
把原来的注释掉改为kxj
重新启动hue,就能正常访问了
配置YARN
现在查看这个job显示出来的东西是不正确的
resourcemanager_host=hadoop-senior02.buba.com
resourcemanager_port=8032
submit_to=True
resourcemanager_api_url=http://hadoop-senior02.buba.com:8088
proxy_api_url=http://hadoop-senior01.buba.com:8088
history_server_api_url=http://hadoop-senior01.buba.com:19888
如果resourceManager配置了HA的话,加上logical_name=高可用名称
配置完后重启hue build/env/bin/supervisor 显示如下,这就可以了.
运行一个mapreduce任务进行测试
配置HIVE
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
<description>Port number of HiveServer2 Thrift interface.
Can be overridden by setting $HIVE_SERVER2_THRIFT_PORT</description>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hadoop-senior01.buba.com</value>
<description>Bind host on which to run the HiveServer2 Thrift interface.
Can be overridden by setting $HIVE_SERVER2_THRIFT_BIND_HOST</description>
</property>
<property>
<name>hive.server2.long.polling.timeout</name>
<value>5000</value>
<description>Time in milliseconds that HiveServer2 will wait, before responding to asynchronous calls that use long polling</description>
</property>
<!-- thrift是一个跨语言跨平台的中间商,让多种语言进行通讯 -->
<!-- 配置远程的metastore服务 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop-senior01.buba.com:9083</value>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>