在yarn中,广播变量是如何跨节点分布的。我搞不清楚它是属于nodemanager中的每个执行器,还是只属于集群中每个节点管理器上的副本。请告诉我这件事。提前谢谢。
qlfbtfca1#
apachespark中的广播变量是一种在执行器之间共享只读变量的机制。为了理解广播变量的行为,请理解spark生命周期是如何工作的Spark驱动器由Yarn启动它为作业创建dag作业包含Map和减少任务的步骤这些Map和缩减任务在一个执行器中运行(即一个单独的jvm进程,它有自己的线程池)此执行器在初始化时获取自己的广播变量副本。广播变量是通过spark而不是Yarn来分配的。步骤3将是基于数据量的重复任务,或者如果它是一个spark streaming作业,但始终有一个广播变量的副本,并与执行器保持在一起,直到它停止。如果通过节点管理器您指的是spark worker节点,那么我认为spark worker节点不需要广播变量,因此它们可能不会保留它的任何副本。节点管理器(即spark worker)负责,-分配所需的资源-将executor注册到驱动程序-维护驱动程序与executor之间的通信
1条答案
按热度按时间qlfbtfca1#
apachespark中的广播变量是一种在执行器之间共享只读变量的机制。
为了理解广播变量的行为,请理解spark生命周期是如何工作的
Spark驱动器由Yarn启动
它为作业创建dag
作业包含Map和减少任务的步骤
这些Map和缩减任务在一个执行器中运行(即一个单独的jvm进程,它有自己的线程池)
此执行器在初始化时获取自己的广播变量副本。广播变量是通过spark而不是Yarn来分配的。
步骤3将是基于数据量的重复任务,或者如果它是一个spark streaming作业,但始终有一个广播变量的副本,并与执行器保持在一起,直到它停止。
如果通过节点管理器您指的是spark worker节点,那么我认为spark worker节点不需要广播变量,因此它们可能不会保留它的任何副本。
节点管理器(即spark worker)负责,-分配所需的资源-将executor注册到驱动程序-维护驱动程序与executor之间的通信