大数据基准测试——HiBench7.0代码升级

HiBench是一个大数据基准测试套件,可帮助评估大数据框架的速度,吞吐量和系统资源利用率。

包括Sort,WordCount,TeraSort,Sleep,SQL,PageRank,Nutch索引,Bayes,Kmeans,NWeight和增强型DFSIO等测试方向。

它支持的框架有:hadoopbench、sparkbench、stormbench、flinkbench、gearpumpbench。

开源版本组件支持

  • Current version: Hibench-7.0: https://github.com/intel-hadoop/HiBench
  • Hadoop:Apache Hadoop 2.x,CDH5,HDP
  • Spark:Spark 1.6.x,Spark 2.0.x,Spark 2.1.x,Spark 2.2.x.
  • Flink:1.0.3
  • Storm:1.0.1
  • Gearpump:0.8.1
  • Kafka:0.8.2.2

目前开源的Hibench-7.0对各个组件版本支持较老,代码已无法运行,并存在版本兼容性问题(如kafka0.8与kafka0.11)需进行代码升级操作,目前除Storm与Gearpump组件在测试中并未涉及,代码未做修改外,其余组件相关代码均已升级到主流新版本。

自升级版本组件支持

Current version: Hibench-8.0: https://github.com/liubin2048/HiBench-8.0

Hadoop:Apache Hadoop 2.9.1(兼容Hadoop2.7.x,Hadoop2.8.x)

Spark:Spark 2.4(兼容Spark2.3.x)

Flink:1.7.1(兼容Flink1.6.x)

Storm:1.0.1(未测试)

Gearpump:0.8.1(未测试)

Kafka:0.11.0.3(兼容Kafka0.11.x)

大家可以点击GitHub链接进行下载:https://github.com/liubin2048/HiBench-8.0


附:HiBench测试分类简介

HiBench共计19个测试方向,可大致分为6个测试类别:分别是micro,ml(机器学习),sql,graph,websearch和streaming。
大数据基准测试——HiBench7.0代码升级_第1张图片

2.1 micro Benchmarks
  1. 排序(sort)
    此工作负载对其文本输入数据进行排序,该数据是使用RandomTextWriter生成的。
  2. 词频统计(wordcount)
    此工作负载计算输入数据中每个单词的出现次数,这些单词是使用RandomTextWriter生成的。它代表了一种典型的MapReduce作业。
  3. TeraSort(terasort)
    TeraSort是由Jim Gray创建的标准基准测试。其输入数据由Hadoop TeraGen示例程序生成。
  4. 休眠(sleep)
    此工作负载在每个任务中休眠几秒钟以测试框架的调度性能。
  5. 增强型DFSIO(dfsioe)
    增强型DFSIO通过生成大量同时执行写入和读取的任务来测试Hadoop集群的HDFS吞吐量。它测量每个映射任务的平均I / O速率,每个映射任务的平均吞吐量以及HDFS集群的聚合吞吐量。注意:此基准测试没有Spark相应的实现。
2.2 Machine Learning
  1. 贝叶斯分类(Bayes)
    朴素贝叶斯是一种简单的多类分类算法,假设每对特征之间具有独立性。此工作负载在spark.mllib中实现,并使用自动生成的文档,其文字遵循zipfian分布。用于生成文本的dict也来自默认的linux文件/usr/share/dict/linux.words.ords。
  2. K均值聚类(Kmeans)
    此工作负载测试spark.mllib中的K-means(一种众所周知的知识发现和数据挖掘聚类算法)聚类。输入数据集由GenKMeansDataset基于Uniform Distribution和Guassian Distribution生成。
  3. 逻辑回归(LR)
    Logistic回归(LR)是一种预测分类响应的常用方法。此工作负载在带有LBFGS优化器的spark.mllib中实现,输入数据集由LogisticRegressionDataGenerator基于随机平衡决策树生成。它包含三种不同的数据类型,包括分类数据,连续数据和二进制数据。
  4. 交替最小二乘(ALS)
    交替最小二乘(ALS)算法是用于协同过滤的众所周知的算法。此工作负载在spark.mllib中实现,输入数据集由RatingDataGenerator为产品推荐系统生成。
  5. 梯度增强树(GBT)
    梯度提升树(GBT)是一种使用决策树集合的流行回归方法。此工作负载在spark.mllib中实现,输入数据集由GradientBoostingTreeDataGenerator生成。
  6. 线性回归(Linear)
    线性回归(线性)是使用SGD优化器在spark.mllib中实现的工作负载。输入数据集由LinearRegressionDataGenerator生成。
  7. 狄利克雷分布(LDA)
    狄利克雷分布(LDA)是一个主题模型,它从一组文本文档中推断出主题。此工作负载在spark.mllib中实现,输入数据集由LDADataGenerator生成。
  8. 主成分分析(PCA)
    主成分分析(PCA)是一种统计方法,用于查找旋转,使得第一个坐标具有尽可能大的方差,并且每个后续坐标又具有可能的最大方差。PCA广泛用于降维。此工作负载在spark.mllib中实现。输入数据集由PCADataGenerator生成。
  9. 随机森林(RF)
    随机森林(RF)是决策树的集合。随机森林是用于分类和回归的最成功的机器学习模型之一。它们结合了许多决策树,以降低过度拟合的风险。此工作负载在spark.mllib中实现,输入数据集由RandomForestDataGenerator生成。
  10. 支持向量机(SVM)
    支持向量机(SVM)是大规模分类任务的标准方法。此工作负载在spark.mllib中实现,输入数据集由SVMDataGenerator生成。
  11. 奇异值分解(SVD)
    奇异值分解(SVD)将矩阵分解为三个矩阵。此工作负载在spark.mllib中实现,其输入数据集由SVDDataGenerator生成。
2.3 SQL
  1. 扫描(Scan),连接(Join),聚合(Aggregate)
    这些工作量是基于SIGMOD 09论文“大规模数据分析方法的比较”和HIVE-396开发的。它包含Hive查询(Aggregate和join),执行本文中描述的典型OLAP查询。它的输入是Zipfian分布后自动生成的带有超链接的Web数据。
2.4 Websearch Benchmarks
  1. 网页排名(PageRank)
    此工作负载基准测试PageRank算法在Spark-MLLib / Hadoop(包含在pegasus 2.0中的搜索引擎排名基准)示例中实现。数据源是从Web数据生成的,其超链接遵循Zipfian分布。
  2. Nutch索引(nutchindexing)
    大规模搜索索引是MapReduce最重要的用途之一。这个工作负载测试Nutch的索引子系统,Nutch是一个流行的开源(Apache项目)搜索引擎。工作负载使用自动生成的Web数据,其超链接和单词都遵循Zipfian分布和相应的参数。用于生成网页文本的字典是默认的linux dict文件。
2.5 Graph Benchmark
  1. NWeight(nweight)
    NWeight是Spark GraphX和pregel实现的迭代图并行算法。该算法计算两个顶点的关联,这两个顶点是n跳。
2.6 Streaming Benchmarks
  1. 一致性(identity)
    此工作负载从Kafka读取输入数据,然后立即将结果写入Kafka,不涉及复杂的业务逻辑。
  2. 重分区(repartition)
    此工作负载从Kafka读取输入数据,并通过创建更多或更少的分区步骤来更改并行度。它测试流式框架中数据混洗的效率。
  3. 有状态的Wordcount(wordcount)
    此工作负载计算每隔几秒钟从Kafka累积收到的单词。这将测试流式框架中的有状态运算符性能和Checkpoint / Acker成本。
  4. 窗口(fixwindow)
    工作负载执行基于窗口的聚合。它测试流式框架中窗口操作的性能。

你可能感兴趣的:(基准测试)