HBase跨地区机房的压测小程序——从开发到打包部署(图文版)

简介:

今天做了一个跨地区机房的压测小程序,主要的思路就是基于事先准备好的rowkey文件,利用多线程模拟并发的rowkey查询,可以实现并发数的自由控制。主要是整个流程下来,遇到了点打包的坑,所以特意记录下。

编写代码

rowkey文件的准备就不说了。首先是HbaseClient的查询接口,由于创建连接的代价很重,因此这里采用HBase的ConnectionFactory工厂:

static {
    try {
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.property.clientPort", "2181");
        conf.set("hbase.zookeeper.quorum", "此处不可描述");
        connection = ConnectionFactory.createConnection(conf);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private static Table getTable(String table) throws IOException {
    return connection.getTable(TableName.valueOf(table));
}

查询的时候直接使用get Api即可:

try (Table tab = getTable(table)) {
    Get get = new Get(Bytes.toBytes(key));
    Cell cell = tab.get(get).getColumnLatestCell(COLUMN_FAMILY, Bytes.toBytes(field));
    column = Bytes.toString(CellUtil.cloneValue(cell));
} catch (Exception e) {
    logger.error("查询请求出错:" + e.getMessage());
}

为了模拟并发,我这边直接使用了Fixed线程池,并且基于java8的lambda表达式创建线程池:

ExecutorService fixedThreadPool = Executors.newFixedThreadPool(100);
for(String line : lines){
    fixedThreadPool.execute(() -> {
         Long start = System.currentTimeMillis();
         // ... todo ... 我这里只想统计一下平均的访问时间,所以就简单的做减法就行了
         Long end = System.currentTimeMillis();
         System.out.println(end-start);
     });
}

基于Idea打包

整体的项目结构大致如下:

点击project structure

点击add-->jar-->from models with dependencies...

选择对应的资源文件加入到打包路径中

点击build-->build artifacts-->build进行打包

观察文件MANIFEST.MF可以看到里面包含的内容:

Manifest-Version: 1.0
Class-Path: commons-beanutils-core-1.8.0.jar netty-all-4.0.23.Final.ja
 r hadoop-auth-2.5.1.jar snappy-java-1.0.4.1.jar protobuf-java-2.5.0.j
 ar jcodings-1.0.8.jar hadoop-yarn-common-2.5.1.jar httpclient-4.2.5.j
 ar commons-math3-3.1.1.jar commons-lang-2.6.jar findbugs-annotations-
 1.3.9-1.jar jaxb-api-2.2.2.jar slf4j-api-1.6.1.jar commons-el-1.0.jar
  commons-beanutils-1.7.0.jar commons-collections-3.2.2.jar commons-ht
 tpclient-3.1.jar commons-io-2.4.jar avro-1.7.4.jar hamcrest-core-1.3.
 jar hbase-client-1.3.1.jar slf4j-log4j12-1.6.1.jar commons-logging-1.
 2.jar hadoop-yarn-api-2.5.1.jar hbase-protocol-1.3.1.jar netty-3.6.2.
 Final.jar commons-configuration-1.6.jar hadoop-annotations-2.5.1.jar 
 jackson-core-asl-1.9.13.jar paranamer-2.3.jar junit-4.12.jar metrics-
 core-2.2.0.jar jsr305-1.3.9.jar stax-api-1.0-2.jar hadoop-common-2.5.
 1.jar commons-compress-1.4.1.jar apacheds-i18n-2.0.0-M15.jar api-asn1
 -api-1.0.0-M20.jar jackson-mapper-asl-1.9.13.jar commons-codec-1.9.ja
 r xz-1.0.jar htrace-core-3.1.0-incubating.jar activation-1.1.jar hado
 op-mapreduce-client-core-2.5.1.jar commons-net-3.1.jar commons-digest
 er-1.8.jar hbase-annotations-1.3.1.jar jsch-0.1.42.jar commons-cli-1.
 2.jar xmlenc-0.52.jar httpcore-4.2.4.jar joni-2.1.2.jar api-util-1.0.
 0-M20.jar apacheds-kerberos-codec-2.0.0-M15.jar log4j-1.2.17.jar jett
 y-util-6.1.26.jar guava-12.0.1.jar zookeeper-3.4.6.jar hbase-common-1
 .3.1.jar
Main-Class: Test

我们需要的文件就都保存在/project_home/out目录下了,

传输到远程服务器

首先进入对应的out目录,执行下面的命令:

tar -cvf hbase_test.tar hbase_test_jar

使用scp命令拷贝到远程服务器:

scp hbase_test.tar xingoo@hnode10:/home/xingoo/

登录到远程服务器,解压:

tar -xvf hbase_test.tar

进入对应的目录直接执行jar包:

java -jar hbase-test.jar

结果200ms还可以接受吧...

本文转自博客园xingoo的博客,原文链接:HBase跨地区机房的压测小程序——从开发到打包部署(图文版),如需转载请自行联系原博主。
相关文章
|
1月前
|
人工智能 小程序 前端开发
一个小程序轻量AR体感游戏,开发实现解决方案
针对青少年运动兴趣不足问题,AR体感游戏凭借沉浸式互动体验脱颖而出。结合小程序“AI运动识别”插件与WebGL渲染技术,可实现无需外设的轻量化AR健身游戏,如跳糕、切水果等,兼具趣味性与锻炼效果,适用于儿童健身及职工团建,即开即玩,低门槛高参与。
|
28天前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?哪个好
小程序的开发方式丰富多元,开发团队可根据自身的技术背景、项目具体需求以及资源状况,灵活挑选最为适宜的开发路径。以下将详细介绍几种主流的小程序开发方式。
214 1
|
1月前
|
运维 小程序 数据可视化
小程序开发平台有哪些?SaaS小程序制作平台哪个好
小程序开发模式详解:自主开发、SaaS小程序制作平台与外包全对比 选择合适的小程序开发模式,是项目成功的基石。这三种模式在成本、周期、控制力和灵活性上各有千秋,适用于不同阶段和不同类型的企业。下面我们将逐一深入剖析。
237 7
|
1月前
|
移动开发 小程序 前端开发
小程序快速开发平台有哪些?
小程序开发并非“一刀切”,需结合技术储备、资金预算、时间规划及功能需求等多维度因素综合考量。以下为您详细拆解五种主流开发方案及其适用场景,助您精准匹配开发路径。
159 3
|
1月前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?小程序开发制作软件推荐
小程序开发方案全解析:5种主流方式与选择指南 小程序开发需根据技术能力、预算、时间及功能需求综合决策。以下为5种主流开发方案及适用场景分析:
343 0
|
3月前
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
167 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
|
6月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1387 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
7月前
|
监控 前端开发 小程序
陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
721 12

热门文章

最新文章