如何从hadoop集群上的TestDFSIO基准计算吞吐量

如何从hadoop集群上的TestDFSIO基准计算吞吐量,hadoop,benchmarking,hadoop2,Hadoop,Benchmarking,Hadoop2,我有一个集群,有11个节点,9个是从节点,2个是主节点,与中的相同。我正在这个集群上执行TestDFSIO基准测试,它使用CDH 5.8.0 我从TestDFSIO结果中获得以下输出。这是吞吐量吗?或者我需要从中计算吞吐量,比如文件数乘以TestDFSIO结果吞吐量还是其他什么 请告诉我如何获得整个集群的吞吐量 ----- TestDFSIO ----- : write Date & time: Mon Aug 29 07:28:01 MDT 2016

我有一个集群,有11个节点,9个是从节点,2个是主节点,与中的相同。我正在这个集群上执行TestDFSIO基准测试,它使用CDH 5.8.0

我从TestDFSIO结果中获得以下输出。这是吞吐量吗?或者我需要从中计算吞吐量,比如文件数乘以TestDFSIO结果吞吐量还是其他什么

请告诉我如何获得整个集群的吞吐量

----- TestDFSIO ----- : write
           Date & time: Mon Aug 29 07:28:01 MDT 2016
       Number of files: 10000
Total MBytes processed: 8000000.0
     Throughput mb/sec: 50.75090177850001
Average IO rate mb/sec: 85.83160400390625
 IO rate std deviation: 82.41435666074283
    Test exec time sec: 3149.755
简言之(粗略估计):

因此,在您的情况下约为2.5GB

或者,为了获得更准确的结果,请找出集群上可用的地图槽的数量(Thread console中的VCores total即可),然后尝试以下方法:

Total throughput mb/sec = min(nrFiles, VCores total - 1) * Throughput mb/sec
但我建议使用稍微不同的设置重复该测试,因为IO率std偏差结果非常高(82.41435666074283)

您将文件数设置为10k。我假设所描述的集群没有可用的10k映射槽。现在,由于TestDFSIO使用每个文件一个映射运行,因此需要多个MapReduce wave才能完成测试。这是不必要的。此外,最后一个波通常比前一个波的贴图更少。同时运行更少的地图将产生更好的个人吞吐量,这将影响准确性。例子:

因此,最好将任务数设置为较低的值。datanodes中的驱动程序总数是一个很好的起点。请看下图:

我已经使用不同的nrFiles参数值运行了多次TestDFSIO。您可以看到,在经过某个点(本例中为驱动器饱和)后,并没有发生太多事情。此群集的总吞吐量已达到2.3GB/s。因此,为了回答您的问题,您可以获得集群运行的总吞吐量:

hdfs yarn jar hadoop-mapreduce-client-jobclient.jar TestDFSIO -write -nrFiles N -size 10GB
其中:

  • N=3/复制系数*数据节点总数\u驱动器
  • -大小应设置为允许测试运行至少10分钟的值
可以使用结果中的值计算总吞吐量,如下所示:

Total throughput [mb/sec] = nrFiles * Throughput mb/sec
注意事项:

  • HDFS可用空间;)测试将生成:复制*大小*文件数据量。不要超过集群容量的60%
  • nrFiles应该低于可用的映射插槽(nrFiles不是“总吞吐量mb/秒”,实际上是mb/秒,而不是mb/秒?
    Total throughput [mb/sec] = nrFiles * Throughput mb/sec