繁体   English   中英

在java中可以不用spark-submit吗?

[英]Can do without spark-submit in java?

我被告知有一个火花集群在“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-submit“myjarfile”,如果我可以避免它。 如果必须,我该怎么办? 如果我必须使用spark-submit来利用多个机器上的spark的分布式特性,有没有办法在Java中以编程方式执行此操作?

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

https://spark.apache.org/docs/latest/programming-guide.html#launching-spark-jobs-from-java--scala

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

转到http:// remote-host-num2:8080 ...此页面可帮助您了解Spark群集的分布式特性... 正在运行多少个工作人员? 目前有多少工人活跃? 等等

您甚至可以提交作业并查看此页面,以查看作业是否委托给所有工作人员。 *对于像计数一样的操作,它很可能会被分发。 Spark将作业分成几个阶段,并将它们分配给工作节点进行处理。*

看起来在remote-host-num2托管的集群中有两个spark-masters :7077&remote-host-num3:7077其中一个将被选为leader。 群集管理不在它们之间共享。 如果当前领导者失败,另一个成为领导者

问题2: 如果我必须使用spark-submit来利用多个机器上的spark的分布式特性,有没有办法在Java中以编程方式执行此操作?

您将作业提交到群集。 由于Spark使用RDD,它们本质上是不可变的,因此可以轻松地对它们进行操作。 正如我之前所说,提交工作,看看所有工人是否正在处理工作。

请参阅所有选项的spark-submit文档。 例如: - executor-cores属性允许您为作业建议数字核心。

问题3:是否可以通过spark-submit连接到完整的火花簇?

在你的spark应用程序的主要方法中,完全填充spark配置主url,deploymode,执行器配置,驱动程序配置等 。并且只需运行你的类。

我建议你去火花提交。 Spark支持与多个集群管理器一起运行(当前是spark集群,mesos和yarn)...它的全部意义在于,开发包含单独业务逻辑的应用程序..然后你可以在你的环境中提交它选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM