Spark架构疑问:2核集群为何生成6个Task?Task与Partition关系解析
关于Spark核心、Task与Partition的关系解答
1. Task与Partition的关系
Task和Partition是一一对应的:每个Partition对应一个Task,Task的作用就是处理对应Partition内的所有数据。你通过spark.sparkContext.parallelize(range(15),6)显式指定了RDD的分区数为6,所以Spark会生成6个Task,每个Task负责处理一个分区里的数据分片。
2. 2核集群为何能生成6个Task
集群的核心数决定的是同一时间可并行执行的Task数量,而非总共能生成的Task数量。你的2核集群意味着同一时刻最多有2个Task在运行,剩下的4个Task会进入调度队列等待。当正在运行的Task执行完成后,Spark会从队列中取出下一个Task分配给空闲的核心,直到所有6个Task都执行完毕。
3. 核心、Task、Partition的整体关系
- Partition是Spark中数据的最小分片单位,RDD的分区数直接决定了Task的总数量;
- 集群的核心数代表Task的并行执行能力,核心数越多,同一时间能处理的Task数量越多,整体任务的执行效率越高;
- Task是Partition的处理载体,每个Task只负责处理一个Partition的数据,Task的调度和执行由Spark集群管理器负责。
内容的提问来源于stack exchange,提问作者venkat
相关产品推荐
相关产品推荐

