问题导读
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. Java 8 中如何优雅的处理集合

    Java 8 中如何优雅的处理集合(Stream API) 在Java中,集合和数组是我们经常会用到的数据结构,需要经常对他们做增.删.改.查.聚合.统计.过滤等操作.相比之下,关系型数据库中也同样有 ...

  2. Spring Boot 开发集成 WebSocket,实现私有即时通信系统

    1/ 概述 利用Spring Boot作为基础框架,Spring Security作为安全框架,WebSocket作为通信框架,实现点对点聊天和群聊天. 2/ 所需依赖 Spring Boot 版本 ...

  3. PHP 调用qq邮箱接口

    html代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...

  4. 去掉shiro登录时url里的JSESSIONID https://blog.csdn.net/aofavx/article/details/51701012

    经过查找论坛和分析源码,确认了是在ShiroHttpServletResponse里加上的. 因此继承ShiroHttpServletResponse类,覆盖相应方法,再重写 ShiroFilterF ...

  5. DBCP连接池和事物

    工具类案例 public static final String DRIVER = "com.mysql.jdbc.Driver"; public static final Str ...

  6. 基本sql语法

    SQL 语句主要可以划分为以下 3 个类别. DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段.数据库.表.列.索引等数据库对象的定义.常用 ...

  7. C#判断网址的可访问性

    /// <summary> /// 判断网址是否可以访问 /// </summary> /// <param name="Url"></p ...

  8. window端口被占用

    一.问题描述 今天一来公司,在IntelliJ IDEA 中启动Tomcat服务器时就出现了如下图所示的错误: 错误: 代理抛出异常错误: java.rmi.server.ExportExceptio ...

  9. MVC案例之通过配置切换底层存储源(面向接口)

    1.深入理解面向接口编程: 在类中调用接口的方法,而不必关心具体的实现.这将有利于代码的解耦.使程序有更好的可移植性 和可扩展性 动态修改 Customer 的存储方式:通过修改类路径下的 switc ...

  10. SpringBoot的 HelloWorld

    SpringBoot HelloWorld 功能需求 ​ 浏览器发送hello请求,服务器接收请求并处理,相应HelloWorld字符串 1.创建一个maven工程:(jar) 2.导入SpringB ...