每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。
放弃不难,但坚持很酷~
一、HUE简介
Hue是一个开源的Apache Hadoop UI系统,最早是由Cloudera Desktop演化而来,由Cloudera贡献给开源社区,它是基于Python Web框架Django实现的。通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job等等。很早以前就听说过Hue的便利与强大,一直没能亲自尝试使用,下面先通过官网给出的特性,通过翻译原文简单了解一下Hue所支持的功能特性集合:
- 默认基于轻量级sqlite数据库管理会话数据,用户认证和授权,可以自定义为MySQL、Postgresql,以及Oracle
- 基于文件浏览器(File Browser)访问HDFS
- 基于Hive编辑器来开发和运行Hive查询
- 支持基于Solr进行搜索的应用,并提供可视化的数据视图,以及仪表板(Dashboard)
- 支持基于Impala的应用进行交互式查询
- 支持NoteBook,其NoteBook支持多种编程语言,比如py-spark、scala等
- 支持Pig编辑器,并能够提交脚本任务
- 支持Oozie编辑器,可以通过仪表板提交和监控Workflow、Coordinator和Bundle
- 支持HBase浏览器,能够可视化数据、查询数据、修改HBase表
- 支持Metastore浏览器,可以访问Hive的元数据,以及HCatalog
- 支持Job浏览器,能够访问MapReduce Job(MR1/MR2-YARN)
- 支持Job设计器,能够创建MapReduce/Streaming/Java Job
- 支持Sqoop编辑器和仪表板(Dashboard)
- 支持ZooKeeper浏览器和编辑器
- 支持MySql、PostGresql、Sqlite和Oracle数据库查询编辑器
二、源码下载
hue版本库:http://cloudera.github.io/hue/latest/,目前HUE最新版是4.3.0
。
三、准备工作
我下载的HUE-3.12.0
版本:
http://gethue.com/downloads/releases/3.12.0/hue-3.12.0.tgz
下载tgz
包,使用tar -zxvf
命令将其放到/usr/local/
目录下,改名为:hue
。
四、开始编译
代码语言:javascript复制cd /usr/local/hue
make apps
HUE
编译成功之后,文件夹内多了一个build
文件,build
分为env
和static
文件,其中env
文件内含启动文件,而static
文件内有相关联的一些组件。
五、HUE编译问题汇总
通过make apps
报错来提示需要下载哪些相关工具包:
1. error: command 'gcc' failed with exit status 1
代码语言:javascript复制yum install -y gcc openssl-devel
yum install -y gcc gcc-c kernel-devel
yum install -y libxslt-devel
yum install -y gmp-devel
yum install -y sqlite-devel
2. building '_cffi_backend' extension
代码语言:javascript复制yum install -y libffi-devel openssl-devel
3. building '_ldap' extension
代码语言:javascript复制yum install -y openldap-devel
4. EnvironmentError: mysql_config not found
代码语言:javascript复制yum install -y mysql-server mysql mysql-devel
六、启停HUE
HUE
编译成功之后,我们需要启动HUE
服务,建议使用非root
用户启动,比如hue
用户:
1. 创建hue用户
代码语言:javascript复制# 创建hue用户
useradd hue
# 将hue源码的用户所有者/组改为hue
chown -R hue:hue /usr/local/hue
2. 启动hue
代码语言:javascript复制# hue默认使用sqlite引擎
# 初始化数据库
/usr/local/hue/build/env/bin/hue syncdb --noinput
/usr/local/hue/build/env/bin/hue migrate
# 启动hue
/usr/local/hue/build/env/bin/supervisor
3. 停止hue
- 一般情况下,直接使用
Ctrl c
来停止hue
服务 - 如果将
hue
在后台运行的话,可以使用kill
命令:
ps -ef | grep hue | grep -v grep | awk '{print $2}' | xargs kill -9
七、HUE启动问题汇总
1. 启动时错误:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)
代码语言:javascript复制# 121行,将"_"去掉。
vim /usr/local/hue/desktop/core/src/desktop/management/commands/runcherrypyserver.py
2. 启动hue web端 报错误:OperationalError: attempt to write a readonly database
代码语言:javascript复制# 启动hue server的用户没有权限去写入默认sqlite DB,同时确保安装目录下所有文件的owner都是hue用户
chown -R hue:hue hue
3. IOError: [Errno 2] No such file or directory: '/var/log/hue/syncdb.log'
由于我通过/usr/local/hue/desktop/conf/log.conf
修改了日志输出路径,将相关日志输出到了/var/log/hue
目录下。
代码语言:javascript复制报错信息:
resource_management.core.exceptions.ExecutionFailed: Execution of '/usr/local/hue/build/env/bin/hue syncdb --noinput' returned 1. Traceback (most recent call last):
代码语言:javascript复制解决办法:
cd /var/log
mkdir hue
chown -R hue:hue hue
vim /var/log/hue/syncdb.log
chown -R hue:hue syncdb.log