gpt4 book ai didi

apache-spark - Spark 启动器句柄和监听器未提供状态

转载 作者:行者123 更新时间:2023-12-04 05:01:55 24 4
gpt4 key购买 nike

我有一个 Web 应用程序,它将使用 spark 启动器库在 Cloudera spark 集群上提交 spark 作业。

它正在成功地将 spark 作业提交到集群。但是它没有回调监听器类方法,也没有回调 getState()。返回时 SparkAppHandle即使作业在集群上完成执行后,也永远不会从“未知”更改。

我正在使用 yarn-cluster模式。这是我的代码。还有什么需要做的吗?

SparkLauncher launcher = new SparkLauncher()
.setSparkHome("sparkhome")
.setMaster("yarn-cluster")
.setAppResource("spark job jar file")
.setMainClass("spark job driver class")
.setAppName("appname")
.addAppArgs(argsArray)
.setVerbose(true)
.addSparkArg("--verbose");

SparkAppHandle handle = launcher.startApplication(new LauncherListener());

int c = 0;
while(!handle.getState().isFinal()) {
LOG.info(">>>>>>>> state is= "+handle.getState() );
LOG.info(">>>>>>>> state is not final yet. counter= "+c++ );
LOG.info(">>>>>>>> sleeping for a second");
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
}
if(c == 200)
break;
}

以下是我已经尝试过的事情:

  1. 将监听器实例添加到 SparkAppHandle启动应用程序后。
  2. 使当前类实现SparkAppHandle.Listener并以两种方式传递它 ( this )(在启动时,并将其设置为 SparkAppHandle )
  3. 尝试使用 launcher.launch()方法,这样至少我可以阻止结果 Process通过调用对象 process.waitFor()方法,直到 spark 作业完成在集群上运行。然而在这种情况下,对于长时间运行的 spark 作业,此节点上的相应进程永远不会返回(尽管它适用于在 1 或 2 分钟内完成的 spark 作业)

最佳答案

我已经从 spark 用户邮件列表中得到了这个问题的答案。要使此功能正常工作,不仅 Spark 启动器需要为 1.6.0,底层 Spark 也至少应为 1.6.0。

我一直在使用 spark 1.5.1 和 1.6.0 版本的启动器库。现在我已经将 spark cluster 更新到 1.6.0 版本,现在我收到了 listener 的回调。方法。

关于apache-spark - Spark 启动器句柄和监听器未提供状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39128107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com