Spark作业计算结点并发运行验证

一、双核 CPU 的情况

验证方式:
     | 在作业主程序中的  rdd.foreachPartition()中加入如下代码:
     | 使当前线程睡眠1000ms,前后都打印当前线程信息
     | 数据自行准备,大量即可

rdd.foreachPartition(partition => {
  println("[partition] Current thread " + Thread.currentThread().getId 
    + " : " +Thread.currentThread().getName)
  Thread.sleep(1000)
  println("[partition] Sleep 1s Current thread " + Thread.currentThread().getId 
    + " : " +Thread.currentThread().getName)
}

经验证:
     | 有两个线程(288和59)同时交替运行;
     | 如下第一张图为作业最开始运行时的情况,只有2个线程,288在完成睡眠前,进入了59线程;
     | 第二张图为一段时间后,288线程消失了,剩下708和59线程,依然只有2个

结论:
     |  1)能开启的最大线程数取决于分配的CPU核数;
     |  2)每个partition 都将开启一个task,每个task由一个线程完成;
     |  3)每个线程将完成多个task任务

二、单核 CPU 的情况

此时只有一个线程执行所有task任务,不存在并发问题

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值