首页 文章

Spark性能调优 - 执行程序数与内核数

提问于
浏览
3

我在Spark中有两个关于性能调优的问题:

  • 我理解在spark工作中控制并行性的关键之一是正在处理的RDD中存在的分区数,然后控制处理这些分区的执行程序和核心 . 我能否认为这是真的:

  • 执行者数量执行者核心数量应为<=分区数量 . 即,总是在一个 Actuator 的一个核心中处理一个分区 . 没有必要有更多的执行程序核心而不是分区的数量

  • 我明白每个执行程序拥有大量内核会对HDFS写入等事情产生影响,但这是我的第二个问题,纯粹从数据处理的角度来看,两者之间有什么区别?对于例如如果我有10个节点集群,这两个作业之间的区别是什么(假设每个节点有足够的内存来处理所有内容):

  • 5个遗嘱执行人* 2执行人核心

  • 2个执行者* 5个执行者核心

假设存在无限的内存和CPU,从性能的角度来看,我们是否应该期望上述两者执行相同的操作?

2 回答

  • 0

    根据我的经验,如果我有一个包含10个节点的集群,我会选择20个spark Actuator . 工作的细节很重要,因此一些测试将有助于确定可选配置 .

  • 0

    大多数时候使用更大的执行程序(更多内存,更多内核)更好 . 一:具有大内存的较大执行程序可以轻松支持广播连接并消除随机播放 . 第二:由于任务不是平等的,统计上较大的执行者有更好的机会幸存OOM问题 . 大型执行程序的唯一问题是GC暂停 . G1GC帮助 .

相关问题