将spark作业提交到spark submit和直接提交到hadoop之间有什么区别?

pkwftd7m  于 2021-05-17  发布在  Spark
关注(0)|答案(1)|浏览(630)

我注意到在我的项目中有两种运行spark作业的方法。
第一种方法是提交作业以触发提交文件
./bin/spark提交
--类org.apache.spark.examples.sparkpi
--主本地[8]
/路径/to/examples.jar
100
第二种方法是将java文件打包到jar中,并通过hadoop运行它,同时在mainclassname中包含spark代码:
hadoop jarfile.jar主类名
`这两种方式有什么区别?我需要具备哪些先决条件才能使用它们?

rggaifut

rggaifut1#

正如您在运行spark作业的第二种方法中所述,用spark类和/或语法打包java文件实质上就是将spark作业 Package 在hadoop作业中。这可能有其缺点(主要是您的工作直接依赖于系统/集群上的java和scala版本,但也有一些关于不同框架版本之间支持的成长烦恼)。因此,在这种情况下,开发人员必须小心作业将在两个不同平台上运行的设置,即使对于hadoop用户来说似乎更简单一些,因为hadoop用户更好地掌握了java和map/reduce/driver布局,而不是spark更易调整的特性和scala那种陡峭的学习曲线。
提交作业的第一种方式是最“标准”的(就大多数用法而言,它可以在网上看到,因此对此持保留态度),几乎完全在spark中操作作业的执行(当然,存储作业的输出或从hdfs获取其输入的情况除外)。通过使用这种方式,您只需要在某种程度上依赖于spark,从而使hadoop(也称为其Yarn资源管理)的奇怪方式远离您的工作。而且它可以在执行时间上显著加快,因为它是最直接的方法。

相关问题