一、 Hue概述

Hue(Hadoop User Experience)是一个开源的 Apache Hadoop UI 系统,最早是由Cloudera Desktop 演化而来,由 Cloudera 贡献给开源社区,它是基于 PythonWeb 框架 Django 实现的。通过使用 Hue 可以在浏览器端的 Web 控制台上与Hadoop 集群进行交互来分析处理数据,例如操作 HDFS 上的数据,运行MapReduce Job 等等。Hue所支持的功能特性集合:

  • 默认基于轻量级sqlite数据库管理会话数据,用户认证和授权,可以自定义为MySQL、Postgresql,以及Oracle
  • 基于文件浏览器(File Browser)访问HDFS
  • 基于Hive编辑器来开发和运行Hive查询
  • 支持基于Solr进行搜索的应用,并提供可视化的数据视图,以及仪表板(Dashboard)
  • 支持基于Impala的应用进行交互式查询
  • 支持Spark编辑器和仪表板(Dashboard)
  • 支持Pig编辑器,并能够提交脚本任务
  • 支持Oozie编辑器,可以通过仪表板提交和监控Workflow、Coordinator和Bundle
  • 支持HBase浏览器,能够可视化数据、查询数据、修改HBase表
  • 支持Metastore浏览器,可以访问Hive的元数据,以及HCatalog
  • 支持Job浏览器,能够访问MapReduce Job(MR1/MR2-YARN)
  • 支持Job设计器,能够创建MapReduce/Streaming/Java Job
  • 支持Sqoop 2编辑器和仪表板(Dashboard)
  • 支持ZooKeeper浏览器和编辑器
  • 支持MySql、PostGresql、Sqlite和Oracle数据库查询编辑器

一句话总结:Hue是一个友好的界面集成框架,可以集成我们各种学习过的以及将要学习的框架,一个界面就可以做到查看以及执行所有的框架。

image.png
类似的产品还有 Apache Zeppelin。

二、 Hue编译安装

Hue官方网站:https://gethue.com/
HUE官方用户手册:https://docs.gethue.com/
官方安装文档:https://docs.gethue.com/administrator/installation/install/
HUE下载地址:https://docs.gethue.com/releases/

Hue的安装并不是那么简单,官方并没有编译好的软件包,需要从github上下载源码、安装依赖、编译安装。以下详细讲解Hue下载、编译、安装的操作过程。

安装Hue的节点上最好没有安装过MySQL,否则可能有版本冲突,这里选择将Hue安装在hadoop02 上。

2.1、下载软件包

到官方网站下载 hue-release-4.3.0.zip;上传至服务器,并解压缩

  1. yum install unzip
  2. unzip hue-release-4.3.0.zip

2.2、安装依赖

# 需要Python支持(Python 2.7+ / Python 3.5+)
python --version 

# 在 CentOS 系统中安装编译 Hue 需要的依赖库
yum install ant asciidoc
cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-plain gcc gcc-c++ krb5-devel
 libffi-devel libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel
 python-devel sqlite-devel gmp-devel
yum install -y rsync

备注:
以上依赖仅适用CentOS/RHEL 7.X,其他情况请参考https://docs.gethue.com/adm
inistrator/installation/dependencies/
安装Hue的节点上最好没有安装过MySQL,否则可能有版本冲突
安装过程中需要联网,网络不好会有各种奇怪的问题

2.3、安装Maven

编译 Hue 还需要 Maven 环境,因此在编译前需要安装 Maven。
下载 apache-maven-3.6.3-bin.tar.gz,上传虚拟机解压缩,添加环境变量

vi /etc/profile

# 添加环境变量
export MAVEN_HOME=/opt/servers/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin

source /etc/profile

# 验证安装
mvn --version

2.4、编译

# 进入 hue 源码目录,进行编译。 使用 PREFIX 指定安装 Hue 的路径
cd /opt/software/hue-release-4.3.0
PREFIX=/opt/lagou/servers make install
cd /opt/lagou/servers

# 如果想把HUE从移动到另外一个地方,由于HUE使用了Python包的一些绝对路径,移动之
# 后则必须执行以下命令:
# 这里不要执行
rm app.reg 
rm -r build
make apps

备注:这一步持续的时间比较长,还会从网上下载 jar;需要联网

2.5、修改 Hadoop 配置文件

在 hdfs-site.xml 中增加配置

<!-- HUE -->
<property>
  <name>dfs.webhdfs.enabled</name>
  <value>true</value>
</property>
<property>
  <name>dfs.permissions.enabled</name>
  <value>false</value>
</property>

在 core-site.xml 中增加配置

<!-- HUE -->
<property>
  <name>hadoop.proxyuser.hue.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.hue.groups</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.hdfs.hosts</name> 
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.hdfs.groups</name>
  <value>*</value>
</property>

增加 httpfs-site.xml 文件,加入配置

<configuration>
  <!-- HUE -->
  <property>
    <name>httpfs.proxyuser.hue.hosts</name>
    <value>*</value>
  </property>
  <property>
    <name>httpfs.proxyuser.hue.groups</name>
    <value>*</value>
  </property>
</configuration>

备注:修改完**HDFS相关配置后,需要把配置scp给集群中每台机器,重启hdfs服务。**

2.6、Hue配置

# 进入 Hue 安装目录
cd /opt/servers/hue

# 进入配置目录 
cd desktop/conf

# 复制一份HUE的配置文件,并修改复制的配置文件
cp pseudo-distributed.ini.tmpl pseudo-distributed.ini
vi pseudo-distributed.ini
# [desktop]
  http_host=hadoop02
  http_port=8000
  is_hue_4=true
  time_zone=Asia/Shanghai
  dev=true
  server_user=hue
  server_group=hue
  default_user=hue

# 211行左右。禁用solr,规避报错
  app_blacklist=search 

# [[database]]。Hue默认使用SQLite数据库记录相关元数据,替换为mysql
  engine=mysql
  host=hadoop03
  port=3306
  user=hive
  password=12345678
  name=hue

# 1003行左右,Hadoop配置文件的路径
hadoop_conf_dir=/opt/servers/hadoop-2.9.2/etc/hadoop
# 在mysql中创建数据库hue,用来存放元数据
mysql -uhive -p12345678
mysql> create database hue;

# 初始化数据库
build/env/bin/hue syncdb
build/env/bin/hue migrate

# 检查数据

2.7、启动 Hue 服务

# 增加 hue 用户和用户组
groupadd hue
useradd -g hue hue

# 在hue安装路径下执行
build/env/bin/supervisor

在浏览器中输入:hadoop02:8000,可以看见以下画面,说明安装成功。
第一次访问的时候,需要设置超级管理员用户和密码。记住它(hue/123456)。
image.png

三、 Hue整合Hadoop、Hive

修改参数文件 /opt/servers/hue/desktop/conf/pseudo-distributed.ini
**

3.1 集成HDFS、YARN

# 211 行。 没有安装 Solr,禁用,否则一直报错
  app_blacklist=search

# [hadoop] -- [[hdfs_clusters]] -- [[[default]]] 
# 注意端口号。下面语句只要一个
# fs_defaultfs=hdfs://linux121:8020
fs_defaultfs=hdfs://hadoop01:9000
webhdfs_url=http://hadoop01:50070/webhdfs/v1

# 211 行 
hadoop_conf_dir=/opt/servers/hadoop-2.9.2/etc/hadoop

# [hadoop] -- [[yarn_clusters]] -- [[[default]]] 
resourcemanager_host=hadoop03
resourcemanager_port=8032
submit_to=True
resourcemanager_api_url=http://hadoop03:8088
proxy_api_url=http://hadoop03:8088
history_server_api_url=http://hadoop03:19888

3.2 集成Hive

集成**Hive需要启动 Hiveserver2 服务,在hadoop03节点上启动 Hiveserver2**

# [beeswax]
hive_server_host=hadoop03
hive_server_port=10000
hive_conf_dir=/opt/servers/hive-2.3.7/conf

3.3 集成MySQL

# [librdbms] -- [[databases]] -- [[[mysql]]];1639行
# 注意:1639行原文: ##[[mysql]] => [[mysql]];两个##要去掉!
[[[mysql]]]
  nice_name="My SQL DB"
  name=hue
  engine=mysql
  host=hadoop03
  port=3306
  user=hive
  password=12345678

备注:name是数据库名,即 database 的名称

3.4 重启Hue

四、问题总结

  1. 编译hue时报错:
    [root@hadoop02 hue-release-4.3.0]# PREFIX=/opt/servers make install
    --- Creating virtual environment at /opt/software/hue-release-4.3.0/build/env
    /usr/bin/python2.7 /opt/software/hue-release-4.3.0/tools/virtual-bootstrap/virtual-bootstrap.py \
         -qq --system-site-packages /opt/software/hue-release-4.3.0/build/env
    Traceback (most recent call last):
    File "/opt/software/hue-release-4.3.0/tools/virtual-bootstrap/virtual-bootstrap.py", line 2335, in <module>
     main()
    File "/opt/software/hue-release-4.3.0/tools/virtual-bootstrap/virtual-bootstrap.py", line 713, in main
     symlink=options.symlink)
    File "/opt/software/hue-release-4.3.0/tools/virtual-bootstrap/virtual-bootstrap.py", line 945, in create_environment
     download=download,
    File "/opt/software/hue-release-4.3.0/tools/virtual-bootstrap/virtual-bootstrap.py", line 901, in install_wheel
     call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)
    File "/opt/software/hue-release-4.3.0/tools/virtual-bootstrap/virtual-bootstrap.py", line 797, in call_subprocess
     % (cmd_desc, proc.returncode))
    OSError: Command /opt/software/hue-re...ld/env/bin/python2.7 - setuptools pip wheel failed with error code 2
    make: *** [/opt/software/hue-release-4.3.0/build/env/stamp] Error 1
    
    问题原因:
    域名解析异常

解决方法:
image.png

  1. 安装好hue登陆时遇到了这个问题:

    Traceback (most recent call last):
    File "./supervisor", line 11, in <module>
     load_entry_point('desktop', 'console_scripts', 'supervisor')()
    File "/opt/servers/hue/desktop/core/src/desktop/supervisor.py", line 319, in main
     setup_user_info()
    File "/opt/servers/hue/desktop/core/src/desktop/supervisor.py", line 257, in setup_user_info
     desktop.lib.daemon_utils.get_uid_gid(SETUID_USER, SETGID_GROUP)
    File "/opt/servers/hue/desktop/core/src/desktop/lib/daemon_utils.py", line 45, in get_uid_gid
     raise KeyError("Couldn't get user id for user %s" % (username,))
    KeyError: "Couldn't get user id for user hue"
    

    因为你使用的root用户安装了hue,解决办法是创建一个普通的用户

    [root@node03 /]# useradd aaron
    [root@node03 /]# passwd 123456
    
  2. Hue执行./build/env/bin/supervisor出现

IOError: [Errno 13] Permission denied: ‘/opt/servers/hue/logs/supervisor.log’

解决办法:

只有build是root权限,其他都是普通用户。

使用sudo 命令运行
  1. hue安装后出现KeyError: “Couldn’t get user id for user hue”的解决方法: ``` 首先要创建个普通用户,并给添加密码。如果密码给的过于简单,会给出提示,忽略就行

然后,我们要给刚才解压的hue文件改变拥有者属性,通过 chown -R 用户名 文件地址。如下图: == chown -R beifeng /export/servers/hue-3.9.0-cdh5.14.0/==

最后,我们使用 su 命令切换用户,到hue文件夹下执行运行hue的命令就可以了。 ```