Apache Spark:核心数与执行者数量

 手机用户2602896383 发布于 2023-01-05 20:20

我试图了解在YARN上运行Spark作业时内核数量和执行程序数量之间的关系.

测试环境如下:

数据节点数:3

数据节点机器规格:

CPU:Core i7-4790(核心数:4,线程数:8)

内存:32GB(8GB x 4)

硬盘:8TB(2TB x 4)

网络:1Gb

Spark版本:1.0.0

Hadoop版本:2.4.0(Hortonworks HDP 2.1)

Spark作业流程:sc.textFile - > filter - > map - > filter - > mapToPair - > reduceByKey - > map - > saveAsTextFile

输入数据

类型:单个文本文件

尺寸:165GB

行数:454,568,833

产量

第二次过滤后的行数:310,640,717

结果文件的行数:99,848,268

结果文件的大小:41GB

该作业使用以下配置运行:

    --master yarn-client --executor-memory 19G --executor-cores 7 --num-executors 3 (每个数据节点的执行程序,使用尽可能多的核心)

    --master yarn-client --executor-memory 19G --executor-cores 4 --num-executors 3 (核心数量减少)

    --master yarn-client --executor-memory 4G --executor-cores 2 --num-executors 12 (少核心,更多执行者)

经过的时间:

    50分15秒

    55分48秒

    31分23秒

令我惊讶的是,(3)更快.
我认为(1)会更快,因为在改组时会有更少的执行者间通信.
虽然(1)的核心数小于(3),但核心数量不是关键因素,因为2)确实表现良好.

(在pwilmot回答之后添加了以下内容.)

有关信息,性能监视器屏幕截图如下:

(1)的Ganglia数据节点摘要 - 作业于04:37开始.

Ganglia数据节点摘要(1)

(3)的Ganglia数据节点摘要 - 工作于19:47开始.请在此之前忽略图表.

(3)的Ganglia数据节点摘要

该图大致分为两部分:

第一:从开始到reduceByKey:CPU密集型,没有网络活动

第二:在reduceByKey之后:CPU降低,网络I/O完成.

如图所示,(1)可以使用尽可能多的CPU功率.因此,它可能不是线程数量的问题.

如何解释这个结果?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有