文档章节

CDH5.11整合phoenix4.7

JPblog
 JPblog
发布于 2018/08/15 13:10
字数 1418
阅读 282
收藏 0

一、环境准备

1.CDH环境

LinuxOS CentOS6.7
Hadoop 2.6.0+cdh5.11.1+2400
Zookeeper 3.4.5+cdh5.11.1+111
Hive 1.1.0+cdh5.11.1+1041
HBase 1.2.0+cdh5.11.1+319

2.素材获取

    进入Cloudera官网下载Phoenix的Parcel:

http://archive.cloudera.com/cloudera-labs/phoenix/parcels/latest/

二、安装Phoenix

1.安装httpd

    安装httpd服务以便后续可以发布Phoenix文件

yum install -y httpd*

2.发布parcel

    建立Phoenix目录,并拷入之前获取的文件(/var/www/html为httpd默认发布路径)

#建立Phoenix目录
mkdir /var/www/html/Phoenix

#拷贝文件到Phoenix目录
cp CLABS_PHOENIX-4.7.0-1.clabs_phoenix1.3.0.p0.000-el6.parcel /var/www/html/Phoenix/
cp CLABS_PHOENIX-4.7.0-1.clabs_phoenix1.3.0.p0.000-el6.parcel.sha1 /var/www/html/Phoenix/
cp manifest.json /var/www/html/Phoenix

#更名
mv CLABS_PHOENIX-4.7.0-1.clabs_phoenix1.3.0.p0.000-el6.parcel.sha1 CLABS_PHOENIX-4.7.0-1.clabs_phoenix1.3.0.p0.000-el6.parcel.sha

    拷入文件并更名后文件信息

    拷贝入文件后通过网页能够访问

http://47.95.246.68/phoenix/

3.CM-parcel部署

    1> 进入CM主页点击《主机 -> Parcel》进入Parcel管理页面

    2> 在Parcel管理页面点击《配置》进入Parcel配置

    3> 添加Phoenix发布的http地址并保存

http://47.95.246.68/phoenix/

    4> 返回发现CM已经识别Phoenix的远程Parcel

    5> 依次点击《下载 -> 分配 -> 激活》完成Parcel布置

4.HBase配置更新

    1> 返回CM主页面发现HBase需要重启并更新配置项

    2> 更新过期配置

    3> 重启过时服务

三、一般使用

1.启动Phoenix

    1> 进入Phoenix的bin目录

cd /opt/cloudera/parcels/CLABS_PHOENIX/bin

    2> 登陆Phoenix客户端(需要指定Zookeeper)

./phoenix-sqlline.py cdh01:2181:/hbase

    3> 查看表信息

2.create

    Phoenix创建测试表

#设置单列为主键
CREATE TABLE tmp_staff
 (
  hrid         varchar not null primary key,
  parentid     bigint,
  departmentid varchar
 );

#也可设置多列为联合主键
(当设置联合主键时,Phoenix会把定义的列拼起来作为Hbase的Rowkey)
CREATE TABLE test_staff
 (
  hrid         varchar,
  parentid     bigint,
  departmentid varchar
CONSTRAINT my_pk PRIMARY KEY (departmentid, hrid));

    Hbase查看测试表

3.alter

    Phoenix修改测试表

(特别说明:Phoenix的索引分为可变索引和不可变索引。它们通过对应主表IMMUTABLE_ROWS参数来设定。不可变索引的存储方式是write once, append only,主表数据变化时索引表会追加一条新索引,使用场景十分有限。可变索引的存储方式是write once, multiple edit。主表数据变化时索引表会更新对应索引条目。)

#新增列
ALTER TABLE tmp_table ADD departmentid varcher;
#删除列
ALTER TABLE tmp_table DROP COLUMN 0.departmentid;
#使得表支持可变索引
ALTER TABLE tmp_table SET IMMUTABLE_ROWS = true;

    Phoenix修改索引

(特别说明:Phoenix不保证完整的事务,所以可能出现索引表与主表不一致的情况。若想自己同步可以使用rebuild命令进行索引重建。同时也要注意,索引重建过程有可能bring down整个hbase集群)

#禁用索引
ALTER INDEX idx_tmp_table ON 0.departmentid DISABLE
#重建索引
ALTER INDEX IF EXISTS idx_tmp_table ON server_metrics REBUILD

4.upsert

    1> Phoenix测试表插入数据(Phoenix中没有INSERT语法,用UPSERT VALUES、UPSERT SELECT代替)

#插入数据
upsert into tmp_staff values('00021850',1915,'inthotel');
#查询
select * from tmp_staff;

    Hbase查看测试表数据


    2> Phoenix测试表更新数据(Phoenix中没有update语法,用UPSERT VALUES、UPSERT SELECT代替)

#更新数据
upsert into tmp_staff values('00021850',1915,'xxxxx');
#查询
select * from tmp_staff;

5.delete

    Phoenix测试表删除数据

#删除数据
delete from tmp_staff where hrid='00021850';
#查询
select * from tmp_staff;

    Hbase查看测试表数据

四、数据导入导出

1.bulkload

    对于分布在集群上的高吞吐量的加载,可以使用MapReduce加载器。这个加载器首先将所有数据转换为HFiles,然后在HFile创建完成后直接将创建的HFiles提供给HBase。相对于走API导数据方式,速度更快负载更小。可使用的方法有:

org.apache.phoenix.mapreduce.CsvBulkLoadTool
org.apache.phoenix.mapreduce.JsonBulkLoadTool

    1> 准备CSV文件

#文件上传至HDFS
hadoop fs -put tmp_staff.csv /test

    2> 执行导入命令

HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH/lib/hbase/hbase-protocol-1.2.0-cdh5.11.1.jar:/opt/cloudera/parcels/CDH/lib/hbase/conf hadoop jar /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/phoenix-4.7.0-clabs-phoenix1.3.0-client.jar org.apache.phoenix.mapreduce.CsvBulkLoadTool -t tmp_staff -i /test/tmp_staff.csv

    3> Phoenix中查看数据

    4> HBase中查看数据

2.pig export

    1> 准备导出所需控制文件

REGISTER /opt/cloudera/parcels/CLABS_PHOENIX/lib/phoenix/phoenix-4.7.0-clabs-phoenix1.3.0-client.jar;
rows = load 'hbase://query/SELECT * FROM TMP_STAFF' USING org.apache.phoenix.pig.PhoenixHBaseLoader('cdh01:2181');
STORE rows INTO 'tmp_staff_export.csv' USING PigStorage(',');

    2> 执行导出命令

pig -x mapreduce tmp_staff_export.pig

    3> 导出开始

    4> 导出任务成功

五、使用简述

1.优势概述

    Phoenix作为应用层与HBase之间的中间件,以下特性使它在大数据量的简单查询场景有着独有的优势

1. 自动编译SQL为原生HBase可并行执行的scan
2. 多种二级索引支持(global、local、cover、func)
3. coprocessor在server端执行,减小服务与客户端传输开销
4. 下推where过滤条件到server端的scan filter上
5. 自动收集统计信息并利用它来优化查询计划(5.x版本将支持CBO)
6. skip scan利用了HBase的SEEK_NEXT_USING_HINT显著提高扫描速度
7. Salting通过对RowKey前添加Hash对表预分region,提升读写并消除热数据
8. 除了HBase的行级事务语义之外,与Tephra集成实现了跨行和跨表事务支持。

2.访问方式

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

1. 命令行工具phoenix-sqlline.py等
2. JDBC API
3. SQuirrel

3.性能对比

    A:数据是5个窄列。regionServer数量:4台 (HBase堆:10GB,处理器:6核@ 3.3GHz Xeon)

#10M and 100M rows
select count(1) from table 

    B:数据是3个窄列。region server数:1 (HBase堆:2GB,处理器:2核@ 3.3GHz Xeon)

#1M and 5M rows
select count(1) from table 

© 著作权归作者所有

JPblog
粉丝 15
博文 65
码字总数 42689
作品 0
朝阳
程序员
私信 提问
vSphere 5.5 VM整合磁盘失败之—文件被锁定无法访问

vSphere 5.5 VM整合磁盘失败之—文件被锁定无法访问 环境:vSPhere 5.5u3,虚机使用EMC的networker备份 问题现象:在vc上发现,晚上经过networker的备份之后,虚机提示需要整合磁盘 解决前相...

Makka_Pakka
2018/07/06
0
0
snakerflow/snaker-springmvc

Introduction Snaker-SpringMVC项目主要是基于springMVC、spring3、hibernate3、snaker框架整合的一个最基本的流程管理模块,方便大家轻松地完成流程引擎的整合 ###整合步骤 ####1).依赖包整...

snakerflow
2014/11/30
0
0
springboot从入门到精通教程分享, 深度掌握Springboot实践技术教程

深度掌握Springboot实践技术教程,共22个课时,需要的可回复邮箱。 课程简介 day1 01springboot简介-曾经开发中的问题 02springboot解决的问题-优势以及弊端 03springboot环境准备 04spring...

小小倾听
2018/12/06
0
0
白俊遥/thinkphp-bjyadmin

创建 QQ 群及捐赠渠道 链接 博客:http://baijunyao.com github:https://github.com/baijunyao/thinkphp-bjyadmin oschina:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin 简介 使......

白俊遥
2016/06/30
0
0
玩转springboot:整合mybatis实例

这篇文章讲解一下springboot整合mybatis,其实,springboot整合mybatis和springmvc整合mybatis并没有什么太大的区别,大体上还是差不多哦,只是比springmvc更加的简单一点,下面我们就以一个...

java知识分子
2018/10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

搭建tftp服务

前言: 最近整理一些以前的学习笔记。 过去都是存储在本地,此次传到网络留待备用。 TFTP服务: TFTP:Trivial File Transfer Protocol 不重要文件传输协议 主要用来传送小文件,不支持认证和...

迷失De挣扎
今天
3
0
rest 的理解

rest:表现层状态转移。 什么是restful协议?https://en.wikipedia.org/wiki/Representational_state_transfer 使用restful的好处。 Rest是一种体系结构样式,他定义了一组用于创建web服务的...

xiaoxiao_go
今天
5
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的增强,该类提供了一些功能,优化了读锁、写锁的访问,同时使读写锁之间可以互相转换,更细粒度控...

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

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

天王盖地虎626
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部