Apache-Spark内部作业调度

时间:2015-04-24 21:56:49

标签: scala hadoop apache-spark analytics

我在Spark中遇到了这个功能,它允许您在spark context内安排不同的任务。

我想在一个程序中实现此功能,我将map我的输入RDD(from a text source)转换为键值RDD [K,V],然后创建一个复合键值RDD [(K1,K2),V]和一个已过滤的{ {1}}包含一些特定值。

进一步的管道涉及在RDDMLlib操作上从RDDs调用一些统计方法,然后将结果外部化到磁盘。

我试图理解join内部公平调度程序将如何处理这些操作。我尝试阅读作业调度文档,但对spark'poolsusers的概念更加困惑。

tasks究竟是什么,他们肯定pools可以组合在一起,还是他们将linux用户汇集到一个组中

'tasks'中的users是什么。他们是指context吗?还是像threads上下文查询?

我猜这与任务如何在SQL内安排有关。但阅读文档使我们看起来正在处理具有不同客户端和用户组的多个应用程序。

有人可以澄清一下吗?

1 个答案:

答案 0 :(得分:1)

您在第2段中描述的所有流水线程序:

map -> map -> map -> filter

将在一个阶段中处理,就像MapReduce中的map()一样,如果您熟悉的话。这是因为不需要重新分区或随机播放您的数据,因为您对记录之间的相关性没有要求,因此在创建新的记录之前,spark会尽可能多地转换到同一个阶段,因为它会很轻巧。有关舞台分离的更多信息可以在其论文中找到:Resilient Distributed Datasets第5.1节作业调度。

当阶段执行时,它将是一个任务集(在不同的线程中运行相同的任务),并以spark的角度同时进行调度。

公平的调度程序即将安排不相关的任务集,这里不适合。