【问题标题】:Spark run multiple operations in parallelSpark 并行运行多个操作
【发布时间】:2019-06-16 13:30:02
【问题描述】:

我有一个 Spark 应用程序选择一个子集并对该子集执行一些操作。每个子集与其操作之间没有依赖和交互,因此我尝试使用多线程让它们并行运行以提高性能。代码如下:

Dataset<Row> fullData = sparkSession.read().json("some_path");
ExecutorService executor = Executors.newFixedThreadPool(10);
List<Runnable> tasks = Lists.newArrayList();
for (int i = 1; i <= 50; i++) {
    final int x = i;
    tasks.add(() -> {
        Dataset<Row> subset_1 = fullData.filter(length(col("name")).equalTo(x));
        Dataset<Row> subset_2 = fullData.filter(length(col("name")).equalTo(x));
        Dataset<Row> result = subset_1.join(subset_2, ...);
        log.info("Res size is " + result.count()); // force Spark do the join operation
    });
}
CompletableFuture<?>[] futures = tasks.stream()
    .map(task -> CompletableFuture.runAsync(task, executor))
    .toArray(CompletableFuture[]::new);
CompletableFuture.allOf(futures).join();
executor.shutdown();

在 Spark 作业管理 UI 中,我注意到这 50 个任务是并行提交的,但处理仍然是阻塞方式,一个任务开始运行,直到另一个任务完成。如何让多个任务并行运行,而不是一个接一个?

【问题讨论】:

    标签: multithreading apache-spark


    【解决方案1】:

    这不是您在 Spark 中控制并行性的方式。这一切都是通过配置以声明方式控制的。

    Spark 是一个分布式计算框架,它旨在用于分布式环境中,其中每个工作器都以单线程方式运行。通常任务是使用 Yarn 调度的,它具有节点的元数据,并且可能会在单个节点上启动多个任务(取决于内存和 cpu 限制)但在单独的 jvm 中。

    local 模式下,您可以将多个worker 实现为单独的线程,因此如果您说master("local[8]"),您将获得8 个worker,每个worker 在单个jvm 中作为一个线程运行。

    您是如何运行您的应用程序的?

    【讨论】:

    • 谢谢!我通过 HUE UI 提交工作流来运行我的应用程序。您能否添加更多详细信息或分享有关如何配置多个工作人员的链接?
    • 您是否在本地集群上运行?还是像 EMR 一样管理?还是本地运行>?
    • 这取决于许多因素 - 集群中的节点数量、节点类型、您为 Spark 应用程序声明的内存量。不幸的是,这是一个复杂的话题。打开 SPARK UI 以查看作业的内存设置,打开 YARN UI 以查看集群的内存配置会有所帮助。 docs.aws.amazon.com/emr/latest/ReleaseGuide/… 显示默认内存设置为 Yarn,具体取决于所使用的节点类型。另一个主题是数据源的并行性 - 通常每个文件有 1 个分区 - 如果您没有太多文件,请尝试 DataFrame.repartition(n)
    • 我尝试了另一个具有相同模式的应用程序,唯一的区别是连接操作是轻量级的,这个应用程序能够并行运行多个任务。根据我的理解,这取决于任务需要多少资源——如果一个任务占用了节点的全部资源,那么多个任务就不能并行运行。
    猜你喜欢
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多