607java
舒适提示:要看高清无码套图,请使用手机打开并单击图片放大查看。sql
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/apache
Fayson这两天亲测了一下,CDH5.12.1也能勉强一用,想知道具体该怎样安装和使用,欢迎关注本公众号明天的文章。性能优化
Cloudera Labs说白了就是有群人在“实验室”会研究或者玩玩一些有趣的好比其余Apache的项目,虽然会偶尔打包一些项目,可是官方是不Support的。另外Cloudera Labs也不会保证从旧的Phoenix版本升级到4.7的兼容性。dom
2.概述分布式
ApachePhoenix是Apache HBase上一个高效的SQL引擎,也挺火的。不少公司都在使用它,好比Salesforce,它开源了这个项目,并将该项目贡献到社区。如今也已是顶级项目了。工具
ClouderaLabs在2015-05-06宣布打包Phoenix并集成到CDH平台,本文主要为了描述这几个问题:Phoenix能够作什么?为何你们想要使用它?和已有的SQL工具相好比何?它的一些优点能够取代现有的一些工具吗?oop
固然咱们首先会先介绍一下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。好比它还有如下限制:
5.与Hive/Impala的比较
Hive/Impala也能够做为HBase之上的SQL工具。包括Phoenix这3个工具在不少功能上都有一些重叠,好比它们都提供SQL执行以及JDBC驱动
不像Impala和Hive,Phoenix与HBase结合更加紧密,从而能够更好的利用HBase的一些特性,好比coprocessors和skip scans。
如下是比较:
|
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
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://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