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

九月2年前技术文章1744


本次压测使用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


相关文章

Mac安装Hadoop文档-保姆级操作(一)

Mac安装Hadoop文档-保姆级操作(一)

首先配置ssh环境在Mac下如果想使用Hadoop,必须要配置ssh环境, 如果不执行这一步,后面启动hadoop时会出现Connection refused连接被拒绝的错误。首先终端命令框输入:ss...

k8s集群状态与日志查看

一、状态查看1. 查看 Pod 状态以及运行节点kubectl get pods -o widekubectl -n kube-system get pods -o wide2. 查看 Pod 事件k...

HDFS业务类型与相关架构优化措施

低延迟业务计算密集型业务,低延迟业务,这一类业务通常是对大量NameNode文件目录访问为主的(权限判断,文件存在性,文件信息查询等对NameNode元数据操作为主的)。因此需要针对NameNode的...

nginx分发算法

nginx分发算法

一、分发算法介绍如何将用户请求按照一定的规律分发给业务服务器。主要分为Nginx集群默认算法和基于请求头分发算法。二、nginx集群默认算法nginx的upstream 目前支持4种方式的分配轮询(默...

k8s Krew 插件开发详解

前言:前面我们已经了解过krew插件的作用以及一些比较常用的插件,接下来我们讲一下如何开发krew插件。1、熟悉kubens 插件在开发krew插件之前,我们先通过kubens插件来熟悉krew,我们...

mysql8 rpm安装教程

1:卸载原有REPO源查询已经存在的mysql及相关依赖包rpm -qa | grep mysql此时你会看到一堆列表,使用 yum 命令依次卸载yum remove mysql-xxx-xxx-xx...

发表评论    

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