Hue的安装及配置

大数据学习路线图

Hue的简介

Hue全称Hadoop User Experience,是一个开源的Apache Hadoop UI系统,由Cloudera Desktop演化而来,最后Cloudera公司将其贡献给Apache基金会的Hadoop社区,它是基于Python Web框架Django实现的。它的强大之处在于,界面非常友好简洁,通过使用它我们可以直接在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job,执行Hive的SQL语句,浏览HBase数据库等。笔者参考官方网站的文章——How to build Hue on Ubuntu写了这篇博文,来简单的介绍一下,Hue的安装和配置,以及Hue实现的几个简单案例。

配置安装环境

Hue的功能虽然强大,但配置环境比较复杂。以下是安装Hue之前所需要安装的环境:
* Ubuntu-16.04
* Hadoop-2.7.3
* python-2.7.14
* JDK-1.8
* maven-3.3.9
* Git-1.7.1
* mysql-5.7.21
这里特殊说明下,因为这是笔者虚拟机自带的安装环境,成功的调试出了Hue的运行。但这并不能说明其他版本的软件不能成功,以下是这些软件的安装方式:

Ubuntu的安装

安装详情请参考这篇博文在Windows中使用VirtualBox安装Ubuntu

Hadoop的安装

安装详情请参考这篇博文Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04。本文还介绍了jdk的安装方法,后面就不做赘述了。

Hive和mysql的安装

安装详情请参考这篇博文Ubuntu安装hive,并配置mysql作为元数据库

python的安装

一般的ubuntu都自带python2,这一步可以省略过去。

Git的安装

输入以下指令,可安装最新版本的Git

   sudo apt-get install git

maven的安装

安装详情可以参考这篇博文使用Maven编译运行Storm入门代码,只需要操作到maven安装完成就行,不用去操作剩下的实例部分。

安装OS依赖包

Hue在执行过程中需要依赖以下的插件,这里的插件要全部安装成功,以免后面运行失败。
首先你要确定自己在Ubuntu16.04下运行:

   lsb_release -a

出现以下图片就可以了:

sudo apt-get install python2.7-dev \
make \
libkrb5-dev \
libxml2-dev \
libffi-dev \
libxslt-dev \
libsqlite3-dev \
libssl-dev \
libldap2-dev \
python-pip
maven
libmysqlclient-dev
libgmp-dev
libmysql-java

ps:由于依赖的包数量太多,我们在下载时会遇到无法定位软件包或该软件的某些插件依赖其它插件,所以下载不完整等问题。有时我们用sudo apt-get update或更改软件源都无法解决,这是因为系统的更新,apt-get会自动忽视一些软件源,我们可以用新的aptitude指令来替换apt-get,如sudo apt-get install make 改为sudo aptitude install make。这种指令在处理依赖问题上更好。aptitude 在删除一个包时,会同时删除无用的, 被本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。以下是下载aptitude的指令:

sudo apt-get install aptitude

安装Hue

配置完环境,我们开始正式安装Hue。
笔者下载的是Hue-3.11.0版本的,下载方式分以下两种:
1.往官网上下载Hue下载地址
2.向GitHub上clone一个,但是这种方法速度很慢,笔者第一次用这种方法,几个小时都没下完。如果网络不快,并不建议这种方法。

 sudo git clone https://github.com/cloudera/hue

接下来,我们开始对Hue进行安装。

sudo tar -zxvf  ~/下载/hue-3.11.0.tgz -C /usr/local
cd /usr/local
sudo mv hue-3.11.0 hue
sudo chown -R hadoop:hadoop hue
cd hue
make apps #编译Hue

执行完以上代码后,打开文件夹,进入/usr/local/hue/build/env/bin目录,如果有hue文件,说明编译已经成功了,如果前面安装包的部分没有装完全,那么这一步肯定会出错。接下来,我们启动Hue。

./build/env/bin/hue runserver

接着我们登录出现以下界面,说明hue启动成功了。

在这里我们可以输入系统的用户名和登录密码,然后进入界面进行操作了。

** Hue的操作案例**

接下来笔者将介绍两个Hue的实战案例,Hive的可视化操作和以Mysql为元数据库,在Hue上进行sql操作。

Hive的可视化操作

首先,我们进入hue.ini文件,对hive的参数进行配置。

cd /usr/local/hue/desktop/conf
sudo vim hue.ini

找到beeswax项,将以下的值去掉注解,并赋值。

hive_server_host=localhost
hive_server_port=10000 #这个是hiveserver2的端口号,很重要,如果没设置的话hive的服务无法启动
hive_conf_dir=/usr/local/hive/conf

然后,我们先启动hadoop,(如果已经启动了这一步可以跳过)再进入hive目录下,修改hive-site.xml的javax.jdo.option.ConnectionURL。指令如下:

cd /usr/local/hadoop
./sbin/start-dfs.sh #启动hadoop
cd /usr/local/hive
vim ./conf/hive-site.xml

将原有的内容都删了,复制粘贴以下的代码:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?characterEncoding=utf8&useSSL=false</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
        </property>
</configuration>

我们这时可以发现,javax.jdo.option.ConnectionURL的value和原来安装hive时的不一样了。如果不经过修改,hive服务启动时会得到如下的结果。

配置完成后,我们可以启动hiveserver2了。

hive --service hiveserver2

启动后,终端会一直处于运行状态,也没有运行代码出现,我们现在可以再打开一个终端,利用管道命令来观察进程。

ps -ef|grep hive

如果出现以下的进程,说明hive服务启动成功了。

然后先关掉hue的web浏览器界面,关掉后重新启动hue

ps -ef|grep hue

出现如下信息
hadoop 3390 3374 0 19:41 pts/14 00:00:00 grep --color=auto hue
其中第二个数字3374是它的进程名,输入kill 3374,杀死进程。
然后我们再次重启hue。

cd /usr/local/hue
./build/env/bin/hue runserver

再次登录,进入web界面。

登陆后,点击QueryEditor那个下拉框,进入hive界面。

本人先在/usr/local/下建立了一个dblab.txt文件,然后输入以下内容:

ruanrongcheng,28,95
xueqian,24,85
weiliang,25,90
zengguanhua,27,85

接着在右上角的空白处输入以下指令:

use hive;
show tables;
create table if not exists hive.dblab(
name  string,
age int,
score int)      
comment 'description of our labs'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\,'
tblproperties('creator'='me','time'='2018.3.2'); 
load data local inpath '/usr/local/dblab.txt' overwrite into table dblab;
select * from dblab;

如图所示,选择画圈处第一个选项Bars,然后x-Axis以姓名为横坐标,y-Aixs以年龄和成绩为纵坐标,得出结果图。

以Mysql为元数据库,在Hue上进行sql操作

因为Hue的元数据库是sqlite,容易产生database is locked的异常,所以建议大家把元数据库改为mysql。我们先打开mysql的root用户,然后新建一个hue用户,并为它授权,来使mysql作为hue的元数据库。

sudo service mysql start
mysql -u root -p

进入mysql后,进行如下操作:

create database hue;
create user 'hue'@'localhost' identified by '123'
grant all on hue.* to 'hue'@'localhost' identified by '123';
flush privileges;
exit;

接着我们修改hue.ini这个文件下的配置信息。

cd /usr/local/hue/desktop/conf
sudo vim hue.ini

先修改[[databases]]的配置,然后再修改[librdbms]的[databases]的[mysql]配置。注意第一个笔者在500多行才找到,第二个在1280行才找到。建议各位以后遇到相同问题就用grep -n '关键词' ‘文件名‘,这样的管道命令来先查找下。

#databases的配置,要去掉注释
engine=mysql
host=localhost
port=3306
user=hue
password=123
name=hue
#[librdbms]的[databases]的[mysql]配置,同样去掉注解
name=mysqldb
engine=mysql
port=3306
password=123
user=hue

然后对数据库进行初始化,

cd /usr/local/hue/build/env
bin/hue syncdb #初始化数据库,启动后会出现让你填写用户名和密码,邮箱等信息,用户名和密码既可以用系统的,也可以用新建的hue用户的,笔者只试过第一个,因为第一个填写成功后,再次初始化数据库就不会出现那些填写信息了,                        #至于邮箱,可以直接跳过
bin/hue migrate #执行完以后,可以在mysql中看到,hue相应的表已经生成。
./bin/hue runserver                   

接下来,我们再次登入hue的web界面,然后点击QueryEditor那个下拉框,进入DB界面,就可以进行mysql的操作了。