我有一个2节点的Spark集群,每个节点有4个核心.
MASTER
(Worker-on-master) (Worker-on-node1)
Run Code Online (Sandbox Code Playgroud)
Spark配置:
我想了解Spark的paralellize行为.sparkPi示例包含以下代码:
val slices = 8 // my test value for slices
val n = 100000 * slices
val count = spark.parallelize(1 to n, slices).map { i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x*x + y*y < 1) 1 else 0
}.reduce(_ + _)
Run Code Online (Sandbox Code Playgroud)
根据文件:
Spark将为群集的每个切片运行一个任务.通常,您希望群集中的每个CPU有2-4个切片.
我将切片设置为8,这意味着工作集将在群集上的8个任务之间划分,反过来每个工作节点获得4个任务(每个核心1:1)
问题:
我在哪里可以看到任务级详细信息?内部执行程序我没有看到任务分解,所以我可以看到切片对UI的影响.
如何以编程方式查找上面的map函数的工作集大小?我认为它是n/slices(100000以上)
执行程序运行的多个任务是在多个线程中顺序运行还是并行运行?
推理每个CPU 2-4片.
我认为理想情况下我们应该调整SPARK_WORKER_INSTANCES以对应每个节点(在同构群集中)的核心数,以便每个核心获得自己的执行器和任务(1:1:1)
我会尽力回答你的问题:
1.-我在哪里可以看到任务级别的详细信息?
提交作业时,Spark会在除主服务器之外的每个工作节点上存储有关任务细分的信息.这个数据存储,我相信(我只测试过Spark for EC2),在spark目录下的工作文件夹中.
2.-如何以编程方式查找地图功能的工作集大小?
虽然我不确定它是否将大小存储在切片的内存中,但第一个答案中提到的日志提供了有关每个RDD分区包含的行数的信息.
3.-执行程序运行的多个任务是否在多个线程中顺序或并行运行?
我相信节点内的不同任务是按顺序运行的.这显示在上面显示的日志中,表示每个任务的开始和结束时间.
4.-推理每个CPU 2-4片
有些节点比其他节点更快完成任务.具有比可用核心更多的切片以均衡的方式分配任务,从而避免由于较慢的节点而导致的长处理时间.
| 归档时间: |
|
| 查看次数: |
8585 次 |
| 最近记录: |