如何利用Web应用程序中的spark集群?

时间:2016-09-13 12:04:10

标签: apache-spark

很多人都问过这个问题但除了链接和参考文献之外没有明确的答案,而且大多数都不是最近的。问题是: 我有一个Web应用程序需要利用spark集群来运行spark-sql查询。我的理解是提交作业脚本是异步的,因此这在这里不起作用。如何在这样的设置中利用spark?我可以像在自包含的火花应用程序中一样在Web应用程序中编写代码,即创建上下文,设置主URL并执行我需要做的操作吗?这会在网络应用程序中运行吗?如果是,那么何时需要提供REST API的作业服务器来提交作业?

2 个答案:

答案 0 :(得分:0)

用于启动Spark应用程序的库。

此库允许应用程序以编程方式启动Spark。该库只有一个入口点 - SparkLauncher 类。

要启动Spark应用程序,只需实例化 SparkLauncher 并配置要运行的应用程序。例如:

import org.apache.spark.launcher.SparkLauncher;

   public class MyLauncher {
     public static void main(String[] args) throws Exception {
       Process spark = new SparkLauncher()
         .setAppResource("/my/app.jar")
         .setMainClass("my.spark.app.Main")
         .setMaster("local")
         .setConf(SparkLauncher.DRIVER_MEMORY, "2g")
         .launch();
       spark.waitFor();
     }
   }

参考文献: https://spark.apache.org/docs/1.4.0/api/java/org/apache/spark/launcher/package-summary.html

答案 1 :(得分:0)

我认为选项将是

  • 通过像Livy这样的休息api(Livy是一个新的开源Spark REST 用于提交和与您的Spark作业交互的服务器 任何地方。 )或Spark服务器(REST API) - 了解它们如何连接 使用内核交互式激发 - https://www.youtube.com/watch?v=TD1J7MzYcFo&feature=youtu.be&t=33m19s

    https://developer.ibm.com/open/apache-toree/

  • 通过jdbc(通过Thrift JDBC / ODBC服务器运行)

  • 通过ssh并提交作业并等待纱线状态(这将是 通过SSH连接到群集并通过YARN - YARN提交火花 为您提供应用程序ID,您可以跟踪应用程序 纱线应用状态命令的状态)