繁体   English   中英

将 spark 作业提交给 spark-submit 和直接提交给 hadoop 有什么区别?

[英]What is the difference between submitting spark job to spark-submit and to hadoop directly?

我注意到在我的项目中有两种运行火花作业的方法。

  1. 第一种方法是将作业提交到 spark-submit 文件

    ./bin/spark-提交
    --class org.apache.spark.examples.SparkPi
    --主本地[8]
    /path/to/examples.jar
    100

  2. 第二种方法是将 java 文件打包成 jar 并通过 hadoop 运行它,同时在 MainClassName 中有 Spark 代码:

    hadoop jar JarFile.jar MainClassName

` 这两种方式有什么区别? 我需要具备哪些先决条件才能使用它们?

正如您在运行 spark 作业的第二种方式中所述,使用 Spark 类和/或语法打包 java 文件实质上是将 Spark 作业包装在 Hadoop 作业中。 这可能有其缺点(主要是您的工作直接依赖于系统/集群上的 javascala 版本,但也有一些关于不同框架版本之间支持的成长烦恼)。 因此,在这种情况下,开发人员必须注意作业将在两个不同平台上运行的设置,即使对于对 Java 和 Map/Reduce/Driver 有更好掌握的 Hadoop 用户来说似乎更简单布局,而不是 Spark 的更多已经调整的性质和 Scala 的那种陡峭的学习曲线便利。

提交作业的第一种方式是最“标准”的(就大多数用法而言,它可以在网上看到,所以对此持保留态度),几乎完全在 Spark 内操作作业的执行(除非当然,您可以存储作业的输出或从 HDFS 获取其输入)。 通过使用这种方式,您只是在某种程度上依赖于 Spark,从而使 Hadoop(又名 YARN 资源管理)的奇怪方式远离您的工作。 而且它的执行时间可以明显加快,因为它是最直接的方法。

暂无
暂无

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

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