问题导读
1.你认为Apache Phoenix与HBase的关系是什么?
2.Phoenix安装需要哪些软件?
3.如何部署Phoenix?

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 Phoenix takes your SQL versioned, such that snapshot queries over prior versions will automatically use the correct performance on the order of milliseconds for small queries, or seconds for tens of millions of rows.
Apache Phoenix是构建在HBase之上的关系型数据库层,作为内嵌的客户端JDBC驱动用以对HBase中的数据进行低延迟访问。Apache Phoenix会将用户编写的sql查询编译为一系列的scan操作,最终产生通用的JDBC结果集返回给客户端。数据表的元数据存储在HBase的表中被会标记版本号,所以进行查询的时候会自动选择正确的schema。直接使用HBase的API,结合协处理器(coprocessor)和自定义的过滤器的话,小范围的查询在毫秒级响应,千万数据的话响应速度为秒级。

Phoenix在Hadoop生态系统中的位置

Phoenix官网

#########################################################

1. 说明
本篇主要介绍Phoenix的安装部署。系统环境如下:

  • Centos-6.4 (64-bit)
  • Jdk-1.7.0_75
  • Hadoop-2.5.0-cdh5.2.0
  • Zookeeper-3.4.5-cdh5.2.0
  • Hbase-0.98.6-cdh5.2.0
  • Solr-4.4.0-cdh5.2.0
  • Hbase-solr-1.5-cdh5.2.0
  • Sqoop-1.4.5-cdh5.2.0
  • Sqoop2-1.99.3-cdh5.2.0
  • Hive-0.13.1-cdh5.2.0
  • Flume-ng-1.5.0-cdh5.2.0

2. 下载

从官网下载安装包

这里需要注意不同版本的phoenix与HBase的兼容性

我目前使用的HBase版本为hbase-0.98.6-cdh5.2.0,因此下载phoenix4.x的

上面的下载地址是镜像地址,如果不可用的话可以从下载选择其他镜像地址

3. 安装

安装过程参考官网链接

3.1 上传部署

将phoenix-4.2.2-bin.tar.gz上传到服务器解压重命名为phoenix-4.2.2,【PHOENIX_HOME】为【/usr/local/cdh-5.2.0/phoenix-4.2.2】

3.2 拷贝jar包

将【PHOENIX_HOME】目录下的phoenix-[version]-server.jar添加到HBase集群的所有regionserver节点的lib目录下(use phoenix-core-[version].jar for Phoenix 3.x),然后重启HBase集群。

3.3 连接HBase

进入【PHOENIX_HOME/bin】目录下启动客户端进入CLI界面,执行如下命令连接HBase集群。
$ ./sqlline.py 192.168.187.128,192.168.187.129,192.168.187.130:2181

高能预警:这里的192.168.187.128,192.168.187.129,192.168.187.130参数是HBase集群zookeeper集群的ip地址,2181是zookeeper端口号。

查看当前所有表
> !tables


高能预警:CATALOG、SEQUENCE、STATS这三张表是系统自带的表。HBase中已存在的表不会自动映射过来,需要手动创建相同结果的数据表,具体过程后面会说到。
从HBase的CLI界面查看是否同样多出这三张表
> list


安装成功。

问题导读

1.Phoenix插入数据,使用哪个关键字?
2.Phoenix更新数据是否与关系数据库语句相同?

1. 说明

本篇主要介绍在phoenix的CLI中进行简单的CRUD操作。phoenix中支持的命令如下:

详细的命令语法参考官网说明

http://phoenix.apache.org/language/index.html

2. CURD

在CLI中进行创建表、插入数据、查询数据、更新数据、删除数据、删除表的操作。

2.1 创建表
创建user数据表

CREATE TABLE user (id varchar PRIMARY KEY,account varchar ,passwd varchar);
高能预警:Phoenix会自动将表名和字段名转换为大写字母,如果不想转换的话可以使用双引号括起来
进入HBase的CLI界面查看user表是否被创建成功
list

查看USER表结构

describe 'USER'

从上图得知,默认列族为0,id主键字段对应到hbase的ROW字段。
高能预警:如果想指定列族与列的话使用如下语句建表
CREATE TABLE user (id varchar PRIMARY KEY,INFO.account varchar ,INFO.passwd varchar);

2.2 插入数据

插入数据到user表中,这里的命令与RDBMS中插入数据语法稍有差别。upsert

 upsert into user(id, account, passwd) values('', 'admin', 'admin');

2.3 查询数据

查询user表中数据

select * from user;

2.4 更新数据

更新数据的语法与插入数据相同。

upsert into user(id, account, passwd) values('', 'admin', 'dimensoft');

2.5 删除数据

删除id为001的数据

delete from user where id='';

2.6 删除表

删除user数据表

drop table user;

以上就是在phoenix的CLI界面中进行简单的CRUD操作,基本上与RDBMS的操作没有太大区别,上手也比较容易。

Phoenix入门到实战(一)的更多相关文章

  1. 赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】

    最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 ...

  2. docker-9 supervisord 参考docker从入门到实战

    参考docker从入门到实战 使用 Supervisor 来管理进程 Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务.但我们经常需要在一个机 ...

  3. webpack入门和实战(一):webpack配置及技巧

    一.全面理解webpack 1.什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都 ...

  4. CMake快速入门教程-实战

    http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/ http://blog.csdn.net/dbzhang800/article/detai ...

  5. Sping Boot入门到实战之入门篇(三):Spring Boot属性配置

    该篇为Sping Boot入门到实战系列入门篇的第三篇.介绍Spring Boot的属性配置.   传统的Spring Web应用自定义属性一般是通过添加一个demo.properties配置文件(文 ...

  6. Sping Boot入门到实战之入门篇(二):第一个Spring Boot应用

    该篇为Spring Boot入门到实战系列入门篇的第二篇.介绍创建Spring Boot应用的几种方法. Spring Boot应用可以通过如下三种方法创建: 通过 https://start.spr ...

  7. Sping Boot入门到实战之入门篇(一):Spring Boot简介

    该篇为Spring Boot入门到实战系列入门篇的第一篇.对Spring Boot做一个大致的介绍. 传统的基于Spring的Java Web应用,需要配置web.xml, applicationCo ...

  8. Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置

    该篇为Sping Boot入门到实战系列入门篇的第四篇.介绍Spring Boot自动化配置的基本原理与实现.   Spring Boot之所以受开发者欢迎, 其中最重要的一个因素就是其自动化配置特性 ...

  9. Sping Boot入门到实战之实战篇(一):实现自定义Spring Boot Starter——阿里云消息队列服务Starter

    在 Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置 这篇中,我们知道Spring Boot自动化配置的实现,主要由如下几部分完成: @EnableAutoConfigu ...

随机推荐

  1. BZOJ 1084DP

    1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2796  Solved: 1391[Submit][Sta ...

  2. C# 使用RestClient 调用接口

    最近做项目使用RestClient 向第三方接口推送数据.不废话直接贴代码 /// <summary> /// 获取Token /// </summary> /// <r ...

  3. layui 数据表格使用

    //第一个实例 table.render({ elem: '#demo' ,height: 400 ,url: '/My_NewsTest/LookServlet' //数据接口 ,page: tru ...

  4. DBUtils 使用方法

    导包  jar  DBUtils.jar QueryRunner中提供对sql语句操作的API. update(Connection conn, String sql, Object... param ...

  5. C#不定长参数

    Test(5,6,7,8,9,10); void Test(int sd, params int[] arr)//不定长参数前要加params { for(int i = 0 ; i < arr ...

  6. 【JavaScript数据结构系列】00-开篇

    [JavaScript数据结构系列]00-开篇 码路工人 CoderMonkey 转载请注明作者与出处 ## 0. 开篇[JavaScript数据结构与算法] 大的计划,写以下两部分: 1[JavaS ...

  7. 关于zabbix利用snmp协议从交换机获取的端口带宽数据的概念问题

    关于zabbix利用snmp协议从交换机获取的端口带宽数据的概念问题:使用端口OID号获得的数据实际是即时的端口总数据量,而在计算带宽时,需要选择一个时间段,在时间段的结束点获得的总数据量减去在时间段 ...

  8. Java实现 LeetCode 678 有效的括号字符串(暴力+思路转换)

    678. 有效的括号字符串 给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串.有效字符串具有如下规则: 任何左括号 ( 必须有相应的右括号 ). 任何右括号 ...

  9. Java实现 蓝桥杯 算法训练 关联矩阵

    算法训练 关联矩阵 时间限制:1.0s 内存限制:512.0MB 提交此题 问题描述 有一个n个结点m条边的有向图,请输出他的关联矩阵. 输入格式 第一行两个整数n.m,表示图中结点和边的数目.n&l ...

  10. Java实现 蓝桥杯VIP 基础练习 字符串对比

    问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...