Hortonworks 的招牌一直是采用全部apache 开源方案搭建hadoop 大数据系统。 Hortonworks HDP 2.2 今年新鲜出炉, 里面集成了开源hadoop社区几乎所有最新的内容。
遗憾的是 Hue 这个目前在hadoop上最好用的查询界面 在HDP上一直不好用。 原因很简单,hue 是Cloudera 开发的, 默认集成在Cloudera的hadoop 发行版 CDH中。 因此Hue 中使用了一些CDH所特有的api。 这些api 导致hue 不能直接 和 Apache 标准版的hadoop 兼容。
Hortonworks 只好自己对hue 做了一定的修改使其和HDP兼容, 因此HDP2.2 中包含一个hue 2.6. 版本。 (要知道最新的hue 版本已经出到3.7.1了!让你还去用2.6, 能忍么?!)
那么就一起看看怎么在HDP2.2上安装最新版的hue 3.7.1 吧! 本文基于Hue 官网上的一个教程, 并根据实际情况作了调整。
我的安装的操作系统环境是CentOS 6, HDP2.2 GA版本。 集群一共有3个物理节点 (一个name node, 二个 data node)。
安装Hue的时候,Hue只是作为一个访问Hadoop集群上各种服务的UI 界面, 其实可以安装在集群上任意节点, 甚至集群外 。 我这次是随机选取了一个data node来安装Hue。
安装依赖包
Hue的编译和安装需要依赖下面的一些包, 请在安装hue之前 先行安装。
下载Tarball
Hue是一个混合开发的软件,其中包括了自带的web服务器, c语言编译的模块,已经python的模块, 因此 安装Hue需要 将tarball 下载后在本地解压。
执行安装命令
修改Hue的配置文件
给Hue打补丁,使其兼容Hive 0.14
我的HDP集群上主要运行的是Hive, 而Hue提供了非常友好的Hive 查询界面。 提供了sql 自动完成(表名,字段名), 智能的sql错误提示, (自动定位到出错的行) 表结构和表数据的自由浏览,基本上和传统的数据库客户端的功能非常接近了。
但是因为兼容性问题,Hue 与HDP搭配时,执行hive sql时, 无法实时看到执行的日志。 对于一些执行时间比较长的ob, 这会让人很焦虑。 另外对于一些执行中出错的情况,例如执行到一半因为资源不足等原因失败,查找失败的日志也会变得很费劲。 这个兼容性问题的实质是 hue 的hive 查询时使用了一个“getLog” 的api ,去像hive 查询实时的执行日志。 而在Hive 0.14 的标准版中,这个api 是没有实现的。 (或者说Cloudera 提交了相关代码, 但是被apache 拒绝了), 于是Cloudera在自己的发行版中加入了这个api。 同时为了Hue 能够和apache 标准版hive适配, Hue团队自己也提交了一个hue的patch, 允许hue 在无法调用GetLog 时, 通过使用FetchResults 这个api 来获取执行日志。 因此我们需要手动把这个patch加到我们的hue 安装目录中。
修改Hue的 源码, 修复其在中文系统下自动完成快捷键
前面提到的Hue的 各种自动完成功能非常好用, 但使用中文操作系统的同学会发现Hue 使用Ctrl+Space来触发自动提示。 这个快捷键直接被系统输入法切换占用了,任凭你把键盘敲烂, Hue的自动完成也出不来。。。 所以需要自己稍微对Hue的源码做一点小修改来更换另一个快捷键组合。
启动重启Hue