Ucloud Hbase 集群安装 Phoenix (Cloudera 版,无控制台)

Anton Chen | 2016-04-12

公司项目开发初期定下的架构 Hbase 作为最为完整的持久化 NoSQL,所以所有统计报表都需要从 Hbase 查询数据。而项目初期肯定不会把资源浪费在 Spark 这样的服务上,并且 Spark 这个服务公司的开发都不熟悉。最后为了节约成本以及开发周期,前期临时使用 Phoenix 来查询数据。

而项目的特性导致我们在服务器方面需要快速扩容、增加节点,而符合这样要求的只有云服务了。为了降低运维成本我们决定使用公有云服务。最终我们选择使用 Ucloud 的云服务,主要原因是当时口碑较好的服务商只有它提供 Hadoop(我对 Hadoop 不熟悉。再加上 Hadoop 的维护比较复杂,所以为了不影响业务稳定性我们决定交给第三方),当然 Ucloud 的价格以及云主机各项性能都很好。

项目上线前几天 Ucloud 的 Hadoop 服务才刚刚上线,然而我们发现 Ucloud 的 Hadoop 是 CDH(Cloudera)5.4.4 版的,试都不用试都知道直接装 Apache 的 Phoenix 会有问题。在 Cloudera 官网翻到 Phoenix 的存档地址后一看 .parcel 的文件后缀,这明显是 Cloudera Manager 的专用包。然而 Ucloud 并不提供 Cloudera Manager。

然而我并不死心。

随便进入一个版本目录后发现 manifest.json 这个文件有这样一句话:

"depends": "CDH (>= 5.4), CDH (<< 5.5.0)",

这说明这个版本支持 CDH 5.4.x 的 Hadoop,而 Ucloud 的正好是这个版本,那么下载下来看看到底是个什么文件?

wget -c http://archive.cloudera.com/cloudera-labs/phoenix/parcels/1.1.0.687/CLABS_PHOENIX-4.5.2-1.clabs_phoenix1.1.0.p0.687-el6.parcel

众所周知 el6 表示 RedHat 系 6.x,下载完之后用 file 命令查看发现是 gzip 格式的,瞬间感觉有戏

CLABS_PHOENIX-4.5.2-1.clabs_phoenix1.1.0.p0.687-el6.parcel: gzip compressed data, from Unix, last modified: Thu Nov 19 08:30:46 2015

直接 tar 解压文件:

tar xf CLABS_PHOENIX-4.5.2-1.clabs_phoenix1.1.0.p0.687-el6.parcel

解压后发现 lib/phoenix 中的 bin 和 lib 就是 Phoenix 所需的文件

ll lib/phoenix

total 125144
drwxr-xr-x 2 1106 4001 4096 Nov 19 08:30 bin/
drwxr-xr-x 2 1106 4001 4096 Nov 19 08:30 cloudera/
drwxr-xr-x 3 1106 4001 4096 Nov 19 08:30 dev/
drwxr-xr-x 3 1106 4001 4096 Nov 19 08:30 examples/
drwxr-xr-x 2 1106 4001 4096 Nov 19 08:30 lib/
-rw-r–r– 1 1106 4001 119655465 Nov 19 08:30 phoenix-1.1.0-client.jar
-rw-r–r– 1 1106 4001 6689164 Nov 19 08:30 phoenix-1.1.0-server.jar
-rw-r–r– 1 1106 4001 1776439 Nov 19 08:30 phoenix-1.1.0-thin-client.jar

之后按照目录结构把 bin 和 lib 中的文件拷贝到 Hbase 的 bin 和 lib 中, lib/phoenix 下的几个 jar 包也拷贝到 Hbase 目录中,拷贝一份 hbase-site.xml 到 bin 目录,只保留 Zookeeper 设置项,给 sqlline.py(sqlline.py 是 Python 与 Java 结合的一个客户端,所以需要在 bin 目录放置一份 hbase-site.xml 作为客户端连接使用)这些工具用。

剩余节点如果不需要使用 sqlline.py 工具只需要拷贝 lib 中的文件就可以了。

添加如下内容到 Hbase 的 hbase-site.xml 中,这个是 Phoenix 使用索引所需的设置。

<property>
    <name>hbase.regionserver.wal.codec</name>
    <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>

最后重启所有的 HMaster 和 HRegionServer 即可。

修订记录

  • 暂无