专栏首页搜云库使用 Phoenix-4.11.0连接 Hbase 集群 ,并使用 JDBC 查询测试

使用 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

Hadoop-2.7.4 集群快速搭建

HBase

HBase-1.3.1 集群搭建

安装

下载解压

在 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;

JDBC 测试

github-源码:https://github.com/souyunku/ymq-example/tree/master/ymq-example/ymq-apache-phoenix

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

如果有报错,请参考,反正我是没报错 http://www.cnblogs.com/huxinga/p/6875929.html

Contact

  • 作者:鹏磊
  • 出处:http://www.ymq.io
  • Email:admin@souyunku.com
  • 版权归作者所有,转载请注明出处
  • Wechat:关注公众号,搜云库,专注于开发技术的研究与知识分享

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 大数据平台搭建 Hadoop-2.7.4 + Spark-2.2.0 快速搭建

    Apache Spark 简介 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (...

    搜云库
  • Hadoop-2.7.4 集群快速搭建

    Hadoop简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力...

    搜云库
  • ElasticSearch 安装报错整理

    ElasticSearch 安装报错整理 单机安装报错 初次启动服务 /opt/elasticsearch-5.5.2/bin/elasticsearch 当使...

    搜云库
  • 基于Kotlin的委托机制实现一个对Extra、SharedPreferences操作的库

    本文介绍的库,github地址:https://github.com/fengzhizi715/SAF-Object-Delegate

    fengzhizi715
  • 零基础学单片机C语言程序设计 第2版 - 赵建领 & 薛园园

    单片机C51语言是目前最流行的单片机程序设计语言。本书由浅入深,循序渐进地讲解了C51语言的方方面面。本书知识点覆盖全面、结构安排紧凑、讲解详细、言简意赅、通俗...

    用户3157710
  • 实验4 差异可视化

    步行者08
  • 二分查找算法速记

    二分查找(英语:binary search),也称折半搜索(英语:half-interval search)对数搜索(英语:logarithmic search...

    KevinYan
  • 智慧建筑直采系统引领建筑行业全新采购模式发展

    当前国内疫情已逐渐得到较好控制,新增病例占比持续下降。在各地区一边严抓防疫防控、一边稳固经济发展助推企业复工复产的共同努力下,我国开始进入复工高峰期。各地区亦纷...

    全球共德
  • 2018 年初值得关注的 25 个新 Android 库和项目

    协作翻译 原文:25 new Android libraries and projects to check at the beginning of 2018 ...

    企鹅号小编
  • PoisonCake(毒蛋糕):内置于手机ROM的恶意代码模块

    AVL移动安全团队近日联合LBE发现一款内置于手机ROM的恶意代码模块。由于该恶意代码作者将此恶意模块运行释放的模块称为“Cake”,所以我们将其命名为“Poi...

    FB客服

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动