我正在以独立模式运行Spark群集。
我已使用以下选项提交了群集模式下的Spark应用程序:
--deploy-mode cluster –supervise
使作业具有容错性。
现在我需要保持集群运行但停止应用程序运行。
我尝试过的事情:
所以正在运行的应用程序确实是容错的。
问题:基于上述场景,有人可以建议我如何停止作业运行,或者我可以尝试停止应用程序运行但保持集群运行的其他方法。
如果我调用sparkContext,我就会产生一些想法。stop()应该这样做,但这需要在代码中做一些工作,这是可以的,但您可以在不更改代码的情况下提出任何其他方法。
https://community.cloudera.com/t5/Support-Questions/What-is-the-correct-way-to-start-stop-spark-streaming-jobs/td-p/30183
根据此链接,如果您的主人使用纱线,请停止
yarn application -list
yarn application -kill application_id
重温这个,因为我无法在不调试一些东西的情况下使用现有的答案。
我的目标是以编程方式杀死一个每天持续运行一次的驱动程序,部署对代码的任何更新,然后重新启动它。所以我不会提前知道我的司机ID是什么。我花了一些时间才弄明白,只有使用部署模式集群选项提交驱动程序,才能杀死驱动程序。我还花了一些时间才意识到应用程序ID和驱动程序ID之间存在差异,虽然您可以轻松地将应用程序名称与应用程序ID关联起来,但我还没有找到一种方法通过它们的apiendpoint来判断驱动程序ID,并将其与应用程序名称或正在运行的类关联起来。所以,当运行class org时。阿帕奇。火花部署客户端终止
此外,spark在http上默认提供了一个提交endpoint://
由于我无法从任何apiendpoint找到与特定作业相关的驱动程序ID,因此我编写了一个python web scraper,从端口8080的基本spark母版网页获取信息,然后使用端口6066的endpoint终止它。我更愿意以支持的方式获取这些数据,但这是我能找到的最好的解决方案。
#!/usr/bin/python
import sys, re, requests, json
from selenium import webdriver
classes_to_kill = sys.argv
spark_master = 'masterurl'
driver = webdriver.PhantomJS()
driver.get("http://" + spark_master + ":8080/")
for running_driver in driver.find_elements_by_xpath("//*/div/h4[contains(text(), 'Running Drivers')]"):
for driver_id in running_driver.find_elements_by_xpath("..//table/tbody/tr/td[contains(text(), 'driver-')]"):
for class_to_kill in classes_to_kill:
right_class = driver_id.find_elements_by_xpath("../td[text()='" + class_to_kill + "']")
if len(right_class) > 0:
driver_to_kill = re.search('^driver-\S+', driver_id.text).group(0)
print "Killing " + driver_to_kill
result = requests.post("http://" + spark_master + ":6066/v1/submissions/kill/" + driver_to_kill)
print json.dumps(json.loads(result.text), indent=4)
driver.quit()
如果希望终止重复失败的应用程序,可以通过以下方式执行:
./bin/spark-class org.apache.spark.deploy.Client kill <master url> <driver ID>
您可以通过http://:8080上的独立主web UI找到驱动程序ID。
来自Spark Doc
我有一个正在运行的Spark应用程序,它占据了所有核心,而我的其他应用程序将不会被分配任何资源。 我做了一些快速的研究,人们建议使用YARN kill或 /bin/spark-class来杀死命令。然而,我使用的是CDH版本, /bin/spark-class根本不存在,YARN kill应用程序也不起作用。 有人能和我一起吗?
我正在创建一个BLE应用程序,需要连续启动和停止扫描预定义的时间间隔。我实现它的方式是使用两个Runnable,它们相互调用,如下所示: 我正在尝试开始连续扫描并在单击按钮时暂停。开始按钮可以启动过程,但我无法停止扫描。 如果在停止间隔期间按下停止按钮,扫描将停止。但是,如果在扫描可运行状态下按stop按钮,则会删除stopScan可运行状态下的回调,同时保持扫描可运行状态持续运行。我需要的是两个
我的iOS应用程序在出现运行时错误后停止运行。我将错误捕获为异常。我希望应用程序在错误处理后继续运行到下一步。有人建议怎么做吗?
上周,我完成了一个测试应用程序的开发,并在所有模拟器中成功运行了它。今天我决定考虑发布这个应用程序,并使用了“Sent Android Build”。生成状态“成功”。然后尝试从命令行运行jar,得到: 所以试图逃离GUI并得到: Java版本: 我在Suse Linux 42.1 64b上使用Netbeans(这是新的)。 我在什么地方丢了一个图书馆吗?还是别的什么?
问题内容: 我正在尝试制作一个简单的计时器,该计时器在指定的秒数后发出提示音。我设法使其正常工作,但是TimerTask在蜂鸣声后继续运行。现在我停止执行吗?这是我的代码: 问题答案: 您需要通过调用以下方法来取消计时器 这将取消任务,因此可以执行以下操作:
我有个问题希望你能帮我解决。 有时,我的应用程序会出现一些错误,并继续在服务器上运行,直到我手动停止服务器并重新启动。