我正在调查使用spark作为REST API后端的适用性。其中的一个问题似乎是Spark的FIFO调度方法。这意味着,如果一个大任务正在执行中,那么在那个重任务完成之前,任何小任务都无法完成。根据https://spark.apache.org/docs/latest/job-scheduling.html,一个公平的调度程序应该可以解决这个问题。然而,我没有注意到这改变了什么。我配置的排定程序是否错误?
scheduler.xml:
<?xml version="1.0"?>
<allocations>
<pool name="test">
<schedulingMode>FAIR</schedulingMode>
<weight>1</weight>
<minShare>10</minShare>
</pool>
</allocations>
$ pyspark --conf spark.scheduler.mode=FAIR --conf spark.scheduler.allocation.file=/home/hadoop/scheduler.xml
>>> import threading
>>> sc.setLocalProperty("spark.scheduler.pool", "test")
>>> def heavy_spark_job():
# Do some heavy work
>>>
>>> def smaller_spark_job():
# Do something simple
>>>
>>> threading.Thread(target=heavy_spark_job).start()
>>> smaller_spark_job()
只有当重型spark作业的第一个任务不需要所有可用的CPU核时,小型spark作业才能启动。
您只需要为您的任务设置不同的池:
默认情况下,每个池获得相同的集群份额(也等于默认池中的每个作业的份额),但在每个池中,作业按FIFO顺序运行。例如,如果您为每个用户创建一个池,这意味着每个用户将获得相同的集群份额,并且每个用户的查询将按顺序运行,而不是以后的查询从该用户的早期查询获取资源。
https://spark.apache.org/docs/latest/job-scheduling.html#default-behavior-of-pools
此外,在PySpark中,子线程不能继承父线程的本地属性,您必须在线程目标函数中设置池。
我正在尝试在我的应用程序中正确设置sentry软件包。 我可以登录一个用户进出和保护路由,但我似乎不能得到正常工作。我的理解是,用户在被引导到登录页面之前,会被带回到他们最初调用的路由。目前,它只是继续重定向到默认页面。 在我的路线上。php我已设置以下组: 在这个组中,我已经放置了所有受保护的路由。 在我的过滤器里。php我有以下过滤器: 路由::过滤器('sentryGuest',函数(){
我用Spring Boot构建simpy web api services应用程序,并用Spring Boot中的计划任务创建了一些cron作业服务,但不起作用。我需要在每周的12:00(星期一至星期五)运行此服务。这是一个exmaple sheduling:
我正在尝试创建一个在EST时区运行的调度程序。为此,我在Scheduled方法上添加了@Scheduled注释。方法如下所示。我希望这个方法在周一到周五的美国东部时间早上5:00运行,但它在美国东部时间凌晨3:30(美国东部时间下午6:00)运行。
我正在使用@Scheduled annotation运行cron作业。调度工作了一段时间,然后停止工作。我将给出我的代码的简化片段: 这是调度程序: 这是由调度器执行的任务 “开始代理”和“结束代理”的记录次数相同。所以,每一个日程安排都会正确地结束。 “开始任务”和“结束任务”的记录次数相同。所以,毫无疑问,“任务”并不是阻止事情。 但是过了一段时间就停止记录了。有什么问题吗? 这里,TASK_
我正在尝试通过Windows服务器2008 R2中的任务计划程序运行.cmd。我已从服务器计算机的管理员组中的用户登录到服务器。运行计划任务时,“上次运行时间”列在“状态”准备就绪时具有值 (0x1)。但没有任何反应。运行.cmd时,只需双击即可正常工作。这是服务器中的用户的问题还是其他问题?有谁知道这个问题的解决方案吗? 谢谢
我正在使用下面的代码安排作业。 上述代码的问题是,调度器仅在服务器会话之前有效。一旦执行了这个方法,我想在提到的时间触发schedulerjob,即使在服务器重启之后也是如此。有没有办法在liferay中实现这一点?