【问题标题】:Spark launcher handle and listener not giving stateSpark 启动器句柄和侦听器未提供状态
【发布时间】:2016-11-08 13:10:10
【问题描述】:

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

已成功将 Spark 作业提交到集群。但是,即使在集群上的作业完成执行后,它也不会回调侦听器类方法,并且返回的 SparkAppHandle 上的 getState() 永远不会从“未知”更改。

我正在使用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.waitFor() 方法阻止生成的Process 对象,直到spark 作业完成在集群上运行。但是在这种情况下,对于长时间运行的 spark 作业,该节点上的相应进程永远不会返回(尽管它对于在 1 或 2 分钟内完成的 spark 作业可以正常工作)

【问题讨论】:

  • 你能在哪里解决这个问题?
  • 我在 spark 用户邮件列表上得到的回复是底层 spark 至少需要 1.6.0 版本(我使用的是 1.5.1)。一旦我成功测试它,我会将它作为答案发布。

标签: apache-spark spark-launcher


【解决方案1】:

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

我一直在使用 spark 1.5.1 和 1.6.0 版本的启动器库。现在我已将 spark 集群更新到 1.6.0 版本,现在我正在获取对 listener 方法的回调。

【讨论】:

  • 必须做些什么才能使其正常工作?我也面临同样的问题。应用程序在获取 appID 和状态后立即退出。如果我显式调用 Thread.sleep() 则有效。谢谢! ——
  • 我遇到的问题是根本没有获取状态或 appID。如果你想等待火花作业完成,我认为,你可以放一个循环来轮询句柄的状态,直到它达到最终状态(handle.getState().isFinal())。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 2014-09-03
  • 2015-08-30
相关资源
最近更新 更多