HUE编译与部署
Hue是一个开源的Apache Hadoop UI系统,是基于Python Web框架Django实现的。Hue可以使开发者在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job等等。
本篇中使用的HUE版本是3.9.0。(在实际生产中最好别使用3.9这个版本,因为这个版本的代码结构和3.7和3.10的代码都不一样)
HUE build
HUE在使用之前要先对其进行编译,编译时需要安装一些依赖包,我的环境是centos,安装的依赖包如下:
1 | sudo yum install gcc gcc-c++ libffi-devel libxml2-devel libxslt-devel openldap-devel python-devel sqlite-devel openssl-devel gmp-devel cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-plain krb5-devel |
mvn mysql mysql-devel JDK make 之前已离线安装
查看依赖包是否安装可以使用命令rpm -q 依赖包名
更详细的依赖包可以参考此处
依赖包安装好之后,解压HUE的代码包,进入HUE_HOME,执行命令make apps
。
HUE默认是使用python2.6进行编译,如果你想使用别的版本python进行编译,只需更改HUE_HOME目录下的
Makefile.vars
,给变量SYS_PYTHON
赋值为python2.7
,代码为SYS_PYTHON := python2.7
遇到的问题
编译过程中遇到几个问题,都不是什么大问题,都是因为缺少依赖,安装相应的依赖即可。错误如下:
- src/_fastmath.c:36:18: error: gmp.h: No such file or directory
执行命令 sudo yum install gmp gmp-devel
- src/connection.h:33:21: error: sqlite3.h: No such file or directory
执行命令 sudo yum install sqlite-devel
- Modules/errors.h:8:18: error: lber.h: No such file or directory
Modules/errors.h:9:18: error: ldap.h: No such file or directory
执行命令 sudo yum install openldap-devel
HUE 部署
HUE的部署也比较简单,HUE的配置文件在~/hue-3.9.0/desktop/conf
中,由于版本不一样,有的配置文件名是pseudo-distributed.ini,有的则是hue.ini,3.9.0的配置文件是hue.ini。
需要配置的属性如下:
1 | [desktop] |
配置好之后,并且hiveServer2也已经启动,则可以启动HUE,命令为:
1 | # HUE_HOME目录下 |
则可以通过192.168.244.131:8888访问。
HUE数据库切换到Mysql
HUE中的信息,比如账号信息,默认是存储在sqlite3中的,在实际的生产环境中为了安全一般都会切换成Mysql数据库。切换mysql数据库的步骤如下:
1、先停止HUE,改配置文件
1 | [desktop] |
2、备份sqlite3中的数据库
1 | ## HUE_HOME目录下,备份的文件必须是json格式的 |
备份之后,打开hue.json并删除model字段中带有useradmin.userprofile的所有JSON对象。
3、在Mysql中创建配置文件中的hue数据库create database hue;
4、同步表结构
1 | sudo build/env/bin/hue syncdb --noinput |
5、查看是否需要删除外键
在mysql命令行中,先查看下auth_permission的建表语句,使用命令show create table auth_permission;
,如果此表是InnoDB,则删除外键,命令为ALTER TABLE auth_permission DROP FOREIGN KEY content_type_id_refs_id_XXXXXX;
6、删除django_content_type表中的数据,DELETE FROM hue.django_content_type;
7、加载数据build/env/bin/hue loaddata hue.json
8、如果步骤5中删除了外键,则需要添加外键,命令ALTER TABLE auth_permission ADD FOREIGN KEY (
content_type_id) REFERENCES
django_content_type (
id);
操作完并没有出现错误则启动HUE,此时数据库从sqlite切换到了Mysql中。
部署Mysql Editor
HUE不仅可以操作Hadoop生态圈里的组件,还可以操作关系型数据库。
操作关系型数据库只需修改配置文件即可,以Mysql为例:
1 | [librdbms] |