【计算】HBase查询引擎-Phoenix(十二)

Posted by Kaka Blog on October 31, 2018

前言

使用HBase已有一段时间,期间发现HBase不支持SQL查询和二级索引,导致业务在使用时无法更好的利用现有的经验来查询HBase。虽然HBase本身不支持SQL,但业界还是有现成的方案来支持,如Hive、Impala、Phoenix等。众多方案各有各的优势,本文主要对Phoenix作一个大概的介绍。

什么是Phoenix

Phoenix中文翻译为凤凰, 其最早是Salesforce的一个开源项目,Salesforce背景是一个搞ERP的,ERP软件一个很大的特点就是数据库操作,所以能搞出一个数据库中间件也是很正常的。而后,Phoenix成为Apache基金的顶级项目。

Phoenix具体是什么呢,其本质是用Java写的基于JDBC API操作HBase的开源SQL引擎。

优势

  • 二级索引支持(global index + local index)
  • 编译SQL成为原生HBASE的可并行执行的scan
  • 在数据层完成计算,server端的coprocessor执行聚合
  • 下推where过滤条件到server端的scan filter上
  • 利用统计信息优化、选择查询计划(5.x版本将支持CBO)
  • skip scan功能提高扫描速度

访问方式

一般可以使用以下三种方式访问Phoenix:

  • JDBC API
  • 使用Python编写的命令行工具(sqlline, sqlline-thin和psql等)
  • SQuirrel

安装Phoenix

环境准备

  • CDH:5.15.1
  • Ubuntu:xenial

查看Ubuntu版本:

sudo lsb_release -a

下载parcel

Phoenix有HBase版本,也有CDH版本,这里用的是CDH,所以下载CDH版本的Phoenix,下载地址:http://www.apache.org/dist/phoenix/apache-phoenix-4.14.0-cdh5.14.2/parcels/,由于Apache的资源下载慢,可以访问国内的镜像地址:https://mirrors.tuna.tsinghua.edu.cn/apache/phoenix/apache-phoenix-4.14.0-cdh5.14.2/parcels/

1、进入parcel-repo目录

cd /opt/cloudera/parcel-repo/

2、下载parcel和manifest文件

wget https://mirrors.tuna.tsinghua.edu.cn/apache/phoenix/apache-phoenix-4.14.0-cdh5.14.2/parcels/APACHE_PHOENIX-4.14.0-cdh5.14.2.p0.3-xenial.parcel
wget https://mirrors.tuna.tsinghua.edu.cn/apache/phoenix/apache-phoenix-4.14.0-cdh5.14.2/parcels/manifest.json

3、新建sha文件

由于没有sha文件,会提示未找到哈希文件,从Apache官网上下载的sha文件不能用,经过百度,可以自己生成sha文件。

cat manifest.json # 查看xenial版本对应的哈希值,这里是5aebefdeb239a9dc7a042b891e2aac98336a25bc
vi APACHE_PHOENIX-4.14.0-cdh5.14.2.p0.3-xenial.parcel.sha
5aebefdeb239a9dc7a042b891e2aac98336a25bc

4、登录Cloudera Manager,点击检查新parcel。

img

5、点击分配和激活按钮,激活成功后如下。

img

6、配置HBase

img

7、拷贝Phoenix的jar到HBase下

cp phoenix-4.14.0-cdh5.14.2-*.jar /opt/cloudera/parcels/CDH-5.15.1-1.cdh5.15.1.p0.4/lib/hbase/

8、拷贝hbase-site.xml到Phoenix下

cp hbase-site.xml /opt/cloudera/parcels/APACHE_PHOENIX/bin/

hbase-site.xml在/etc/hbase/conf下。

9、重启HBase

img

连接HBase

1、连接到HBase

cd /opt/cloudera/parcels/APACHE_PHOENIX/bin/

2、使用Phoenix登录HBase,需要指定Zookeeper

phoenix-sqlline.py 398.cdh.master:2181

img

基本操作

  • !table: 列出表
  • !quit: 退出

HBase已有的表不会显示出来,得通过创建视图来映射HBase中的表。

create view "student"(
pk varchar primary key,
"name"."history" varchar,
"number"."age" varchar
);

查看视图是否和HBase一致。

select * from "student";

参考

浅谈Phoenix在HBase中的应用

Cloudera CDH 、Impala本地通过Parcel安装配置详解及什么是Parcel

cdh集成phoenxi 安装步骤

在CDH5.14.2中安装Phoenix与使用

【十】Phoenix视图映射HBase中已有的表