在Yarn上运行spark时应该使用哪种模式?

izkcnapc  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(448)

我知道在Yarn集群上运行spark应用程序时有两种模式。
在“Yarn簇”模式下,驱动程序在应用程序主机(Yarn簇内)中运行。在客户机模式下,它在提交作业的客户机节点中运行
我想知道使用一种模式比另一种模式有什么好处?在什么情况下我们应该使用哪种模式。

svujldwt

svujldwt1#

有两种部署模式可用于在yarn上启动spark应用程序。
yarn cluster:spark驱动程序在hadoop集群中作为yarn应用程序主程序运行,并在yarn容器中启动spark执行器。这允许spark应用程序在hadoop集群中运行,并与工作台完全分离,工作台仅用于作业提交。举个例子:

[terminal~]:cd $SPARK_HOME
[terminal~]:./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn 
–deploy-mode cluster --num-executors 3 --driver-memory 1g --executor-memory 
2g --executor-cores 1 --queue thequeue $SPARK_HOME/examples/target/spark-examples_*-1.2.1.jar

请注意,在上面的示例中,–queue选项用于指定应用程序提交到的hadoop队列。
yarn客户机:spark驱动程序在工作台上运行,而应用程序主程序则以简化的角色运行。它只从yarn请求资源,以确保spark worker驻留在yarn容器中的hadoop集群中。这提供了一个具有分布式操作的交互式环境。下面是一个在这种模式下调用spark的示例,同时确保它能够使用hadoop lzo编解码器:

[terminal~]:cd $SPARK_HOME
[terminal~]:bin/spark-shell --master yarn --deploy-mode client --queue research 
--driver-memory 512M --driver-class-path /opt/hadoop/share/hadoop/mapreduce/lib/hadoop-lzo-0.4.18-201409171947.jar

因此,当您希望为您的工作提供交互式环境时,应该使用客户机模式。yarn客户机模式接受来自sparkshell的命令。
当您想从spark workbench中分离工作时,请使用“Yarn簇”模式。

相关问题