一、课前准备
- 准备好大数据集群,启动所有的服务,例如hadoop,hbase,impala,hiveserver2,mysql等各种服务
二、课堂主题
本堂课主要介绍hue这个图形化的界面工具,以及与其他工具之间的整合使用
三、课堂目标
- 实现hue与其他框架的整合使用
四、知识要点
1、hue的基本介绍
HUE=Hadoop User Experience
Hue是一个开源的Apache Hadoop UI系统,由Cloudera Desktop演化而来,最后Cloudera公司将其贡献给Apache基金会的Hadoop社区,它是基于Python Web框架Django实现的。
通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job,执行Hive的SQL语句,浏览HBase数据库等等。
HUE链接
· Site: http://gethue.com/
· Github: https://github.com/cloudera/hue
· Reviews: https://review.cloudera.org
Hue的架构
核心功能
· SQL编辑器,支持Hive, Impala, MySQL, Oracle, PostgreSQL, SparkSQL, Solr SQL, Phoenix…
· 搜索引擎Solr的各种图表
· Spark和Hadoop的友好界面支持
· 支持调度系统Apache Oozie,可进行workflow的编辑、查看
HUE提供的这些功能相比Hadoop生态各组件提供的界面更加友好,但是一些需要debug的场景可能还是需要使用原生系统才能更加深入的找到错误的原因。
HUE中查看Oozie workflow时,也可以很方便的看到整个workflow的DAG图,不过在最新版本中已经将DAG图去掉了,只能看到workflow中的action列表和他们之间的跳转关系,想要看DAG图的仍然可以使用oozie原生的界面系统查看。
1,访问HDFS和文件浏览
2,通过web调试和开发hive以及数据结果展示
3,查询solr和结果展示,报表生成
4,通过web调试和开发impala交互式SQL Query
5,spark调试和开发
7,oozie任务的开发,监控,和工作流协调调度
8,Hbase数据查询和修改,数据展示
9,Hive的元数据(metastore)查询
10,MapReduce任务进度查看,日志追踪
11,创建和提交MapReduce,Streaming,Java job任务
12,Sqoop2的开发和调试
13,Zookeeper的浏览和编辑
14,数据库(MySQL,PostGres,SQlite,Oracle)的查询和展示
一句话总结:Hue是一个友好的界面集成框架,可以集成我们各种学习过的以及将要学习的框架,一个界面就可以做到查看以及执行所有的框架
2、Hue的安装
Hue的安装支持多种方式,包括rpm包的方式进行安装,tar.gz包的方式进行安装以及cloudera manager的方式来进行安装等,我们这里使用tar.gz包的方式来进行安装
第一步:下载Hue的压缩包并上传到linux解压
Hue的压缩包的下载地址:
http://archive.cloudera.com/cdh5/cdh/5/
我们这里使用的是CDH5.14.2这个对应的版本,具体下载地址为
http://archive.cloudera.com/cdh5/cdh/5/hue-3.9.0-cdh5.14.2.tar.gz
下载然后上传到node03服务器的/kkb/soft路径下
1 2 |
cd /kkb/soft tar -zxvf hue-3.9.0-cdh5.14.2.tar.gz -C /kkb/install |
第二步:编译安装启动
2.1、linux系统安装依赖包:
联网安装各种必须的依赖包
1 2 |
sudo 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 libffi gcc gcc-c++ kernel-devel openssl-devel gmp-devel openldap-devel |
2.2、开始配置Hue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
cd /kkb/install/hue-3.9.0-cdh5.14.2/desktop/conf vim hue.ini #通用配置 [desktop] secret_key=jFE93j;2[290-eiw.KEiwN2s3['d;/.q[eIW^y#e=+Iei*@Mn<qW5o http_host=node03.kaikeba.com is_hue_4=true time_zone=Asia/Shanghai server_user=hadoop server_group=hadoop default_user=hadoop default_hdfs_superuser=hadoop #配置使用mysql作为hue的存储数据库,大概在hue.ini的587行左右 [[database]] engine=mysql host=node03.kaikeba.com port=3306 user=root password=123456 name=hue |
2.3、创建mysql数据库
创建hue数据库
1 2 |
create database hue default character set utf8 default collate utf8_general_ci; |
注意:实际工作中,还需要为hue这个数据库创建对应的用户,并分配权限,我这就不创建了,所以下面这一步不用执行了
1 grant all on hue.* to 'hue'@'%' identified by 'hue';
2.4、准备进行编译
node03服务器执行以下命令准备进行编译
1 2 |
cd /kkb/install/hue-3.9.0-cdh5.14.2 make apps |
注意:如果编译失败,请参照第一步重新解压
2.5、linux系统添加普通用户hue
为了方便也可以使用已经存在的hadoop用户来操作hue。
而工作中往往会单独创建一个用户hue:需要的话可在node03执行以下命令,创建普通用户hue
12 sudo useradd huesudo passwd hue
2.6、启动hue进程
node03执行以下命令启动hue
1 2 |
cd /kkb/install/hue-3.9.0-cdh5.14.2 sudo build/env/bin/supervisor |
2.7、页面访问
第一次访问的时候,需要设置管理员用户和密码。我们这里的管理员的用户名与密码尽量保持与我们安装hadoop的用户名和密码一致,我们安装hadoop的用户名与密码分别是hadoop 123456,初次登录使用hadoop,密码为123456。
访问页面异常
如果忘记在hue.ini文件中修改元数据库引擎由sqlite改为mysql,访问页面将会遇到如下错误
1 2 3 |
File "/usr/local/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 323, in execute return Database.Cursor.execute(self, query, params) OperationalError: attempt to write a readonly database |
解决办法,检查hue.ini配置是否将元数据库引擎由sqlite改为mysql,以及其他配置是否正确:
1 2 3 4 5 6 7 |
[[database]] engine=mysql #默认是sqlite3作为元数据库,这里改为mysql host=192.168.186.36 #<mysql所在服务器> port=3306 #<mysql端口,一般就是3306> user=hive #<mysql用户名> password=hive1234 #<mysql用户密码> name=hue #<数据库名称,新数据库,专门用于hue,里面现在没有任何表> |
完成以上的这个配置,启动Hue,通过浏览器访问,仍然会发生错误
1 |
DatabaseError: (1146, "Table 'hue.desktop_settings' doesn't exist") |
原因是mysql数据没有被初始化,解决办法, 初始化数据库(执行一次即可):
1 2 |
sudo build/env/bin/hue syncdb sudo build/env/bin/hue migrate |
同步数据库的时候会询问是否创建用户,可以选择创建hue用户,并设计密码为hue。
这一步是可选的,因为就算不创建,登陆的时候也需要创建,一般使用Linux中一样的用户名和密码即可。(我用的是hadoop用户)
然后再启动supervisor服务(前台运行,如果需要后台运行可以添加-d选项 )
1 |
sudo build/env/bin/supervisor |
3、hue与其他框架的集成
如果登陆后仍然由报错,很可能是因为hue和hadoop的hdfs和yarn的集成没有设置好。
3.1、hue与hadoop的HDFS以及yarn集成
第一步:更改所有hadoop节点的core-site.xml配置
记得更改完core-site.xml之后一定要重启hdfs与yarn集群
三台机器更改core-site.xml
1 2 3 4 5 6 7 8 9 |
<property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property> |
第二步:更改所有hadoop节点的hdfs-site.xml
所有服务器更改hdfs-site.xml添加以下配置
1 2 3 4 |
<property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> |
第三步:重启hadoop集群
在node01机器上面执行以下命令
1 2 3 4 5 6 |
cd /kkb/install/hadoop-2.6.0-cdh5.14.2 sbin/stop-dfs.sh sbin/start-dfs.sh sbin/stop-yarn.sh sbin/start-yarn.sh |
第四步:停止hue的服务,并继续配置hue.ini
停止hue的服务,然后进入到以下路径,重新配置hue.ini这个配置文件(880行左右)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
cd /kkb/install/hue-3.9.0-cdh5.14.2/desktop/conf vim hue.ini #配置我们的hue与hdfs集成]] [[hdfs_clusters]] [[[default]]] fs_defaultfs=hdfs://node01.kaikeba.com:8020 webhdfs_url=http://node01.kaikeba.com:50070/webhdfs/v1 hadoop_hdfs_home=/kkb/install/hadoop-2.6.0-cdh5.14.2 hadoop_bin=/kkb/install/hadoop-2.6.0-cdh5.14.2/bin hadoop_conf_dir=/kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop #配置我们的hue与yarn集成 [[yarn_clusters]] [[[default]]] resourcemanager_host=node01 resourcemanager_port=8032 submit_to=True resourcemanager_api_url=http://node01:8088 history_server_api_url=http://node01:19888 |
注意:如果是hadoop 3的版本,那么webhdfs_url端口一般需要修改成9870
1 |
webhdfs_url=http://node01.kaikeba.com:9870/webhdfs/v1 |
配置完成之后重新启动hue的服务
node03执行以下命令进行重新启动hue的服务
1 2 |
$ cd /kkb/install/hue-3.9.0-cdh5.14.2/ $ sudo build/env/bin/supervisor |
如果出现8888端口占用,需要先kill掉再启动服务
3.2、配置hue与hive集成
如果需要配置hue与hive的集成,我们需要启动hive的metastore服务以及hiveserver2服务(impala需要hive的metastore服务,hue需要hvie的hiveserver2服务)
更改hue的配置hue.ini
停止hue的服务,然后重新编辑修改hue.ini这个配置文件
修改hue.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
cd /kkb/install/hue-3.9.0-cdh5.14.2/desktop/conf vim hue.ini [beeswax] hive_server_host=node03.kaikeba.com hive_server_port=10000 hive_conf_dir=/kkb/install/hive-1.1.0-cdh5.14.2/conf server_conn_timeout=120 auth_username=hadoop auth_password=123456 [metastore] #允许使用hive创建数据库表等操作 enable_new_create_table=true |
启动hive的metastore服务
去node03机器上启动hive的metastore以及hiveserver2服务
1 2 3 |
cd /kkb/install/hive-1.1.0-cdh5.14.2/conf nohup bin/hive --service metastore & nohup bin/hive --service hiveserver2 & |
重新启动hue,然后就可以通过浏览器页面操作hive了
node03执行以下命令进行重新启动hue的服务
1 2 |
cd /kkb/install/hue-3.9.0-cdh5.14.2/ sudo build/env/bin/supervisor |
3.3、配置hue与impala的集成
停止hue的服务进程
修改hue.ini配置文件
1 2 3 4 5 6 7 8 |
cd /kkb/install/hue-3.9.0-cdh5.14.2/desktop/conf vim hue.ini [impala] server_host=node03 server_port=21050 impala_conf_dir=/etc/impala/conf |
然后node03执行以下命令,重新启动hue的服务即可
1 2 |
cd /kkb/install/hue-3.9.0-cdh5.14.2/ sudo build/env/bin/supervisor |
3.4、配置hue与mysql的集成
找到databases 这个选项,将这个选项下面的mysql注释给打开,然后配置mysql即可,大概在1547行
停止hue的服务,然后修改hue.ini
1 2 3 4 5 6 7 8 9 10 11 |
cd /kkb/install/hue-3.9.0-cdh5.14.2/desktop/conf vim hue.ini [[[mysql]]] nice_name="My SQL DB" engine=mysql host=node03.kaikeba.com port=3306 user=root password=123456 options={"init_command":"set names utf8;SET CHARACTER SET utf8;SET character_set_connection=utf8;"} |
更改完了配置,重新启动hue的服务
1 2 |
cd /kkb/install/hue-3.9.0-cdh5.14.2/ build/env/bin/supervisor |
3.5、配置hue与hbase的集成
第一步:修改hue.ini
如果hue已经启动,需要先停止hue的服务,然后继续修改hue的配置文件hue.ini
1 2 3 4 5 6 7 |
cd /kkb/install/hue-3.9.0-cdh5.14.2/desktop/conf vim hue.ini [hbase] hbase_clusters=(Cluster|node01:9090) hbase_conf_dir=/kkb/install/hbase-1.2.0-cdh5.14.2/conf |
第二步:启动hbase的thrift server服务
第一台机器执行以下命令启动hbase的thriftserver
1 2 3 4 |
cd /kkb/install/hbase-1.2.0-cdh5.14.2 bin/start-hbase.sh bin/hbase-daemon.sh start thrift |
检查hbase主节点状态: http://hadoop101:16010/master-status
第三步:启动hue
第三台机器执行以下命令启动hue
1 2 3 |
cd /kkb/install/hue-3.9.0-cdh5.14.2/ build/env/bin/supervisor |
第四步:页面访问
Views: 84