阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache Phoenix部署和测试

451次阅读
没有评论

共计 4918 个字符,预计需要花费 13 分钟才能阅读完成。

Apache Phoenix 是一个 HBase 的开源 SQL 引擎。你可以使用标准的 JDBCAPI 代替 HBase 客户端 API 来创建表,插入数据,查询你的 HBase 数据。

为了你更好更快地了解 Apache Phoenix,官方给出了 15 分钟快速了解 Apache Phoenix 的文档说明:http://phoenix.apache.org/Phoenix-in-15-minutes-or-less.html

1.      不要在我的程序和 HBase 之间增加额外的层,它只会拖慢速度的?

事实上,不会。Phoenix 通过以下方式实现了比你自己手写的方式相同或者可能是更好的性能(更不用说可以少写了很多代码):

* 编译你的 SQL 查询为原生 HBase 的 scan 语句 

* 检测 scan 语句最佳的开始和结束的 key 

* 精心编排你的 scan 语句让他们并行执行 

* 移动计算到数据的地方,而不是移动数据

* 推送你的 WHERE 子句的谓词到服务端过滤器处理 

* 执行聚合查询通过服务端钩子(称为协同处理器)

除此之外,我们还做了一些有趣的增强功能来更多地优化性能:

* 实现了二级索引来提升非主键字段查询的性能 

* 统计相关数据来提高并行化水平,并帮助选择最佳优化方案 

* 跳过扫描过滤器来优化 IN,LIKE,OR 查询 

* 可选的散布行键来均匀分布写压力

2.      好吧,它很快。但是为什么要用 SQL?这已经是 70 年代的东西了。

一种观点是:给大伙儿一些他们已经熟悉的东西吧。什么是更好的方式去激励他们使用 HBase 呢?最好的方式就是使用 JDBC 和 SQL,原因有以下几点:

* 降低用户需要写的代码数量 

* 让性能优化对用户透明 

* 方便利用和整合大量的已经存在的工具

3.      但是怎样才能让 SQL 支持我最喜爱的 HBase 的某些技术

不要把这 (使用 Phoenix 后) 当作是你见 HBase 的最后一次好吧?SQL 只是一种表达你想实现的功能的方式,你不必去思考怎样用 SQL 去实现功能。针对目前已经存在或者正在做的 Phoenix 功能,看看能否支持你喜欢的 HBase 的特殊用法。你有自己的想法?我们很乐意听到你的想法:把问题写下来给我们同时也可以加入我们的邮件列表。

说了这么多,我只是想知道如何开始?

非常棒!只要跟随我们的安装指南(我的 HBase 集群环境的版本号为:hbase-1.1.5): 

* 下载并解压我们的安装包 (apache-phoenix-4.8.0-HBase-1.1-bin.tar.gz)

tar -zxvf apache-phoenix-4.8.0-HBase-1.1-bin.tar.gz

 

* 拷贝能够与你的 HBase 安装兼容的 phoenix 的服务端 jar 包到每个集群节点的 lib 目录 

cp phoenix-4.8.0-HBase-1.1-server.jar  /var/lib/kylin/hbase-1.1.5/lib/

再拷贝到集群的每个 HBase 节点的 lib 目录下面:

scp phoenix-4.8.0-HBase-1.1-server.jar kylin@SZB-L0023776:/var/lib/kylin/hbase/lib

scp phoenix-4.8.0-HBase-1.1-server.jar kylin@SZB-L0023777:/var/lib/kylin/hbase/lib

scp phoenix-4.8.0-HBase-1.1-server.jar kylin@SZB-L0023778:/var/lib/kylin/hbase/lib

scp phoenix-4.8.0-HBase-1.1-server.jar kylin@SZB-L0023779:/var/lib/kylin/hbase/lib

 

* 重启你的集群节点 

stop-hbase.sh

start-hbase.sh

 

* 添加 phoenix 的客户端 jar 包到你的 HBase 客户端的 classpath 下 

* 下载并设置 SQuirrel 作为你的 SQL 客户端,这样你就可以发起即时查询的 SQL 语句来操作你的 HBase 集群

 

4.      我不想要下载安装其他东西了!

好吧,有道理。你可以创建你自己的 SQL 脚本并使用我们的命令行工具来执行他们(来代替前面说的下载安装软件的方案)。现在让我们来看一个例子。

定位到你安装 Phoenix 路径的 bin 目录来开始。

4.1   首先,让我们来创建一个 us_population.sql 文件,包含如下建表的语句

CREATE TABLE IF NOT EXISTS  us_population (

    state CHAR(2) NOT NULL,

    city VARCHAR NOT NULL,

    population BIGINT

    CONSTRAINT my_pk PRIMARY KEY (state, city)

);

 

4.2   再创建一个 us_population.csv 文件,包含表的数据

NY,New York,8143197

CA,Los Angeles,3844829

IL,Chicago,2842518

TX,Houston,2016582

PA,Philadelphia,1463281

AZ,Phoenix,1461575

TX,San Antonio,1256509

CA,San Diego,1255540

TX,Dallas,1213825

CA,San Jose,912332

 

4.3   最后我们创建一个 us_population_queries.sql 文件,包含一个查询 SQL

SELECT state as”State”, count(city) as “City Count”,sum(population) as “Population Sum”

FROM us_population

GROUP BY state

ORDER BY sum(population)  DESC;

 

4.4   通过命令行执行具体的操作

注:我这里指定了 HBase 在 Zookeeper 上的完整连接,包括 IP 地址,端口号以及 znodeparent,如果不指定 znode parent 的话,默认为 /hbase 节点。

[kylin@SZB-L0023780bin]$ ./psql.py SZB-L0023780:2181:/hbase114 us_population.sql  us_population.csv  us_population_queries.sql

no row supserted

Time: 2.845sec(s)

 

csv columns from database.

CSV Upsert complete. 10 rows upserted

Time: 0.129sec(s)

 

St              City Count      Population Sum

— ————–  ————————-  ————————-

NY                    1         8143197

CA                   3        6012701

TX                   3        4486916

IL                     1         2842518

PA                    1        1463281

AZ                    1        1461575

Time: 0.077sec(s)

       

可以看到你已经创建了你的第一个 Phoenix 表了,插入数据进去,并且执行了一个只有几行数据的聚合查询 SQL 代码。

 

4.5   性能测试脚本 performance.py

[kylin@SZB-L0023780 bin]$ ./performance.py

Performance script arguments notspecified. Usage: performance.sh <zookeeper> <row count>

Example: performance.sh localhost100000

 

我们测试 1 千万条数据,查看性能如下:

 

执行的过程中,会创建一张表名为 PERFORMANCE_10000000 的 HBase 表,并插入 1 千万条记录,然后执行一些查询操作。

[kylin@SZB-L0023780 bin]$ ./performance.py SZB-L0023780:2181:/hbase114 10000000

Phoenix Performance Evaluation Script 1.0

—————————————–

Creating performance table…

no rows upserted

Time: 2.343 sec(s)

 

Query # 1 – Count – SELECT COUNT(1) FROM PERFORMANCE_10000000;

Query # 2 – Group By First PK – SELECT HOST FROM PERFORMANCE_10000000 GROUP BY HOST;

Query # 3 – Group By Second PK – SELECT DOMAIN FROM PERFORMANCE_10000000 GROUP BY DOMAIN;

Query # 4 – Truncate + Group By – SELECT TRUNC(DATE,’DAY’) DAY FROM PERFORMANCE_10000000 GROUP BY TRUNC(DATE,’DAY’);

Query # 5 – Filter + Count – SELECT COUNT(1) FROM PERFORMANCE_10000000 WHERE CORE<10;

 

Generating and upserting data…

 

csv columns from database.

CSV Upsert complete. 10000000 rows upserted

Time: 565.593 sec(s)

                                COUNT(1)

—————————————-

                                10000000

Time: 8.206 sec(s)

 

HO

CS

EU

NA

Time: 0.416 sec(s)

 

DOMAIN                                 

—————————————-

Apple.com                               

Google.com                             

Salesforce.com                         

Time: 13.134 sec(s)

 

DAY                   

———————–

2016-08-30 00:00:00.000

2016-08-31 00:00:00.000

2016-09-01 00:00:00.000

2016-09-02 00:00:00.000

2016-09-03 00:00:00.000

2016-09-04 00:00:00.000

……

2016-12-18 00:00:00.000

2016-12-19 00:00:00.000

2016-12-20 00:00:00.000

2016-12-21 00:00:00.000

2016-12-22 00:00:00.000

2016-12-23 00:00:00.000

2016-12-24 00:00:00.000

Time: 12.852 sec(s)

 

                                COUNT(1)

—————————————-

                                 200745

Time: 11.01 sec(s) 

如果你想统计 HBase 的表总共有多少行记录,不要使用 HBase 的 count 命令统计,单线程,性能太差;而是使用 MapReduce 去计算,如下:

hbase org.apache.Hadoop.hbase.mapreduce.RowCounter  ‘PERFORMANCE_10000000’

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149399.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4918字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7959237
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...