Spark与Hadoop的兼容性

1. 目的

Spark与Hadoop兼容,本章将讨论Spark如何与Hadoop兼容。涵盖Hadoop上使用Spark的三种方法,即Standalone、YARN、SIMR(Spark In MapReduce)。我们还将讨论在Standalone模式下启动Spark应用程序,在YARN上启动Spark应用程序。

2. Spark如何与Hadoop兼容

Spark不是为了取代Hadoop,但它却影响着Hadoop。Spark可以从HDFS(Hadoop分布式文件系统)读取数据并将数据写入HDFS,Spark是基于Hadoop的数据处理引擎。

3. Spark与Hadoop的兼容性

可以通过三种方式在Hadoop上使用Spark:

1)Standalone

可以在Hadoop集群中的所有机器或部分机器上分配资源,可以运行Spark同时运行Hadoop MapReduce。

2)YARN

可以将Spark集成到Hadoop堆栈中,在YARN上运行Spark。

3)SIMR (Spark in MapReduce)

在MapReduce中启动Spark作业, 使用SIMR,我们可以在下载完成后的几分钟内使用Spark shell。由于Hadoop V1现在已经不使用,所以不讨论SIMR。

3.1 在Standalone模式下启动Spark应用程序

Spark支持两种部署模式,即集群模式(cluster mode)和客户端模式(client mode)。在客户端模式下,驱动程序(driver)在客户端提交应用程序的相同进程中启动;在集群模式下,驱动程序从群集中的一个工作节点进程启动,客户端进程退出,客户端不用等待应用程序执行完成。

1)添加jar

如果我们通过Spark submit启动应用程序,应用程序jar会自动分发到所有工作节点,任何其他jar通过–jars标志指定,使用逗号作为分隔符。如果应用程序以非零退出码退出,则重新启动应用程序。

2)在Standalone模式下运行应用程序

如果我们想从HDFS获取输入,请使用以下代码:

$ ./bin/spark-submit --class path.to.your.Class --master spark://master:port MyApp.jar --input hdfs://localhost:9000/input-file-path --output output-file-path

3.2 在YARN上启动Spark

在YARN上启动Spark应用程序,有两种部署模式:集群模式和客户端模式。

1)集群模式

在集群模式下,驱动程序在Application Master进程内运行,并由集群上的YARN进行管理。

2)客户端模式

在客户端模式下,驱动程序在客户端进程中运行,并且Application Master仅用于从YARN请求资源并将其提供给驱动程序。

在YARN模式下,ResourceManager的地址来自Hadoop配置。所以,这里的–master参数是yarn。

如果我们想要在集群模式下启动Spark应用程序,请使用以下命令:

$ ./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster [options] <app jar> [app options]

如果我们想要在客户端模式下启动Spark应用程序,请使用以下命令:

$ ./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode client [options] <app jar> [app options]

当我们在集群模式下运行时,驱动程序运行在与客户端不同的机器上,因此为了使客户端上的文件可用于SparkContext.addJar,请在启动命令中添加–jars选项。

例如:

$ ./bin/spark-submit --class my.main.Class --master yarn --deploy-mode cluster --jars my-other-jar.jar,my-other-other-jar.jar my-main-jar.jar app_arg1 app_arg2

如果我们希望可以从YARN端访问Spark运行时jar,请指定spark.yarn.archive或spark.yarn.jars。

如果我们没有指定这些,那么Spark将生成一个zip文件,这个文件包含目录$SPARK_HOME/jars下的所有jar,并将zip文件上传到分布式缓存。

Spark与Hadoop的兼容性
滚动到顶部