压测实操--nnbench压测hdfs_namenode负载方案

九月7个月前技术文章410


本次压测使用nnbench对namenode负载进行性能测试。nnbench生成很多与HDFS相关的请求,给NameNode施加较大的压力,这个测试能在HDFS上创建、读取、重命名和删除文件操作。

对应nnbench参数

image.png

参数列表

-operation

create_write open_read rename delete

-maps

mapper数

-reduces

reducer数

-startTime

开始时间

-blockSize

block size

-bytesToWrite

文件写入字节数 单位为b

-bytesPerChecksum


-numberOfFiles

生成的文件数

-replicationFactorPerFile

每个文件副本数

-baseDir

根路径

-readFileAfterOpen


注意:如果集群开放了安全认证,需要提前认证通过后,进行压测。

步骤

一、先使用默认值进行压测

目前压测集群的namenode为1G

image (1).png

create_write操作

示例:测试map为100,reduce为5,创建10000个文件。(需要查看的指标仪表盘样例)

hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation create_write \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 10000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench


hdfs指标



1、测试map为100,reduce为5,创建100w个文件。

hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation create_write \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 1000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench


2、测试map为100,reduce为5,创建500w个文件。

hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation create_write \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 5000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

3、测试map为100,reduce为5,创建1000w个文件。

hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation create_write \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 10000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

4、测试map为100,reduce为5,创建3000w个文件。

hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation create_write \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 30000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench


此时有节点内存已经达到93.2%,节点挂掉的风险比较大,增加namenode内存再继续进行压测

image.png

openread操作

1、测试map为100,reduce为5,创建100w个文件。

hadoop jar  /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation open_read \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 1000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

具体指标见示例中的仪表盘截图。

2、测试map为100,reduce为5,创建500w个文件。

hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation open_read \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 5000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench


3、测试map为100,reduce为5,创建1000w个文件。

hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation open_read \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 10000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

4、测试map为100,reduce为5,创建3000w个文件。

hadoop jar /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation open_read \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 30000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

rename操作

1、测试map为100,reduce为5,创建100w个文件。

hadoop jar  /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation rename \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 1000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

2、测试map为100,reduce为5,创建500w个文件。

hadoop jar  /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation rename \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 5000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

3、测试map为100,reduce为5,创建1000w个文件。

hadoop jar  /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation rename \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 10000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

4、测试map为100,reduce为5,创建3000w个文件。

hadoop jar  /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation rename \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 30000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

delete操作

1、测试map为100,reduce为5,创建100w个文件。

hadoop jar  /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation delete \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 1000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

2、测试map为100,reduce为5,创建500w个文件。

hadoop jar  /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation delete \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 5000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

3、测试map为100,reduce为5,创建1000w个文件。

hadoop jar  /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation delete \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 10000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

4、测试map为100,reduce为5,创建3000w个文件。

hadoop jar  /usr/hdp/3.1.5.0-152/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-3.1.1.3.1.5.0-152-tests.jar nnbench \
-operation delete \
-maps 100 \
-reduces 5 \
-blockSize 1 \
-bytesToWrite 1024 \
-numberOfFiles 30000000 \
-replicationFactorPerFile 3 \
-readFileAfterOpen true \
-baseDir /benchmarks/NNBench

二、增加资源配置进行压测

例如增大namenode内存为2G,依次测试create_write/openerad/rename/delete操作,在内存或者cpu负载达到瓶颈时,结束压测。

三、总结

在集群硬件资源能给到最大条件下(比如namenode最大能给到8G,再大就会影响其他组件的内存使用),压测出此时的并行文件数为该集群中能达到的最大值,执行任务过程中不要超过最大值,并且建议根据该值设置任务运行并行文件阈值进行控制。也可以对每次运行命令的结果tps进行整理形成曲线图,观察不同变量下tps的趋势。

image.png

趋势图样例


image (13).png


相关文章

配置ranger后hive注册永久UDF

配置ranger后hive注册永久UDF

背景:由于有些场景在启用Ranger情况下,客户在分配权限时候对高权限有特别要求,尽可能给用户设置低权限,无法在ranger中设置用户为 is Role admin权限(hive管理员权限)操作流程:...

CDH实操--hive表及分区检查

CDH实操--hive表及分区检查

1)DB数量select count(1) from DBS;2)各DB中的TABLE数量select TBLS.db_id, name, count(1) tab_num from TBLS jo...

大数据高可用系列--kudu高可用应急方案

大数据高可用系列--kudu高可用应急方案

1 设置机架感知1.1 前置说明    1.9版本后的kudu已经支持机架感知(cdh6之后的版本中的kudu已支持),由于kudu的每个Tablet一般是三副...

阿里云ES跨账号数据迁移(reindex)

阿里云ES跨账号数据迁移(reindex)

1、背景与前置条件总的来说,阿里云es集群间数据迁移,有三中方式,logstash、reindex、镜像备份恢复,分别使用不同的场景,本文档主要讨论reindex方式进行账号下,ES跨集群迁移时,使用...

MySQL运维实战(5.3) MySQL数据乱码的一些情况

MySQL运维实战(5.3) MySQL数据乱码的一些情况

表数据乱码当数据的真实编码和相关参数(常见的包括character_set_client, character_set_result, 字段的编码,终端的编码)不一致时,会产生乱码。测试1 - 表中的...

ACOS无数据告警实践

ACOS无数据告警实践

1.说明在实现数据监控的过程中告警能力无疑是重中之重,无数据告警亦是告警能力中重要的场景,这里我们聊聊关于无数据一些场景和实践方法。2.无数据可能场景对于运维监控平台来说无数据是一个比较复杂的情况,从...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。