ubuntu上基于HUE 4.0的环境构建和使用
先看下HUE的架构,如图
1. Hue是什么?
Hue是一个可快速开发和调试Hadoop生态系统各种应用的一个基于浏览器的图形化用户接口。
2. Hue能干什么?
- 访问HDFS和文件浏览
- 通过web调试和开发hive以及数据结果展示
- 查询solr和结果展示,报表生成
- 通过web调试和开发impala交互式SQL Query
- spark调试和开发
- Pig开发和调试
- oozie任务的开发,监控,和工作流协调调度
- Hbase数据查询和修改,数据展示
- Hive的元数据(metastore)查询
- MapReduce任务进度查看,日志追踪
- 创建和提交MapReduce,Streaming,Java job任务
- Sqoop2的开发和调试
- Zookeeper的浏览和编辑
- 数据库(MySQL,PostGres,SQlite,Oracle)的查询和展示
3. Hue怎么用或者什么时候应该用?
如果你们公司用的是CDH的hadoop,那么很幸运,Hue也是出自CDH公司,自家的东西用起来当然很爽。
如果你们公司用的是Apache Hadoop或者是HDP的hadoop,那么也没事,Hue是开源的,而且支持任何版本的hadoop。
关于什么时候用,这纯属一个锦上添花的功能,你完全可以不用hue,因为各种开源项目都有自己的使用方式和开发接口,hue只不过是统一了各个项目的开发方式在一个接口里而已,这样比较方便而已,不用你一会准备使用hive,就开一个hive的cli终端,一会用pig,你就得开一个pig的grunt,或者你又想查Hbase,又得需要开一个Hbase的shell终端。如果你们使用hadoop生态系统的组件很多的情况下,使用hue还是比较方便的,另外一个好处就是hue提供了一个web的界面来开发和调试任务,不用我们再频繁登陆Linux来操作了。
你可以在任何时候,只要能上网,就可以通过hue来开发和调试数据,不用再装Linux的客户端来远程登陆操作了,这也是B/S架构的好处。
4. 如何下载,安装和编译Hue?
http://gethue.com/downloads/releases/4.0.1/hue-4.0.1.tgz 下载较新的tgz包,自己编译和安装。
目前最新的HUE版本是4.1,考虑到最新版本与集群中已安装的hadoop组件的兼容性,选择了3个月前的次新的4.0版本。同时,本地先前已安装和配置了较多hadoop组件,准备工作简单很多,否则还有很多依赖包、环境准备等工作。
tar zxvf hue-4.0.1.tgz
sudo apt-get install libgmp-dev //编译时依赖gmp.h,没有此包会报"fatal error: gmp.h: No such file or directory"
make apps // 几分钟后即编译完成;make install 可选,可以不执行
理想情况下,这时在HUE目录下执行 ./build/env/bin/hue runserver 启动hue server后,就能在浏览器中通过 http://localhost:8000看到HUE的登录界面了。
但这只是理想情况,大多数情况下,尤其已安装过很多hadoop组件,且port号大量使用的情况下,需要配置后才能使用,否则会报不同问题,如启动HUE server时报8000端口被占用即是一例:8000被先前安装的storm占用了。
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Error: That port is already in use.
5. 配置
HUE配置文件在desktop/conf/hue.ini中,整个文件近2千行;此配置文件根据整合的不同软件,分成了20+个不同片段,有些配置中还有子段,简单罗列如下:
desktop, notebook, hadoop, Beeswax, Metastore, impala, spark, Oozie,, Filebrowser, Pig, sqoop2, proxy , Hbase Browser, Solr search/API/Indexer, Job designer/Browser, Sentry/Security app, Zookeeper, liboozie, Saml, openid, Oauth, metadata.
5.1 desktop 配置
这里是HUE相关的配置,通常需要修改hue http server/port, user/group等相关配置项即可。
如:
http_host=master // 修改为实际的主机名,本例中为master
http_port=8888 // 为避免端口冲突,改为非8000的
is_hue_4=true
server_user=hadoop
server_group=hadoop
default_user=hadoop
default_hdfs_superuser=hadoop // # This should be the hadoop cluster admin
desktop配置完成后,命令行中执行 ./build/env/bin/hue runserver 启动hue server后,就能在浏览器中通过 http://master:8888,就能看到登录界面,输入hadoop/hadoop后,即可进入HUE主界面,因整合的软件还没配置,一些入口和功能还不work.
5.2 Hadoop配置
HUE可以通过两种方式访问HDFS中的数据
WebHDFS: 提高高速的数据传输,客户端直接和DataNode交互
HttpFS: 一个代理服务,方便与集群外部的系统集成
对于WebHDFS,除了hue.ini,还需要修改hadoop中hdfs-site.xml, core-site.xml
hui.ini中:
fs_defaultfs=hdfs://master:9000
webhdfs_url=http://master:50070/webhdfs/v1
hadoop_conf_dir=$HADOOP_HOME/etc/hadoop
hdfs-site.xml中: 增加
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</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.hive.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hive.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
HttpFS模式中,hadoop的httpfs-site.xml中增加
<property>
<name>httpfs.proxyuser.hue.hosts</name>
<value>*</value>
</property>
<property>
<name>httpfs.proxyuser.hue.groups</name>
<value>*</value>
</property>
core-site.xml 基本同webhdfs中的设置。
最后,cp HUE目录下的desktop/libs/hadoop/java-lib/hue-plugins-4.0.0-SNAPSHOT.jar 至 $HADOOP_HOME/share/hadoop/mapreduce/lib下。
这步完成后,即可在HUE中查看HDFS相关的内容,如file browser, job browser, etc.
执行MR任务的话,还需要设置MR2相关的配置
resourcemanager_host=master
resourcemanager_port=8032
resourcemanager_api_url=http://master:8088
proxy_api_url=http://master:8088
history_server_api_url=http://master:19888
spark_history_server_url=http://master:18088
5.3. Beeswax & Hive
hive依赖metastore, hiveserver2,所以这里设置beeswax/hive时要注意相关设置要一致。
如本例中的HiveServer2没在master上跑,而是在slave01上,所以设置
hive_server_host=slave01
hive_server_port=10000 // 对应 hive/conf/hive-site.xml 中 hive.server2.thrift.port , 配置中曾混用了hive.server2.thrift.http.port导致一直报错连不上slave01:10001端口
hive_conf_dir=/home/hadoop/bigdata/hive/conf
先前集群中已启动过metastore, hiveserver2(Hive Thrift server2),如果没有,在这里启动后,即可在HUE中通过hive查看先前的数据信息。
启动metastore, hiveserver2的方法, nohup hive --service metastore & && nohup hive --service hiveserver2 &
5.4 Spark
spark也部署在master,主要设置了
livy_server_host=master
livy_server_port=8998
5.5 FileBrowser
通过web查看和操作HDFS中的文件,主要设置了如下配置项:
archive_upload_tempdir=/tmp
show_download_button=true
show_upload_button=true
enable_extract_uploaded_archive=true
浏览如图: 点击"View file location"后的界面中有upload按钮。
5.6 Hbase
hbase_clusters=(HbaseCluster|master:9090) // HbaseCluster即在下面界面中点击Hbase图标(4个小方块)时下面显示的那个集群名。
hbase_conf_dir=/home/hadoop/bigdata/hbase/conf
因为已安装的hbase (1.2.6) 中包含的thrift2与HUE不兼容,点击HbaseCluser时右上角报错:Api Error: Invalid method name: 'getTableName'. 参考https://*.com/questions/24376658/thrift-api-java-client-connect-with-hbase
启动hbase thrift接口的方法: hbase-deamon.sh start thrift2
thrift默认的监听端口是9090,可以用netstat -nl | grep 9090看看该端口是否有服务。
5.7 ZooKeeper
主要在libzookeeper, zookeeper 片段中配置所部署zookeeper的hostname:port.
ensemble=master:2181,ndh-slave01:2181,slave02:2181
5.8 mysql等数据库设置
librdbms片段中以子片段的形式支持多种RDBS, sqlite, mysql, psql, oracle, ...
以mysql为例: 如果有多个mysql DB,分别增加一个mysql 片段即可,支持DB数量较多时,这里的list也将很长。
## [[[mysql]]]
# Name to show in the UI.
nice_name="My SQL DB" // nicely name
## name=mysqldb /// db name
# Database backend to use. This can be:
# 1. mysql # 2. postgresql # 3. oracle
engine=mysql
host=master # IP or hostname of the database to connect to.
# Port the database server is listening to. Defaults are:
# 1. MySQL: 3306 # 2. PostgreSQL: 5432 # 3. Oracle Express Edition: 1521
port=3306
user=root // # Username to authenticate with when connecting to the database.
password=666666 /// # Password matching the username to authenticate with when connecting to the database.
5.9 其它
因集群中暂没安装oozie, pig, impala, solr, 等,所以相应的片段没作修改和配置,HUE界面中对应的选项也暂没法使用。
在HUE管理界面中有一个工具项 check configuration, 很方便,可以检查配置项中存在的问题,如本例中没安装的软件,图中有提示,已安装的hive、hbase等存在访问问题,图中也给了对应提示。其实,这里对应有4个步骤,可以把它作为一个使用向导。
入口: HUE界面右上角 用户头像点开后,Check Configuration,如图:
6. 小结
至此,HUE的安装和基本配置已完成,在先前已安装和配置过hadoop众组件的基础上,整个过程相对比较简单,HUE界面操作也比较直接方便。后续将把未安装的oozie, pig, impala, solr等进行部署和整合使用。
7. 附录:
http://cloudera.github.io/hue/docs-4.0.0/manual.html#_hue_configuration_for_hadoop
http://gethue.com/the-web-ui-for-hbase-hbase-browser/
http://gethue.com/how-to-build-hue-on-ubuntu-14-04-trusty/