配置phoenix连接hbase_使用 Phoenix-4.11.0连接 Hbase 集群 ,并使用 JDBC 查询测试

什么是 Phoenix ?

Apache Phoenix 是运行在Hbase之上的高性能关系型数据库,通过Phoenix可以像使用jdbc访问关系型数据库一样访问hbase。

Phoenix,操作的表以及数据存储在hbase上。phoenix只需要和hbase进行表关联。然后在用工具进行一些读写操作。

可以把Phoenix 只看成一种代替Hbase语法的工具。虽然Java可以用jdbc来连接phoenix,然后操作hbase,但是在生产环境中,不可以用OLTP中。

phoenix在查询hbase时,虽然做了一些优化,但是延迟还是不小。所以依然用在OLAT中,在将结果返回存储下来。

准备工作

环境

JDK:1.8

Hadoop Release:2.7.4

centos:7.3

node1(master) 主机: 192.168.252.121

node2(salve) 从机: 192.168.252.122

node3(salve) 从机: 192.168.252.123

node4(ZooKeeper) 主机: 192.168.252.124

依赖环境

Hadoop

HBase

安装

下载解压

在 ndoe1 上操作

su hadoop

cd /home/hadoop/

wget https://mirrors.tuna.tsinghua.edu.cn/apache/phoenix/apache-phoenix-4.11.0-HBase-1.3/bin/apache-phoenix-4.11.0-HBase-1.3-bin.tar.gz

tar -zxvf apache-phoenix-4.11.0-HBase-1.3-bin.tar.gz

mv apache-phoenix-4.11.0-HBase-1.3-bin phoenix-4.11.0

配置 Phoenix

复制 JAR

进入 /phoenix-4.11.0 文件目录

cd /home/hadoop/phoenix-4.11.0/

把两个 jar 包 phoenix-4.11.0-HBase-1.3-client.jar,phoenix-core-4.11.0-HBase-1.3.jar 拷贝至 Hbase的/lib文件夹。

cp phoenix-4.11.0-HBase-1.3-client.jar /home/hadoop/hbase-1.3.1/lib/

cp phoenix-core-4.11.0-HBase-1.3.jar /home/hadoop/hbase-1.3.1/lib/

复制 base-site.xml

进入 Hbase conf配置目录

cd /home/hadoop/hbase-1.3.1/conf/

把 Hbase 的配置文件 base-site.xml拷贝至 Phoenix 根目录中的 /bin 文件夹下到此就完成了配置。

cp hbase-site.xml /home/hadoop/phoenix-4.11.0/bin

配置集群

复制节点

将 phoenix-4.11.0文件夹重打包后复制到其他子节点

cd /home/hadoop/

tar zcvf phoenix.tar.gz phoenix-4.11.0

scp phoenix.tar.gz hadoop@node2:/home/hadoop/

scp phoenix.tar.gz hadoop@node3:/home/hadoop/

在 node2,node3 节点解压

cd /home/hadoop/

tar -zxvf phoenix.tar.gz

进入 node2,node3 节点 phoenix-4.11.0 文件目录

cd /home/hadoop/phoenix-4.11.0/

把两个 jar 包 phoenix-4.11.0-HBase-1.3-client.jar,phoenix-core-4.11.0-HBase-1.3.jar 拷贝至 Hbase的/lib文件夹。

cp phoenix-4.11.0-HBase-1.3-client.jar /home/hadoop/hbase-1.3.1/lib/

cp phoenix-core-4.11.0-HBase-1.3.jar /home/hadoop/hbase-1.3.1/lib/

启动

cd /home/hadoop/phoenix-4.11.0/bin

./sqlline.py 192.168.252.124:2181

如果看到如下信息,证明,配置没毛病

Setting property: [incremental, false]

Setting property: [isolation, TRANSACTION_READ_COMMITTED]

issuing: !connect jdbc:phoenix:node4:2181 none none org.apache.phoenix.jdbc.PhoenixDriver

Connecting to jdbc:phoenix:node4:2181

17/09/21 13:58:09 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Connected to: Phoenix (version 4.11)

Driver: PhoenixEmbeddedDriver (version 4.11)

Autocommit status: true

Transaction isolation: TRANSACTION_READ_COMMITTED

Building list of tables and columns for tab-completion (set fastconnect to true to skip)...

92/92 (100%) Done

Done

sqlline version 1.2.0

0: jdbc:phoenix:node4:2181>

命令行测试

创建表

create table test (mykey integer not null primary key, mycolumn varchar);

增加,修改表数据

upsert into test values (1,'Hello');

upsert into test values (2,'www.ymq.io');

查询表数据

select * from test;

响应

+--------+-------------+

| MYKEY | MYCOLUMN |

+--------+-------------+

| 1 | Hello |

| 2 | www.ymq.io |

+--------+-------------+

2 rows selected (0.083 seconds)

删除表

drop table test;

常用命令

!tables #查看表

!exit #退出phoenix

create table、drop table、desc table

phoenix 语法

JDBC 测试

public static void main(String[] args) throws Throwable {

try {

Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");

//这里配置zookeeper的地址,可单个,多个(用","分隔)可以是域名或者ip

String url = "jdbc:phoenix:node4:2181";

Connection conn = DriverManager.getConnection(url);

Statement statement = conn.createStatement();

long time = System.currentTimeMillis();

ResultSet rs = statement.executeQuery("select * from test");

while (rs.next()) {

String myKey = rs.getString("MYKEY");

String myColumn = rs.getString("MYCOLUMN");

System.out.println("myKey=" + myKey + "myColumn=" + myColumn);

}

long timeUsed = System.currentTimeMillis() - time;

System.out.println("time " + timeUsed + "mm");

// 关闭连接

rs.close();

statement.close();

conn.close();

} catch (Exception e) {

e.printStackTrace();

}

}

响应

myKey=1myColumn=Hello

myKey=2myColumn=www.ymq.io

time 127mm

Contact

作者:鹏磊

版权归作者所有,转载请注明出处

Wechat:关注公众号,搜云库,专注于开发技术的研究与知识分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[置顶] Z-STACK之OSAL_Nv非易失性存储解读上

本章解读Z-STACK中关于Nv操作的源码,以及z-stack中Nv的使用! 在Z-STACK中Nv存储器主要用于保存网络的配置参数,如网络地址,使 系统在掉电重启仍然能读取一些参数,自动加入到原来的网络中,这样其网络地址没有…

ElementUI+Java实现搜索提示列表

效果 实现流程 首先我们需要在后端获取数据,我们可以根据name属性去模糊查询,返回Map类型的列表 然后将它返回给前端。 controller ApiOperation("根据关键字查询讲师名列表")GetMapping("list/name/{key}")public ResultVo sele…

CentOS7 搭建Pulsar 消息队列环境,CentOS(Linux)部署Pulsar,亲测成功,以及Python操作Pulsar实例驱动

在 最佳开源数据库与数据分析平台奖 中,之前曾连续两年入选的 Kafka 意外滑铁卢落选,取而代之的是新兴项目 Pulsar,Bossie Awards中对 Pulsar 点评如下:“Pulsar 旨在取代 Apache Kafka 多年的主宰地位。Pulsar在很多情况下提供了…

为什么要学python语言、学完有什么好处_学编程为什么首选Python?学完Python的优势有哪些?...

原标题:学编程为什么首选Python?学完Python的优势有哪些?Python 是一门更注重可读性和效率的语言,尤其是相较于 Java,PHP 以及 C 这样的语言,它的这两个优势让其在开发者中大受欢迎。正是由于 Python 易于上…

SpringSecurity +Jwt 实现权限管理

目录标题原理架构图demo的项目结构JwtTokenUtilRestAuthenticationEntryPoint 和 RestfulAccessDeniedHandlerMyUserDetailsServiceJwtAuthenticationTokenFilterSecurityConfigControllerPostman 测试为了方便,未采用是从数据库读取的方式。工具类都是别人那偷的&a…

FreeMarker_模板引擎_代码自动生成器_源码下载

首先我们先来认识一下Freemarker 1.what is the FreeMarker? 你可以到freemarker的官网上去,那里有很详细的介绍:http://freemarker.org/ 这里大概说一下:FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。 …

CentOS7 搭建Kafka消息队列环境,以及Python3操作Kafka Demo

Kafka适合什么样的场景? 它可以用于两大类别的应用: 构造实时流数据管道,它可以在系统或应用之间可靠地获取数据。 (相当于message queue)构建实时流式应用程序,对这些流数据进行转换或者影响。 (就是流处理,通过kafka stream topic和topi…

hive序列生成_常见的序列化框架及Protobuf原理

享学课堂作者:逐梦々少年转载请声明出处!上次我们详细的学习了Java中的序列化机制,但是我们日常开发过程中,因为java的序列化机制的压缩效率问题,以及序列化大小带来的传输的效率问题,一般很少会使用原生的…

Linux(CentOS 7)安装docker

此文转载:https://www.cnblogs.com/qgc1995/p/9553572.html,感谢原作者写出了这么棒的Docker部署文章。 我是虚拟机装的Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上(ubuntu下要linux内…

decode语句不能再嵌套_自学C++基础教程【流程控制语句】(for、while 、do while 语句 )...

for语句for语句是C语言所提供的一种功能广泛的循环语句。下图为for语句的标准形式:表达式1:通常用于给循环变量赋初值,一般是赋值表达式。表达式2:通常用于设立循环条件,一般为关系表达式或逻辑表达式。表达式3&#x…

CentOS 7 利用Docker搭建禅道系统

1,系统环境 a,操作系统 CentOS Linux release 7.6.1810 (Core) 64位 b,确保Docker环境已经安装,具体教程请看 CentOS 安装docker 禅道系统一键安装说明文档:http://www.zentao.net/book/zentaopmshelp/90.html …

centos7 docker删除端口映射_centos7安装docker,结合docker安装mysql,学习简单使用

需要快速安装centos7的可以结合上一遍文章vagrant结合virtualbox让你直接在cmd窗口操作linux系统centos7地址:https://www.toutiao.com/i6858180977164812811/?group_id6858180977164812811Docker先说一下个人理解:docker其实就是一个工具,镜…

MongoDB中关于64位整型存储解决方案

为什么80%的码农都做不了架构师?>>> 社区内一哥们smcboy 提出关于php中操作MongoDB存储整数问题,找到点资料花点时间翻译过来,是个很好的学习方式。红薯 那篇讨论我的修改回复,仍然没有更新可恶啊~!&#…

滑动窗口--单调队列

给定一个大小为 n≤106 的数组。 有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子: 该数组为 [1 3 -1 -3 5 3 6 7],k 为 3。 窗口位置 最小值…

CentOS7 源码编译安装MySQL8.0.15 shell脚本

使用MySQL8无需像MySQL5那样需要Boost依赖,和经过35-55分钟的等待编译完成,直接解压即可使用,方便快捷! 1,环境: 操作系统 CentOS Linux release 7.6.1810 (Core) 64位 服务器环境 “腾讯云”服务器…

切割图形_泉州泡沫景观字切割机厂家

泉州泡沫景观字切割机厂家 jz4rw0qv泉州泡沫景观字切割机厂家 巨源线条切割机同步带型结构合理、性能、精密度高、、操作简便、价格合理,比同行业同款机床更高,是原有同步带型泡沫切割机的替代产品。自动编程使用计算机利用配合切割机应用,只…

你的搜索其实很糟糕?

为什么80%的码农都做不了架构师?>>> 日期:2013-3-27 来源:GBin1.com 尽管你非常擅长搜索,但是很多时候搜索内容和你想要的并不吻合。事实上,用户体验专家Jakob Nielsen认为大多数人都非常的不擅长搜索。…

Element Tree型控件

效果 前端 <template><div class"app-container"><el-inputplaceholder"输入关键字进行过滤"、<! -- 双向绑定-- >v-model"filterText"></el-input><el-tree ref"tree":data"subjectList"…

快速根据注释生成接口文档网页工具——Apidoc的使用教程

环境&#xff1a; 操作系统 CentOS Linux release 7.6.1810 (Core) 64位 服务器环境 “腾讯云”服务器 1&#xff0c;安装Node.js的npm工具环境&#xff1a; 如有不懂&#xff0c;请看我的博客&#xff1a;CentOS7 源码编译安装NodeJS 最新版本 2&#xff0c;npm环境搭…

频段表_5G频段范围之:频段3.3GHz-4.2GHz (n77,n78)

本文版权归“5G通信(tongxin5g)”和5G哥所有&#xff0c;未经授权&#xff0c;请勿转载比起以前的移动通信网络&#xff0c;5G探索的新频谱范围包括&#xff1a;3.3GHz-4.2GHz&#xff0c;4.4GHz-5.0GHz&#xff0c;24.25-29.5 GHz今天主要看频段3.3GHz-4.2GHz在3GPP中&#xf…