Apache Spark是大数据处理的代表。大数据应用加速,因此在这个环节中AnandTech利用Aparche Spark的很多特性来进行测试。
Apache Spark测试
上图是对这个测试的说明:首先从Common Crawl的压缩300GB数据开始。这些压缩文件主要是大量的网络档案,通过Java 库中的"BoilerPipe"提取出有意义的文档数据。使用斯坦福CoreNLP自然语言处理工具,从文本中选择目标(有含义的单词)。然后计算哪个URL中出现这些目标的次数最高,然后使用交替最小二乘法算法来推荐哪一个URL对于确定的主题最接近。
在过去的大量CPU测试中,SPARK 1.5在独立模式下(Non-Cluster,非集群)的结果非常好,但随着核心数的上升结果呈现了递减的态势。只在一个JVM里来释放300GB压缩数据对于超过30核心的系统来说不是很适用,比如具有高核心数的Xeon 8176和EPYC 7601。根据AnandTech的说法,第一次用这种方式测试的时候出现了很严重的性能问题。64核心的EPYC 7601表现的像是16核心的Xeon。而56核心的Sky-lake SP系统也就勉强强过24核心的Xeon E5 v4。显然,需要另一种测试方法。
因此,最后AnandTech将服务器后台变成虚拟集群。第一次的尝试是4个executor。于此同时,也通过工程师将Apaache benchmark升级到可以支持Apache Spark 2.1.1.
接下来是结果:
如果你想知道除了需要虚拟化几十个虚拟机的人以外,谁还需要这样的服务器怪物的话,答案自然是是大数据。大数据分析对于整数处理性能的需求是永远填不饱的。即使在AnandTech最快的机器上,这个测试大概也需要四个小时来完成,这毫无疑问是一个杀手级应用。
Spark测试需要大概120GB内存来运行。存储I/O上花费的时间是可以忽略的。数据处理非常并行,但是在数据清洗过程中需要大量的内存交互,ALS阶段在很多线程上的扩展不是很好,但只占了不到4%的整体时间。
鉴于更高的时钟频率在轻线程和单线程部分,更快的清洗阶段让英特尔领先了仅仅5%左右。而从这一点也能看出两者均针对大数据这一服务器市场的热门应用场景进行了深度的开发和优化。