引用关于作业调度的正式文件:
其次,在每个Spark应用程序中,如果多个“作业”(Spark操作)是由不同的线程提交的,那么它们可能会同时运行。
换句话说,单个sparkcontext
实例可以由多个线程使用,从而提供了提交多个并行运行的Spark作业的能力。
把事情弄清楚一点。
>
spark-submit
是提交Spark应用程序以供执行(而不是Spark作业)。单个Spark应用程序至少可以有一个Spark作业。
RDD操作可能阻塞,也可能不阻塞。sparkcontext
提供了两种提交(或运行)Spark作业的方法,即sparkcontext.runjob
和sparkcontext.submitjob
,因此操作是否阻塞并不重要,重要的是使用什么sparkcontext
方法来实现非阻塞行为。
请注意,“RDD操作方法”已经编写好了,并且它们的实现使用了Spark开发人员所下注的任何东西(主要是sparkcontext.runjob
,如在count中):
// RDD.count
def count(): Long = sc.runJob(this, Utils.getIteratorSize _).sum
您必须编写自己的RDD操作(在自定义RDD上),才能在Spark应用程序中具有所需的非阻塞特性。
我在BatchScheduler中有多个计划作业,它在特定时间运行。简单的内置JobLauncher,这是同步的。在自然界中最初使用。现在,我想并行运行这些作业,这样没有作业可以等待其他作业完成。 我在不同的作业上尝试过@Async注释,但都不起作用。 然后,我尝试设置joblauncher.settaskexecutor(新的SimpleAsyncTaskExecutor())。但这并不奏效。
问题内容: 作业系统:Cent-OS 我有一些作业(或脚本)要运行。每个工作需要3-5分钟。我有。我可以并行使用。请建议一些脚本或工具通过并行运行40个Jobs来处理30,000个Job。 我做了什么: 我创建了40个不同的文件夹,并通过为每个目录创建一个Shell脚本来并行执行作业。 我想知道下一次处理此类工作的更好方法。 问题答案: 正如Mark Setchell所说:GNU并行。 如果您坚持
问题内容: 在我的我有这两个脚本: 每当我开始在Node.js中开发时,我必须 并行 运行这两个脚本。我想到的第一件事是添加第三个脚本,如下所示: …但这将等待完成再运行。 如何并行运行它们? 请记住,我需要查看以下命令。另外,如果您的解决方案涉及构建工具,则我宁愿使用,因为我已经在另一个项目中使用了它。 问题答案: 使用并发调用的包。 然后按以下步骤设置您的任务:
在我的中有以下两个脚本: 每次在Node.js中开始开发时,我都必须并行运行这两个脚本。我首先想到的是添加第三个这样的脚本: ...但在运行之前,将等待完成。 我如何并行运行这些?请记住,我需要查看这些命令的。另外,如果您的解决方案涉及构建工具,我宁愿使用而不是,因为我已经在另一个项目中使用了它。
-第一种方法 所有的查询都可以存储在一个配置单元表中,我可以编写一个Spark驱动程序来一次读取所有查询,并使用java多线程并行运行所有查询(与HiveContext一起 优点:易于维护 缺点:可能会占用所有资源,并且对每个查询进行性能优化可能会很困难。 使用oozie spark操作单独运行每个查询 优点:可以在查询级别进行优化 缺点:难以维护。 我找不到任何关于第一种方法的文档,说明Spar
我正在亚马逊的EMR集群上同时运行3个Spark流进程。问题是这三个Spark流作业中的一个基于进行处理: 有没有办法在不更改代码的情况下解决这个问题?