在java中没有spark提交可以吗?

在java中没有spark提交可以吗?,java,apache-spark,Java,Apache Spark,我听说有一个spark群集运行在“remote-host-num1:7077”上,在“remote-host-num2:7077”“remote-host-num3:7077”上有多个节点 如果我编写的程序执行以下操作: SparkConf conf = new SparkConf().setAppName("org.sparkexample.TestCount").setMaster("spark://remote-host-num1:7077"); JavaSparkCont

我听说有一个spark群集运行在“remote-host-num1:7077”上,在“remote-host-num2:7077”“remote-host-num3:7077”上有多个节点

如果我编写的程序执行以下操作:

    SparkConf conf = new SparkConf().setAppName("org.sparkexample.TestCount").setMaster("spark://remote-host-num1:7077");
    JavaSparkContext sc = new JavaSparkContext(conf);
并从sc.textFile创建JavaRDD“myrdd”,并执行类似于使用“myrdd.count()”获取其计数的操作。 此操作是否利用了远程群集中的所有计算机


我想确保,如果可以避免的话,我不想使用spark提交“myjarfile”。如果我必须这么做,我应该怎么做?如果我必须使用spark submit来利用spark在多台机器上的分布式特性,有没有一种方法可以在Java中通过编程实现这一点

是的,spark-1.4.x中添加了对将scala/java spark应用程序作为子进程提交的支持。您可以在java文档中查看org.apache.spark.launcher类的更多详细信息。下面的链接是spark文档中引用的链接

问题1:此操作是否利用了远程集群中的所有机器

去。。。本页帮助您了解spark群集的分布式特性。。。有多少工人在运转?目前有多少工人在工作?等

您甚至可以提交作业并检查此页面,以查看作业是否委派给所有员工*对于像count这样的操作,它很可能是分布式的。Spark将作业分为多个阶段,并将其交给工作节点处理。*

看起来集群中有两个spark Master托管在remote-host-num2:7077和remote-host-num3:7077,其中一个将被选为领导者。它们之间不共享群集管理。如果当前引线向下,则另一个引线将成为引线

问题2:如果我必须使用spark submit来利用spark跨多台机器的分布式特性,有没有一种方法可以用Java编程实现这一点

将作业提交到集群。由于Spark与RDD一起工作,RDD本质上是不可变的,因此它们上的操作可以很容易地并行化。正如我前面所说,提交作业,看看是否所有工人都在处理该作业

有关所有选项,请参阅spark submit的文档。例如:--executor cores属性可用于建议作业的核心数

问题3:是否可以在没有spark submit的情况下连接到成熟的spark群集

在spark应用程序的主要方法中,完全填充spark配置主url、部署模式、执行器配置、驱动程序配置等。。简单地管理你的班级


我建议你和我一起去。Spark支持与多个群集管理器一起运行(目前支持Spark群集、mesos和纱线)。。。其要点是,开发只包含业务逻辑的应用程序。。然后你可以在你选择的环境中提交它。

这不适用于pyspark/python应用程序吗?@Rolando从我的判断来看,不。你是说如果我在一台机器上启动一个主机,在另外两台机器上启动“启动从机”,主机就会停机,然后其中一个奴隶将自动成为主人,而无需我“启动主人”?奴隶不会像那样成为主人。。但是它需要一个小的高可用性设置,在这个设置中,您可以在同一个spark集群中启动多个主机。在任何时候,其中只有一个是活动的,它被称为Leader。有关spark中高可用主机的更多详细信息,请参阅本文档: