一、Hadoop基准测试
1. 读写性能测试
(1) 写数据性能测试
选项 | 描述 |
-nrFiles | 要写的文件数量,单独开启一个Map任务写文件 |
-fileSize | 每个要写的文件的大小 |
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -write -nrFiles 10 -fileSize 128MB
(2) 读数据性能测试
选项 | 描述 |
-nrFiles | 要读的文件数量,单独开启一个Map任务读取文件 |
-fileSize | 每个要读取的文件的大小 |
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -read -nrFiles 10 -fileSize 128MB
(3) 删除读写测试产生的文件
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -clean
2. 计算性能测试
(1) 使用RandomWriter来产生随机数,每个节点运行10个Map任务,每个Map产生大约1G大小的二进制随机数
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar randomwriter random-data
(2) 执行Sort程序
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar sort random-data sorted-data
(3) 验证数据是否已经排好序
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar testmapredsort -sortInput random-data -sortOutput sorted-data
(4) 删除测试后产生的多余数据
rm -rf random-data sorted-data
二、常用调优
1 HDFS参数调优(hdfs-site.xml)
<!--
NameNode有一个工作线程池,用来处理不同DataNode的并发心跳以及客户端并发的元数据操作。
对于大集群或者有大量客户端的集群来说,通常需要增大参数。
该参数配置默认值为:10
-->
<property>
<name>dfs.namenode.handler.count</name>
<value>10</value>
</property>
该参数值的计算公式为:dfs.namenode.handler.count=
Cluster Size:集群规模,即机器数量
# Linux自带Python,利用Python计算NN的线程数量
# 进入Python环境
python
import math
clusterSize=8
print int(20*math.log(clusterSize))
2 Yarn参数调优(yarn-site.xml)
配置项 | 默认值 | 描述 |
yarn.nodemanager.resource.memory-mb | 8192 | 节点上nodemanager能够管理使用的物理内存 |
yarn.scheduler.maximum-allocation-mb | 8192 | 单个任务能够使用的最大物理内存 |