首页 文章

如何计算spark中的分区数和并发任务数

提问于
浏览
1

我有一个使用Spark 1.0.1的4个节点(每个节点有16个核心)的集群 .

我有一个RDD,我已经重新分区,因此它有200个分区(希望增加并行性) .

当我在这个RDD上进行转换(例如过滤器)时,我似乎无法在一个时间点获得超过64个任务(我的4个节点上的核心总数) . 按任务,我的意思是Application Spark UI下显示的任务数 . 我尝试将spark.default.parallelism显式设置为128(希望我能同时运行128个任务)并在Application UI中为正在运行的应用程序验证这一点,但这没有任何效果 . 也许,对于“过滤器”,这会被忽略,默认值是可用的核心总数 .

我对Spark很新,所以也许我只是缺少或误解了一些基本的东西 . 任何帮助,将不胜感激 .

1 回答

  • 1

    这是正确的行为 . 每个“核心”一次只能执行一个任务,每个任务对应一个分区 . 如果您的群集只有64个核心,则一次最多只能运行64个任务 .

    您可以为每个节点运行多个工作程序以获得更多执行程序 . 这样可以在集群中提供更多内核 . 但是,无论你有多少核心,每个核心一次只能运行一个任务 .

    你可以在下面的帖子中看到更多细节How does Spark paralellize slices to tasks/executors/workers?

相关问题