分享

Hue安装配置实践

admin 发表于 2014-12-17 23:16:18 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 7 116917

问题导读

1.Hue的来源历史是什么?
2.Hue有支持的哪些功能特性?
3.如何验证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的应用进行交互式查询
  • 支持Spark编辑器和仪表板(Dashboard)
  • 支持Pig编辑器,并能够提交脚本任务
  • 支持Oozie编辑器,可以通过仪表板提交和监控Workflow、Coordinator和Bundle
  • 支持HBase浏览器,能够可视化数据、查询数据、修改HBase表
  • 支持Metastore浏览器,可以访问Hive的元数据,以及HCatalog
  • 支持Job浏览器,能够访问MapReduce Job(MR1/MR2-YARN)
  • 支持Job设计器,能够创建MapReduce/Streaming/Java Job
  • 支持Sqoop 2编辑器和仪表板(Dashboard)
  • 支持ZooKeeper浏览器和编辑器
  • 支持MySql、PostGresql、Sqlite和Oracle数据库查询编辑器
下面,我们通过实际安装来验证Hue的一些功能。
环境准备
这里,我所基于的基本环境及其配置情况,如下所示:
  • CentOS-6.6 (Final)
  • JDK-1.7.0_25
  • Maven-3.2.1
  • Git-1.7.1
  • Hue-3.7.0(branch-3.7.1)
  • Hadoop-2.2.0
  • Hive-0.14
  • Python-2.6.6
基于上面的软件工具,要保证正确安装和配置。需要说明的是,我们通过Hue来执行Hive查询,需要启动HiveServer2服务:
  1. cd /usr/local/hive
  2. bin/hiveserver2 &
复制代码


否则通过Hue Web控制无法执行Hive查询。
安装配置
我新建了一个hadoop用户,以hadoop用户,首先使用yum工具来安装Hue相关的依赖软件:
  1. sudo yum install krb5-devel cyrus-sasl-gssapi cyrus-sasl-deve libxml2-devel libxslt-devel mysql mysql-devel openldap-devel python-devel python-simplejson sqlite-devel
复制代码


然后,执行如下命令进行Hue软件包的下载构建:
  1. cd /usr/local/
  2. sudo git clone https://github.com/cloudera/hue.git branch-3.7.1
  3. sudo chown -R hadoop:hadoop branch-3.7.1/
  4. cd branch-3.7.1/
  5. make apps
复制代码


上述过程如果没有任何问题,我们就已经安装好Hue。Hue的配置文件为/usr/local/branch-3.7.1/desktop/conf/pseudo-distributed.ini,默认的配置文件不能正常运行Hue,所以需要修改其中的内容,与我们对应的Hadoop集群配置相对应。该配置文件根据整合不同的软件,将配置分成多个段,每个段下面还有子段,便于管理配置,如下所示(省略子段名称):
  • desktop
  • libsaml
  • libopenid
  • liboauth
  • librdbms
  • hadoop
  • filebrowser
  • liboozie
  • oozie
  • beeswax
  • impala
  • pig
  • sqoop
  • proxy
  • hbase
  • search
  • indexer
  • jobsub
  • jobbrowser
  • zookeeper
  • spark
  • useradmin
  • libsentry
我们很容易根据需要来配置自己需要的内容。我们修改配置文件的情况,如下表所示:
Hue配置段
Hue配置项
Hue配置值
说明
desktopdefault_hdfs_superuserhadoopHDFS管理用户
desktophttp_host10.10.4.125Hue Web Server所在主机/IP
desktophttp_port8000Hue Web Server服务端口
desktopserver_userhadoop运行Hue Web Server的进程用户
desktopserver_grouphadoop运行Hue Web Server的进程用户组
desktopdefault_useryanjunHue管理员
hadoop/hdfs_clustersfs_defaultfshdfs://hadoop6:8020对应core-site.xml配置项fs.defaultFS
hadoop/hdfs_clustershadoop_conf_dir/usr/local/hadoop/etc/hadoopHadoop配置文件目录
hadoop/yarn_clustersresourcemanager_hosthadoop6对应yarn-site.xml配置项yarn.resourcemanager.hostname
hadoop/yarn_clustersresourcemanager_port8032ResourceManager服务端口号
hadoop/yarn_clustersresourcemanager_api_urlhttp://hadoop6:8088对应于yarn-site.xml配置项yarn.resourcemanager.webapp.address
hadoop/yarn_clustersproxy_api_urlhttp://hadoop6:8888对应yarn-site.xml配置项yarn.web-proxy.address
hadoop/yarn_clustershistory_server_api_urlhttp://hadoo6:19888对应mapred-site.xml配置项mapreduce.jobhistory.webapp.address
beeswaxhive_server_host10.10.4.125Hive所在节点主机名/IP
beeswaxhive_server_port10000HiveServer2服务端口号
beeswaxhive_conf_dir/usr/local/hive/confHive配置文件目录
上面主要配置了Hadoop集群相关的内容,以及Hive(beeswax段配置的是Hive,通过HIveServer2与Hive交互)。
最后,启动Hue服务,执行如下命令:
  1. cd /usr/local/branch-3.7.1/
  2. build/env/bin/supervisor &
复制代码





Hue功能验证
我们主要通过在Hue Web控制台上执行Hive查询,所以需要准备Hive相关的表和数据。
  • Hive准备
我们首先在Hive中创建一个数据库(如果没有权限则授权):
  1. GRANT ALL TO USER hadoop;
  2. CREATE DATABASE user_db;
复制代码


这里,hadoop用户是Hive的管理用户,可以将全部权限赋给该用户。
创建示例表,建表DDL如下所示:
  1. CREATE TABLE user_db.daily_user_info (
  2.   device_type int,
  3.   version string,
  4.   channel string,
  5.   udid string)
  6. PARTITIONED BY (
  7.   stat_date string)
  8. ROW FORMAT DELIMITED
  9.   FIELDS TERMINATED BY '\t'
  10. STORED AS INPUTFORMAT
  11.   'org.apache.hadoop.mapred.TextInputFormat'
  12. OUTPUTFORMAT
  13.   'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';
复制代码


准备的数据文件格式,示例如下所示:
  1. 0     3.2.1     C-gbnpk     b01b8178b86cebb9fddc035bb238876d
  2. 0     3.0.7     A-wanglouko     e2b7a3d8713d51c0215c3a4affacbc95
  3. 0     1.2.7     H-follower     766e7b2d2eedba2996498605fa03ed33
  4. 0     1.2.7     A-shiry     d2924e24d9dbc887c3bea5a1682204d9
  5. 0     1.5.1     Z-wammer     f880af48ba2567de0f3f9a6bb70fa962
  6. 0     1.2.7     H-clouda     aa051d9e2accbae74004d761ec747110
  7. 0     2.2.13     H-clouda     02a32fd61c60dd2c5d9ed8a826c53be4
  8. 0     2.5.9     B-ywsy     04cc447ad65dcea5a131d5a993268edf
复制代码




各个字段之间使用TAB分隔,每个字段含义与上面表user_db.daily_user_info的字段对应,然后我们将测试数据加载到示例表的各个分区之中:
  1. LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-05.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-05');
  2. LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-06.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-06');
  3. LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-07.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-07');
  4. LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-08.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-08');
  5. LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-09.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-09');
  6. LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-10.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-10');
  7. LOAD DATA LOCAL INPATH '/home/hadoop/u2014-12-11.log' OVERWRITE INTO TABLE user_db.daily_user_info PARTITION (stat_date='2014-12-11');
复制代码



可以通过Hive CLI接口登录,查看表中数据:
  1. SELECT COUNT(1) FROM daily_user_info;
复制代码


我这里有241709545条记录作为测试数据。
  • Hue登录页面
Hue服务启动成功后,可以直接通过浏览器打开连接http://10.10.4.125:8000/,就可以登录。第一次打开,需要输入默认用户和口令,然后就可以登录进去,如下图所示:

hue-login1.png

首次登录,选择使用的用户即为Hue管理员用户,权限很大,可以添加用户并管理用户及其用户组的操作权限。
  • Hue用户首页
登录成功以后,进入Hue Web控制台首页,如下图所示:

2.png

登录成功后,首先会执行一些基本环境的配置检查工作,它与我们实际修改配置时都指定了哪些应用有关系。
  • Hive查询编辑器页面
用户登录成功后,选择Query Editors下面的Hive菜单项,如图所示:

3.png

在提交查询的时候,由于该查询执行时间较长,可以等待查询执行,最后结果显示在的现房的Results标签页上,也可以在执行过程中查看Hive后台执行情况。
  • Job浏览器页面
通过Job浏览器(Job Browser)页面http://10.10.4.125:8000/jobbrowser/,可以查看运行在Hadoop集群上各种状态的Job,包括Succeeded、Running、Failed、Killed这4种状态,如图所示:

4.png

如果想要看到Job具体执行状态信息,需要正确配置并启动Hadoop集群的JobHistoryServer和WebAppProxyServer服务,可以通过Web页面看到相关数据,我们的示例,如图所示:

5.png

如果想看某个Job对应的MapTask或者ReduceTask执行情况,可以点击对应链接进去,和通过Hadoop YARN的Job Web管理界面类似,监控起来非常方便。
  • 用户管理和授权认证
以授权管理员用户登录成功后,可以通过点击右上角用户(我这里是yanjun),下拉列表中有“Manage Users”菜单项,在这里面可以创建新用户,并指定访问权限,如下图所示:

6.png

上面,我创建了几个用户,并指定用户所属的组(Groups,支持组管理)。实际上,我们可以将不同的Hue应用设置为不同的组,然后将新建的用户分配到该相关组,通过这种方式可以控制用户访问Hue应用的权限。上面创建并分配权限的用户可以通过设置的用户名和口令登录Hue Web管理系统,与各种Hadoop相关的应用(不仅仅限于此,如MySQL、Spark等)进行交互。
总结
通过上面的了解,以及安装配置过程所遇到的问题,做一个总结:
  • 如果基于CentOS环境安装配置Hue,可能相对复杂一点,不一定能够很容易的配置成功。我开始基于CentOS-5.11(Final)进行配置,没有配置成功,可能是使用的Hue的版本太高(branch-3.0和branch-3.7.1我都试过),或者可能是CentOS依赖的一些软件包无法安装等问题导致的。建议最好使用较新版本的CentOS,我这里使用的是CentOS-6.6 (Final),Hue使用的branch-3.7.1源码编译,并且Python版本需要2.6+。
  • 使用Hue,我们可能会对用户管理及其权限分配也很感兴趣,所以数据存储,可以根据需要使用我们熟悉的其他关系数据库,如MySQL等,并做好备份,以防使用Hue应用的相关用户数据丢失,造成无法访问Hadoop集群等问题。需要修改Hue的配置文件,将默认存储方式sqlite3改成我们熟悉的关系数据库,目前支持MySQL、Postgresql,以及Oracle。
  • 如果有必要,可能结合Hadoop集群底层的访问控制机制,如Kerberos,或者Hadoop SLA,配合Hue的用户管理和授权认证功能,更好地进行访问权限的约束和控制。
  • 根据前面我们提到的Hue特性,我们可以根据自己实际的应用场景,来选择不同的Hue应用,通过这种插件式的配置来启动应用,通过Hue与其交互,如Oozie、Pig、Spark、HBase等等。
  • 使用更低版本的Hive,如0.12,可能在验证过程中会遇到问题,可以根据Hive的版本来选择兼容版本的Hue来安装配置。
  • 由于本次安装配置实践,并没有使用Cloudera发行的CDH软件包,如果使用CDH可能会更加顺利一些。



已有(7)人评论

跳转到指定楼层
saybar 发表于 2015-4-8 15:31:21
学习了,谢谢楼主学到很多
回复

使用道具 举报

shihuai355 发表于 2016-1-19 17:02:54
hue的初始用户和密码是什么呢?登不进去呢
回复

使用道具 举报

阿飞 发表于 2016-1-19 17:06:37
shihuai355 发表于 2016-1-19 17:02
hue的初始用户和密码是什么呢?登不进去呢

很容易根据需要来配置自己需要的内容。修改配置文件的情况,如下表所示:
Hue配置段
Hue配置项
Hue配置值
说明
desktopdefault_hdfs_superuserhadoopHDFS管理用户
desktophttp_host10.10.4.125Hue Web Server所在主机/IP
desktophttp_port8000Hue Web Server服务端口
desktopserver_userhadoop运行Hue Web Server的进程用户
desktopserver_grouphadoop运行Hue Web Server的进程用户组
desktopdefault_useryanjunHue管理员
hadoop/hdfs_clustersfs_defaultfshdfs://hadoop6:8020对应core-site.xml配置项fs.defaultFS
hadoop/hdfs_clustershadoop_conf_dir/usr/local/hadoop/etc/hadoopHadoop配置文件目录
hadoop/yarn_clustersresourcemanager_hosthadoop6对应yarn-site.xml配置项yarn.resourcemanager.hostname
hadoop/yarn_clustersresourcemanager_port8032ResourceManager服务端口号
hadoop/yarn_clustersresourcemanager_api_urlhttp://hadoop6:8088对应于yarn-site.xml配置项yarn.resourcemanager.webapp.address
hadoop/yarn_clustersproxy_api_urlhttp://hadoop6:8888对应yarn-site.xml配置项yarn.web-proxy.address
hadoop/yarn_clustershistory_server_api_urlhttp://hadoo6:19888对应mapred-site.xml配置项mapreduce.jobhistory.webapp.address
beeswaxhive_server_host10.10.4.125Hive所在节点主机名/IP
beeswaxhive_server_port10000HiveServer2服务端口号
beeswaxhive_conf_dir/usr/local/hive/confHive配置文件目录
上面主要配置了Hadoop集群相关的内容,以及Hive(beeswax段配置的是Hive,通过HIveServer2与Hive交互)。

回复

使用道具 举报

llp 发表于 2016-3-4 20:11:30
支持MySql、PostGresql、Sqlite和Oracle数据库查询编辑器  。这是说可以在hue中集成mysql、oracle这样的传统数据库吗?不是指改默认的sqlite数据库为mysql来管理hue的会话数据,用户认证和授权等信息。我希望在hue的菜单上可以看到如hive这样意思的mysql按钮。请问可以集成吗??
回复

使用道具 举报

小伙425 发表于 2016-5-17 14:57:14
LZ辛苦啦 收藏啦
回复

使用道具 举报

小伙425 发表于 2016-5-18 10:16:02
shihuai355 发表于 2016-1-19 17:02
hue的初始用户和密码是什么呢?登不进去呢

这个初始的是你第一次登陆时自己随便设置的 你写成什么都可以 当你第二次登陆时会使用你第一次设置的这个用户名和密码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条