文档章节

Cloudera Labs中的Phoenix

hblt-j
 hblt-j
发布于 01/15 15:14
字数 1886
阅读 17
收藏 0

 

Fayson发表于Hadoop实操订阅

607

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

1.导读


Cloudera Labs在2016-06-27宣布打包了Apache Phoenix项目,版本为4.7.0,并基于CDH5.7.0。安装依旧是大家熟悉的Parcel方式,下载地址为:http://archive.cloudera.com/cloudera-labs/phoenix/parcels/1.3/

Fayson这两天亲测了一下,CDH5.12.1也能勉强一用,想知道具体该怎样安装和使用,欢迎关注本公众号明天的文章。

Cloudera Labs说白了就是有群人在“实验室”会研究或者玩玩一些有趣的比如其他Apache的项目,虽然会偶尔打包一些项目,但是官方是不Support的。另外Cloudera Labs也不会保证从旧的Phoenix版本升级到4.7的兼容性。

2.概述


ApachePhoenix是Apache HBase上一个高效的SQL引擎,也挺火的。很多公司都在使用它,比如Salesforce,它开源了这个项目,并将该项目贡献到社区。现在也已经是顶级项目了。

ClouderaLabs在2015-05-06宣布打包Phoenix并集成到CDH平台,本文主要为了描述这几个问题:Phoenix可以做什么?为什么大家想要使用它?和已有的SQL工具相比如何?它的一些优势可以取代现有的一些工具吗?

当然我们首先会先介绍一下Phoenix以及它的一些独特的特性,另外会给出一些它的使用场景以及和其它SQL工具的对比。

3.Apache Phoenix是什么


首先Phoenix是HBase之上的SQL工具,至于HBase是什么,我就不介绍了,你若不懂,就不需要往下继续看了。Phoenix旨在通过标准的SQL语法来简化HBase的使用,并可以使用标准的JDBC连接HBase,而不是通过HBase的Java客户端APIs。它可以让你执行所有的CRUD和DDL操作,比如创建一张表,插入数据以及查询数据。SQL和JDBC可以大大减少用户代码的开发,当然它也提供一些性能优化的手段,通过SQL和JDBC,你可以更方便的将HBase集成到你现有的系统或者工具。

当Phoenix接收到SQL查询后,它会在本地编译成HBase的API,然后推到集群进行分布式的查询或计算。它自动创建了一个元数据库用来存储HBase的表的元数据信息。因为Phoenix是直接调用的HBase的API,coprocessors和自定义的filters,所以对于大量小查询可以实现毫秒级返回,千万级别的数据实现秒级返回。

4.使用场景


Phoenix非常适合HBase的随机访问,它的二级索引特性同时可以让你实现非主键查询的快速返回,而不需要进行全表扫描。它可以让你像传统数据库表的方式创建和管理HBase中的表,同时Phoenix也支持复合主键。

Phoenix可以给Rowkey加盐,从而避免因为简单递增的Rowkey引起的RegionServer热点问题。通过指定不同的租户连接实现数据访问的隔离,从而实现多租户,租户只能访问属于他的数据。

虽然Phoenix有这么多优势,但是它依旧无法替代RDBMS。比如它还有以下限制:

  • Phoenix不支持跨行的事务
  • 查询优化和join机制比大多数RDBMS要简陋
  • 二级索引是通过索引表实现的,主表和索引表的同步会存在问题,虽然只是在一段很短的时间内。所以索引无法完全满足ACID
  • 多租户功能比较简单

5.与Hive/Impala的比较


Hive/Impala也可以作为HBase之上的SQL工具。包括Phoenix这3个工具在很多功能上都有一些重叠,比如它们都提供SQL执行以及JDBC驱动

不像Impala和Hive,Phoenix与HBase结合更加紧密,从而可以更好的利用HBase的一些特性,比如coprocessors和skip scans。

  • Phoenix的目标是在HBase之上提供一个高效的类关系型数据库的工具,定位为低延时的查询应用。Impala则主要是基于HDFS的一些主流文件格式如文本或Parquet提供探索式的交互式查询。Hive类似于数据仓库,定位为需要长时间运行的批作业。
  • Phoenix很适合需要在HBase之上使用SQL实现CRUD,Impala则适合Ad-hoc的分析类工作负载,Hive则适合批处理如ETL。
  • Phoenix非常轻量级,因为它不需要额外的服务。
  • Phoenix还支持一些高级功能,比如多个二级索引,flashback查询等。无论是Impala还是Hive都无法提供二级索引支持。

以下是比较:

 

Apache Phoenix

Impala

Hive

语法

SQL

SQL

HiveQL

定位

为低延时应用在HBase之上提供高效的SQL查询

大数据集之上的交互式探索分析

批处理比如ETL

二级索引

Yes(无法保证ACID)

No

No

额外的服务

No

Yes

Yes

HBase的高级特性

Yes

No

No

6.安装


如果需要安装Phoenix,至少需要HBase1.0,从CDH5.4以后开始打包HBase1.0。

1.下载Phoenix的Parcel:http://archive.cloudera.com/cloudera-labs/phoenix/

2.通过Cloudera Manager安装Parcel,首先在Cloudera Manager里配置一个新的Parcel仓库地址,然后下载,分发,激活。

3.如果你想要使用HBase的二级索引功能,在重启HBase服务之前,需要在hbase-site.xml中添加以下内容:

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

4.在激活Phoenix的Parcel包之后,请确认已经重启了HBase的服务。

7.Phoenix的命令行工具


Phoenix的命令行工具在/usr/bin目录下,在使用Phoenix的命令行工具之前,需要配置Java的环境变量。

export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
export PATH=$PATH:$JAVA_HOME/bin
  • phoenix-sqlline.py是执行SQL的命令脚本,在执行该命令之前,你需要指定HBase集群的Zookeeper地址,比如:phoenix-sqlline.py zk01.example.com:2181。如果想要在命令行执行一个SQL文件,可以在命令行直接带上该文件。比如:sqlline.py zk01.example.com:2181 sql_queries.sql
  • phoenix-psql.py可以用来加载CSV数据,后面也可以直接带上需要执行的SQL脚本,也可以不加。比如:phoenix-psql.py zk01.example.com:2181 create_stmts.sql data.csvsql_queries.sql
  • 性能测试脚本phoenix-performance.py,可以用于一次插入多少行数据。比如:phoenix-psql.py zk01.example.com:2181 100000

8.接下来的工作


Phoenix项目正在调研使用Tephra(来自CASK)来做事务管理,PHOENIX-400。同时也在考虑集成Cost-based的查询优化,PHOENIX-1177。虽然Phoenix支持tracing,http://phoenix.apache.org/tracing.html,但监控和管理工作还有待优化和完善。

9.总结


Phoenix简化了HBase很多场景的使用方式。与Cloudera Labs中的其他工具一样,Cloudera官方不会提供Support,仅供实验使用。如果有任何反馈意见,可以在Cloudera Labs的社区与Cloudera进行反馈和互动。https://community.cloudera.com/t5/Cloudera-Labs/bd-p/ClouderaLabs

10.参考网址


https://blog.cloudera.com/blog/2015/05/apache-phoenix-joins-cloudera-labs/

https://community.cloudera.com/t5/Storage-Random-Access-HDFS/HBase-Phoenix-support-for-CDH-5-7/td-p/41965

https://blog.cloudera.com/blog/2015/11/new-apache-phoenix-4-5-2-package-from-cloudera-labs/

https://www.cloudera.com/developers/cloudera-labs.html

https://community.cloudera.com/t5/Cloudera-Labs/bd-p/ClouderaLabs

本文转载自:https://cloud.tencent.com/developer/article/1078057

hblt-j
粉丝 25
博文 218
码字总数 73000
作品 0
海淀
架构师
私信 提问
CDH + phoenix+ zeppelin

内容概述 1.安装及配置Phoenix 2.Phoenix的基本操作 3.使用Phoenix bulkload数据到HBase 4.使用Phoenix从HBase中导出数据到HDFS 测试环境 1.CDH5.11.2 2.RedHat7.2 3.Phoenix4.7.0 前置条件 ...

hblt-j
02/28
0
0
HBase实操 | 使用Phoenix在CDH的HBase创建二级索引

1.文档编写目的 对于HBase而言,如果想精确地定位到某行记录,唯一的办法是通过rowkey来查询。如果不通过rowkey来查找数据,就必须逐行地比较每一列的值,即全表扫瞄。对于较大的表,全表扫描...

hbase小能手
2018/11/16
0
0
HBase Phoenix助力海量数据实时分析

前言 phoenix这个项目我一直接触不多,在去年接触的一家公司使用phoenix分析数百亿的记录并且在秒级别返回的延迟时,笔者才慢慢探究一些phoenix的内幕。上个星期跟一位phoenix的PMC&Committ...

hbase小能手
2018/11/05
0
0
Phoenix三贴之一:Phoenix扫盲介绍贴

1 简介Introduction Apache Phoenix is a relational database layer over HBase delivered as a client-embedded JDBC driver targeting low latency queries over HBase data. Apache Phoe......

袁一涵
2018/05/08
0
0
在CDH5.14.2中安装Phoenix与使用

在CDH5.14.2中安装Phoenix与使用 标签(空格分隔): 大数据平台构建 一:安装及配置Phoenix 1.0:phoienx 的介绍 1.1: 下载CDH 需要parcel包 1.2 配置httpd的服务 1.3 在CDH5.14.2 上面 配...

flyfish225
2018/06/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

进程命令ps

命令ps 用途: 显示当前系统的进程状态 语法: ]# ps [选项] 常用选项: aux = 列出正在运行的所有进程; a 显示现行终端机下的所有程序,包括其他用户的程序 u 以用户为主...

迷失De挣扎
58分钟前
3
0
聊聊spring cloud的CachingSpringLoadBalancerFactory

序 本文主要研究一下spring cloud的CachingSpringLoadBalancerFactory CachingSpringLoadBalancerFactory spring-cloud-openfeign-core-2.2.0.M1-sources.jar!/org/springframework/cloud/o......

go4it
昨天
4
0
一篇文章搞定——JDK8中新增的StampedLock

一、StampedLock类简介 StampedLock类,在JDK1.8时引入,是对读写锁ReentrantReadWriteLock的增强,该类提供了一些功能,优化了读锁、写锁的访问,同时使读写锁之间可以互相转换,更细粒度控...

须臾之余
昨天
4
0
Android Camera原理之CameraDeviceCallbacks回调模块

在讲解《Android Camera原理之openCamera模块(二)》一文的时候提到了CameraDeviceCallbacks回调,当时没有详细展开,本文我们详细展开讲解一下。 CameraDeviceCallbacks生成过程: 《Android...

天王盖地虎626
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部