- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想了解 Spark Streaming 中的一个基本知识。我有 50 个 Kafka 主题分区和 5 个执行程序,我使用的是 DirectAPI,所以没有。 RDD 分区的数量将为 50。如何在 5 个执行程序上处理该分区?将在每个执行器上一次启动 1 个分区,或者如果执行器有足够的内存和内核,它将在每个执行器上并行处理超过 1 个分区。
最佳答案
Will spark process 1 partition at a time on each executors or if the executor has enough memory and cores it will process more than 1 partition in parallel on each executor.
Spark 将根据您正在运行的作业可用的内核总数来处理每个分区。
假设您的流式传输作业有 10 个执行器,每个执行器有 2 个核心。这意味着您将能够同时处理 10 x 2 = 20 个分区,假设 spark.task.cpus
设置为 1。
如果你真的想知道细节,看Spark Standalone里面从CoarseGrainedSchedulerBackend
请求资源,你可以看它的makeOffers
:
private def makeOffers() {
// Filter out executors under killing
val activeExecutors = executorDataMap.filterKeys(executorIsAlive)
val workOffers = activeExecutors.map { case (id, executorData) =>
new WorkerOffer(id, executorData.executorHost, executorData.freeCores)
}.toIndexedSeq
launchTasks(scheduler.resourceOffers(workOffers))
}
这里的关键是 executorDataMap
,它包含从执行器 ID 到 ExecutorData
的映射,它告诉系统中每个这样的执行器使用了多少核心,并且根据那个和分区的首选位置,对这个任务应该运行哪个执行者进行有根据的猜测。
这是一个从 Kafka 消费的实时 Spark Streaming 应用的示例:
我们有 5 个分区,其中有 3 个执行程序在运行,其中每个执行程序都有 2 个以上的核心,这使得流能够同时处理每个分区。
关于hadoop - 如果没有,如何处理 Spark RDD 分区。执行者 < 没有。 RDD分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41209191/
所以我有一个排行榜,我每天使用以下查询有效地获取每个用户的分数: SELECT DATE(a.time) as time, a.userid, SUM(activity_weight) as weig
假设我有一个 ExecutorService(它可以是一个线程池,因此涉及到并发性),它在不同的时间执行一个任务,或者周期性地或者响应一些其他条件。要执行的任务如下: 如果此任务已在进行中,则什么也不
我正在运行的服务器应用程序收到多个任务请求,我想使用任务系统处理这些请求。 每个任务都表示为一个 Runnable,它将从线程池中请求 n 个线程,其中 n 小于或等于线程池大小。为了不线程过多导致
我有一个 long_task 函数,它运行大量 cpu 绑定(bind)计算,我想通过使用新的 asyncio 框架使其异步。生成的 long_task_async 函数使用 ProcessPoolE
Java 文档说 CompletableFuture:supplyAsync(Supplier supplier)在 ForkJoinPool#commonPool() 中运行任务而 Completa
我想了解 Spark Streaming 中的一个基本知识。我有 50 个 Kafka 主题分区和 5 个执行程序,我使用的是 DirectAPI,所以没有。 RDD 分区的数量将为 50。如何在 5
我的问题与 this one here 密切相关.正如在那里发布的那样,我希望主线程等到工作队列为空并且所有任务都已完成。然而,我的情况的问题是,每个任务都可能递归地导致提交新任务进行处理。这使得收集
我是一名优秀的程序员,十分优秀!