在单节点运行时,独立spark cluster比本地模式有哪些优势?

2cmtqfgy  于 2021-05-19  发布在  Spark
关注(0)|答案(1)|浏览(489)

**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

上个月关门了。
改进这个问题
我有一个32核64gbram的节点来处理来自kafka的spark流数据。我对KafkaSpark积分的理解是1:1的Map划分。假设我有3个kafka分区,那么spark分别创建3个任务进行处理(如果我在local[3]中提供3个核心,那么每个任务的每个核心都是这个核心)。
我的疑问是,如果我在一个独立的集群中运行相同的东西,每个集群有3个执行器(worker)和1个核心,我们会获得性能优势吗?我只知道在独立集群中运行会在不同的jvm中运行每个任务/分区,不确定这是否会提高性能。。。
是否仅在多节点部署的情况下才建议使用群集模式?
谢谢

o2gm4chl

o2gm4chl1#

热释光;无医生。
它只是更多的开销,以维持没有收益。
除非您考虑一个操作系统(例如linux与ms-windows),它可以比一个具有多个线程的jvm更好地处理多个jvm进程。
说到线程, local[n] 模式是使用 n 用于模拟不同节点上执行器的线程的cpu内核。在这个特定的操作系统上,jvm处理多个线程的能力可能很差。
使用spark独立主节点和节点(在一台机器上)的缺点是,与具有多个线程的单个jvm相比,存在一种网络通信(通过环回)可能会使任务调度速度变慢。
如果我在一个独立的集群中运行相同的东西,每个集群有3个执行器(worker)和1个核心,我们会获得性能优势吗?
我对此表示怀疑。
我只知道在独立集群中运行会在不同的jvm中运行每个任务/分区,不确定这是否会提高性能。。。
拜托。总是。我认为管理多个线程通常比管理多个进程(包括内存共享)更快。
是否仅在多节点部署的情况下才建议使用群集模式?
对!apachespark的一般目的是将所有可用的处理能力(具有cpu核心的不同机器)结合起来,就像它是一个单一的执行环境一样,并让用户使用它,就像在一个单一的执行引擎(类似python的)上一样。

相关问题