欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jmeter查询非关系型数据库Hbase

程序员文章站 2022-03-06 17:39:21
...

如何使用JMeter加载测试HBase
在本文中,我们将研究如何在不进行编码的情况下使用Apache JMeter™加载测试HBase 。

什么是HBase?

HBase是NoSQL数据库,可提供对大型数据集(例如1000个基因组的数据集)的实时读写访问。HBase与Hadoop本机集成。Hadoop是具有MapReduce机制的分布式文件系统。HDFS(Hadoop分布式文件系统)使您能够以分布式和冗余方式存储大量数据。该分发提供了更快的读/写访问权限,而冗余提供了更好的可用性。另外,由于存储数据的节点分布,我们需要一个协调服务,在本例中为Zookeeper。

因此,HBase在HDFS文件存储之上存储大型数据集,并将聚合和分析HBase表中存在的数十亿行。例如,HBase可以用于社交网络应用程序,例如用户位置的实时数据更新。

如果您对HBase不太了解,可以在此处查看其词汇表。为了进行演示,我们将以伪分布式模式在Ubuntu上部署HBase 。这就像正常的分布式模式,但是它允许您将所有内容部署在一台计算机上,例如,以测试配置。可以在此处找到安装说明。

在JMeter中,要为HBase创建负载,有一个Hadoop Set插件,您可以使用插件管理器进行安装。这个插件有6个元素,我们将在下面进行研究。

HBase连接配置

jmeter查询非关系型数据库Hbase
要添加它:右键单击Test Plan-> Config元素-> jp @ gc-HBase连接配置
此Config元素用于配置与数据库的连接。
连接名称是从数据库获取信息时将使用的名称。
Zk主机是我们的协调服务的地址:Zookeeper服务器。

HDFS操作取样器

jmeter查询非关系型数据库Hbase
要添加它:右键单击线程组->采样器-> jp @ gc-HDFS操作采样器
该采样器旨在将文件复制到HDFS存储。
Namenode是Hadoop Namenode的地址,默认端口为8020。
输入文件的目标位置是文件的路径,我们要将其放置在HDFS存储中。
Ø 本安输出的HDFS目的地是HBase的存储路径。

响应将显示文件的名称以及将文件复制到的位置。
jmeter查询非关系型数据库Hbase

Hadoop Job Tracker采样器

jmeter查询非关系型数据库Hbase
要添加它:右键单击线程组->采样器-> jp @ gc-Hadoop Job Tracker采样器
该采样器可用于通过ID和组名获取作业或任务计数器和统计信息,例如读取记录,已处理记录或作业进度。
mapred.job.tracker是jobtracker网址,默认端口为8082。
作业ID是目标作业的ID。作业名称也可以使用。
作业计数器组是一个可选字段,用于通过提供作业ID和组名选项来检索作业计数器。
职位统计/任务统计是我们想要获取的信息以及获取方式。
结果是带有必要信息的XML消息。
jmeter查询非关系型数据库Hbase

HBase CRUD采样器

jmeter查询非关系型数据库Hbase

Hadoop负载测试指南
要添加它:右键单击线程组->采样器-> jp @ gc-HBase CRUD采样器
该采样器通过HBase提供CRUD(创建/更新/读取/删除)操作。基本上,我们可以使用此采样器对数据库执行添加/更新/删除操作。对于此博客文章,我们需要使用Hbase Rowkey Sampler或HBase Scan Sampler。
hbase.zookeeper.quorum是zookeeper的地址。如果立即安装了Hbase,则可以在conf / hbase-default.xml文件中找到所有地址的列表;如果要测试已配置的Hbase,则可以在conf / hbase-site.xml文件中找到所有地址的列表。
Hbase源表/行键是特定记录的表/行键的名称。
操作正在选择要应用的操作和列。
如果 选中了操作 模式,则可以对选择中的最后一个元素执行操作。

HBase扫描取样器

jmeter查询非关系型数据库Hbase
要添加:右键单击线程组->采样器-> jp @ gc-HBase扫描采样器
扫描采样器用于从HBase表中检索带有rowKey或过滤器的单/多条记录。
连接 名称是HBase连接配置中的名称
表格是我们要扫描的表格的名称
start rowKey / end rowKey是搜索记录的时间间隔。这些是可选字段。
限制是返回记录的限制;
过滤器是用于搜索的过滤器。过滤器应以换行符分隔,并以以下格式显示:{column_family}:{qualifier} {= | != | <| > | <= | > =} {value}

例如,我们有2条以下记录:

jmeter查询非关系型数据库Hbase
然后,我们可以使用“ Order:P> 400”过滤器来检索这两行,或者使用“ CustomerName:FN = John”来仅检索第一行。

HBase行键采样器

jmeter查询非关系型数据库Hbase
要添加它:右键单击线程组->采样器-> jp @ gc-HBase RowKey采样器
RowKey采样器用于通过HBase表的rowKey读取特定记录。该采样器需要一个HBase连接配置来像HBase扫描采样器一样设置连接。
连接 名称是HBase连接配置中的名称。
Table / RowKey是特定记录的表/ rowKey的名称。
如果 选中“ 检索最近的记录”,则只会得到最后创建的记录
如果选中了为每一行创建变量, JMeter将立即将结果写入JMeter变量中,以供以后在脚本中使用。

测试所需的其他要素

该脚本将取决于您当前正在测试的内容,但是在所有情况下,您都将需要其他元素。您可以使用循环控制器或运行时控制器来创建循环,并使用CSV数据集配置来参数化请求。例如,用于测试记录到数据库的脚本将如下所示:
jmeter查询非关系型数据库Hbase

如果要避免作业失败,可以添加Response Assertion,它将检查响应正文。如果指示工作失败,则采样器将被标记为不成功。它看起来像这样:
jmeter查询非关系型数据库Hbase

性能说明

在任何生产环境中,HBase可以包含5000个以上的节点,只有Hmaster节点充当所有区域服务器的主服务器。如果Hmaster关闭,则整个群集将只能在很长一段时间后恢复。我们可以创建一个附加的主节点,但是只有一个是活动的。如果主Hmaster关闭,则第二个Hmaster的**将花费大量时间。因此,Hmaster节点是性能瓶颈,不应干扰其工作。
在HBase中,我们无法实现任何交叉数据和联接操作。实际上,我们可以使用MapReduce来实现联接操作,但这是一个非常困难且昂贵的操作,并且会占用大量资源和时间。因此,如果您的项目中有类似内容,请务必注意。
HBase的另一个不足是表中不能有多个索引元素-我们只有一个主键,它是rowKey列。因此,如果我们尝试通过多个字段或rowKey字段以外的内容进行搜索,则性能会降低。通过与Apache SOLR和Phoenix集成可以解决此问题,但是结果是我们的系统中将提供新的服务。
对于分布式集群环境,应安装更多服务器(例如NameNode,DataNode,ZooKeeper和Region Server的每台服务器)。在性能方面,它需要高内存的机器。因此,成本和维护也更高。
HBase是CPU和内存密集型设备,具有较大的顺序输入或输出访问权限,而Map Reduce作业主要是与固定内存绑定的输入或输出。与Map-reduce作业集成的HBase将导致不可预测的延迟。
您可能已经注意到,HBase与许多其他应用程序相关联,例如Hadoop,Zookeeper,Phoenix等。因此,在使用它们时,值得考虑它们的负载能力。毕竟,使用如此大量的服务,瓶颈可能不是HBase。
此外,对于HBase中的性能监视,您可以使用HTrace。通过使用此工具,您可以跟踪整个集群中的每个请求,并获取有关每个参与节点的信息。

Hadoop和HBase的新版本

如果您尝试将此插件与新版本的Hadoop(2.x +)结合使用,则会出现以下错误:服务器IPC版本9无法与客户端版本4通信。此插件可与Hadoop 1.2.1及更低版本一起使用,因为在Hadoop的更高版本中,某些库已更新和替换。结果,该插件无法与该应用程序的新版本进行交互,因为它使用了不再受支持的旧库(hadoop-core.jar)。

1.因此,您需要下载源代码并替换.pom文件中的一个依赖项:

<dependency>
   <groupId>org.apache.hadoop</groupId>
   <artifactId>hadoop-core</artifactId>
   <version>1.1.2</version>
</dependency>

具有以下依赖性:

<dependency>
   <groupId>org.apache.hadoop</groupId>
   <artifactId>hadoop-common</artifactId>
   <version>3.0.0</version>
</dependency>
<dependency>
   <groupId>org.apache.hadoop</groupId>
   <artifactId>hadoop-mapreduce-client-core</artifactId>
   <version>3.0.0</version>
</dependency>

库的版本应与您的Hadoop的版本匹配。

2.确定必要的依赖项,并将它们与hadoop-common和hadoop-mapreduce-client-core一起放在/ lib文件夹中。

3.在一个插件编译验证测试中实施缺少的方法,或者简单地删除测试(不推荐)。

4.编译jar并将其放在/ lib / ext文件夹中。

现在,您可以像上面显示的那样运行测试。

相关标签: 大数据测试