有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Apache Spark:使用sparksubmit比运行“单机版”慢3倍

我在Eclipse中设置了一个Maven项目,其中包含一个使用ApacheSpark的应用程序。应用程序执行迭代步骤以获得答案。最后,我想在集群上部署它

问题是,当我直接在Eclipse中运行程序时,程序的迭代部分需要57秒。当我使用spark-submit.cmd脚本运行它时,需要152秒!为什么会这样?两者都以完全相同的配置设置运行,以local[*]作为主机

Eclipse运行的有效命令行是这一行http://pastebin.com/5nybz1N3

spark-submit的有效命令是

spark-submit --class org.comanche.yukon.Yukon yukonjar.jar

为什么会这样?是不是因为spark-submit建立了一些实际的网络连接,而我得到了很多延迟?我怎么知道

我还从spark-submit获得了OutOfMemoryError,但不是Eclipse运行。这有关系吗

我唯一的配置是这样的,正如我创建SparkContext

public static void main(String[] args) {
    SparkConf conf = new SparkConf()
        .setAppName("yukon")
        .setMaster("local[*]")
        .set("spark.driver.maxResultSize", "0");
    jsc = new JavaSparkContext(conf);
    ....

我使用的是一个有12个逻辑核的系统

eclipse的JvM设置是

-startup
plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.300.v20150602-1417
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms256m
-Xmx1024m

谢谢你的帮助


共 (0) 个答案