之前一直用phpHiveAdmin,也一直在关注hue,最近打算调研一下hue,hue在最近两年发展很快,页面效果和功能上都有很大程度的提升,所支持的服务也越来越多,除了hive,hbase,目前还支持sqoop,impala,pig等。
hue的一个大致架构如下图所示
核心服务是Hue Server,在本地使用SQLLite作为默认的DB,用户可以通过Hue UI(也就是通过浏览器)查看Hue的服务并使用相关的服务。Hue由python实现,通过thrift与所支持的各种服务进行交互。
目前集群使用的版本是CDH5.0.0,Hue相关服务的安装也非常的方便,采用yum方式安装即可。安装Hue的机器可以是脱离集群外的某台机器。
sudo yum install hue
我这次主要是研究Hue与Hive的交互,在Hue中负责与Hive交互的模块叫BeeasWax,所以在启动Hue的服务之前,需要做一些相关的配置。配置主要分两方面,一方面是Hue本身需要做的配置,另一方面就是hadoop集群中需要修改一些配置来配合Hue的使用。Hue本身配置相关的文件是/etc/hue/conf/hue.ini。首先需要做Hue的一些基本配置,主要的几个属性如下所示
[desktop]
secret_key 随机字符串,推荐30-60个字符,主要和cookies安全性相关
http_host 访问Hue的host
http_port 访问Hue的port
ssl_certificate 如果使用https,需要配置ssl相关的配置
ssl_private_key
ldap_password ldap验证方式的用户密码
BeeasWax相关的一些主要属性如下
[beeswax]
hive_server_host HiveServer的host
hive_server_port HiveServer的port
hive_conf_dir Hive配置文件目录
hive_server_bin HiveServer的bin目录
配置好了Hue相关的,还需要配置hadoop集群的一些属性,比较重要的有如下几个
hive-site.xml
hive.server2.enable.impersonation=true
使用提交任务用户的身份运行Hive Job,如果不配置,会默认以HiveServer的启动用户来运行Job
hdfs-site.xml
dfs.webhdfs.enabled=true
core-site.xml
hadoop.proxyuser.hue.groups=*
hadoop.proxyuser.hue.hosts=*
webhdfs相关的配置,Hue需要使用WebHDFS或HttpFs来访问HDFS,二者配置一个即可
配置完成后,就可以启动Hue的服务了(使用Hue管理Hive需要启动HiveServer,目前推荐使用HiveServer2)
service hue start
在浏览器输入hue_host:hue_port就可以进入登录页面,第一次输入的是管理员的用户名和密码,通过管理员权限可以建立其他的用户和组。登录后可以进入Hive Editor来编写HQL,提交后可以实时查看到Job运行的状态,如下图所示
不过在后续的使用和测试过程中,发现使用Hue来访问Hive很不稳定,上图左侧的MetaStore信息总是加载不出来,查看了HiveServer2的log,基本有两种错误,一种是thrift相关的连接异常,另一种就是OutOfMemory
使用jstat查看了下HiveServer2堆内存的使用情况,并没有发现明显的异常情况,随后google了一把,
Hue的google邮件组中有关于这两种问题的讨论(https://groups.google.com/a/cloudera.org/forum/#!topic/cdh-user/nkM1gRIIIjo),基本可以确定是bug级别的问题,有人建议升级到CDH5.0.1,在Jira上也有人反应过此问题(Hive-6390),目前我还没做升级后的相关测试,后续会继续探索相关的问题。
后续升级到了CDH5.1.0版本,没有再出现以上问题,Hue可以正常使用了