spark on yarn 配置、部署模式DeployMode

目录

一、spark on yarn本质

二、spark on yarn 配置    

   1.spark-env.sh文件

        2.yarn-site.xml文件

        3.spark-defaults.conf文件

        4.上传spark依赖jar包

        5.修改spark-defaults.conf文件 

        6.yarn资源检查配置(防止虚拟机内存不足导致无法运行程序)

7.启动集群

8.测试集群运行

​三、部署模式DeployMode

        1.client和cluster模式

        2.YARN-client和YARN-cluster启动流程

        3.YARN-client与YARN-cluster的不同之处


一、spark on yarn本质

        Master角色由YARN的ResourceManager担任.

        worker角色由YARN的NodeManager担任.

        Driver角色运行在YARN容器内或提交任务的客户端进程中

        Executor运行在YARN提供的容器内

二、spark on yarn 配置    

   1.spark-env.sh文件

#添加内容

HADOOP_CONF_DIR=/export/servers/hadoop/etc/hadoop

YARN_CONF_DIR=/export/servers/hadoop/etc/hadoop

分发文件

        2.yarn-site.xml文件

#添加内容

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

<property>

<name>yarn.log-aggregation.retain-seconds</name>

<value>604800</value>

</property>

<property>

<name>yarn.log.server.url</name>

<value>http://server01:19888/jobhistory/logs</value>

</property>

        分发文件

        3.spark-defaults.conf文件

#添加内容

spark.yarn.historyServer.address server01:18080

分发文件

        4.上传spark依赖jar包

hdfs dfs -mkdir -p /spark/apps/jars/

hdfs dfs -put /export/servers/spark/jars/* /spark/apps/jars

        5.修改spark-defaults.conf文件 

spark.yarn.jars       hdfs://server01:8020/spark/apps/jars/*

        分发文件

        6.yarn资源检查配置(防止虚拟机内存不足导致无法运行程序)

<property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>

                分发文件

7.启动集群
--node1执行
#启动HDFS和YARN
hdfs --daemon start namenode
hdfs --daemon start datanode
yarn --daemon start resourcemanager
yarn --daemon start nodemanager
#启动MRHistoryserver服务
mapred --daemon start historyserver
#启动spark historyserver服务
/export/servers/spark/sbin/start-history-server.sh

8.测试集群运行
${SPARK_HOME}/bin/spark-submit \
> --master yarn \
> --class org.apache.spark.examples.SparkPi \
> ${SPARK_HOME}/examples/jars/spark-examples_2.13-3.2.4.jar \
> 100

、部署模式DeployMode

        1.client和cluster模式

        使用spark-submit脚本提交应用运行时,指定参数:--deploy-mode,表示Driver Program运行的地方

        ·值:client(默认),表示Dirver Program进程process运行在应用提交客户端Client

        client模式下:Driver名称为Spark Submit,Executor名称为CoarseGrainedExecutorBackend

SPARK_HOME=/export/servers/spark
${SPARK_HOME}/bin/spark-submit \
--master spark://server01:7077,server02:7077,server03:7077 \
--deploy-mode client \
--driver-memory 512m \
--executor-memory 512m \
--executor-cores 1 \
--total-executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples_2.13-3.2.4.jar \
1000

        ·值:cluster,表示Dirver Program进程process运行在应集群从节点中,如worker或Node manager中

cluster模式下:Driver名称为DriverWrapper,Executor名称为CoarseGrainedExecutorBackend

SPARK_HOME=/export/servers/spark
${SPARK_HOME}/bin/spark-submit \
--master spark://server01:7077,server02:7077,server03:7077 \
--deploy-mode cluster \
--supervise \
--driver-memory 512m \
--executor-memory 512m \
--executor-cores 1 \
--total-executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples_2.13-3.2.4.jar \
1000

        在企业实际生产环境中,Deploy Mode部署模式为:Cluster,测试开发时为:Client

        2.YARN-client和YARN-cluster启动流程
  1. YARN-cluster启动流程

(1)任务提交后会和Resource Manger通讯申请启动Application Master;

(2)随后Resource Manager分配Container,在合适的Node Manager上启动Application Master,此时的Application Master就是Driver;

(3)Driver启动后向Resource Manager生气Executor内存,Resource Manager街道Application Master的资源申请后分配Container,然后在合适的Node Manager上启动Executor进程;

(4)Executor进程启动完成后会向Driver反向注册;

(5)Executor全部注册完成后会Driver开始执行main函数,之后执行到Action算子时,触发应该job,并根据宽依赖开始划分stage,每个stage生成会有的taskSet,之后将task分发到各个Executor上执行

        2.YARN-client启动流程

(1)Driver在任务提交的本地机器上运行,Driver启动后会和Resource Manager通讯申请启动Application Master;

(2)随后Resource Manager分配Container,在合适的Node Manager上启动Application Master,此时的Application Master相当于一个Executor Laucher,只负责向Resource Manager申请Executor内存;

(3)Resource Manager接到Application Master的资源申请后分配Container,然后Application Master在资源分配指定的Node Manager上启动Executor进程;

(4)Executor进程启动后会向Driver反向注册,Executor全部注册完成后Driver开始执行main函数;

(5)之后执行到Action算子时,触发一个Job,并根据宽依赖开始划分Stage,每个Stage生成对应的TaskSet,之后将Task分发到各个Executor上执行。

        3.YARN-client与YARN-cluster的不同之处

        ①YARN-client模式,Driver运行在本地机器上;YARN-cluster模式,Driver运行在YARN集群上某个NodeManger节点上。

        ②YARN-client模式会导致本地机器负责Spark任务的调度,所以网卡流量会激增;YARN-cluster模式没有流量激增的问题。

        ③YARN-client的Driver运行在本地,通常的来说本地机器和YARN集群不在同一个机房,所以性能不会很好;YARN-cluster模式下,Driver和YARN集群运行在同一个机房内,性能上来说会好一点。

        

Cluster模式和Client模式
Cluster模式Client模式
Driver运行位置YARN容器内客户端进程内
通讯效率低于Cluster模式
日志查看日志输出在容器内,查看不方便日志输出在客户端的标准输出流中,方便查看
生产可用推荐不推荐
稳定性稳定基于客户端进程,收到客户端进程影响

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于Spark on YARN的集群部署,您可以按照以下步骤进行操作: 1. 首先,确保已经安装和配置好Hadoop和YARN集群。确保YARN ResourceManager和NodeManager正在运行,并且集群配置正确。 2. 下载Spark二进制文件并解压缩到每个节点上。确保在所有节点上使用相同的Spark版本。 3. 在Spark的conf目录中,创建一个名为spark-env.sh的文件,并设置以下参数: ``` export HADOOP_CONF_DIR=<Hadoop配置目录> export YARN_CONF_DIR=<YARN配置目录> ``` 将 `<Hadoop配置目录>` 替换为Hadoop配置文件所在的目录路径,将 `<YARN配置目录>` 替换为YARN配置文件所在的目录路径。 4. 在Spark的conf目录中,打开spark-defaults.conf文件,并添加以下参数: ``` spark.master yarn spark.submit.deployMode cluster ``` 5. 根据您的需求,可以根据集群规模和资源分配需求,调整以下参数: ``` spark.executor.memory spark.executor.cores spark.executor.instances ``` 6. 您还可以根据需要设置其他SparkYARN相关的参数,如队列设置、日志级别等。 7. 在启动Spark应用程序之前,确保您的环境变量中包含Spark和Hadoop的bin目录。您可以将这些目录添加到PATH环境变量中。 8. 使用以下命令提交Spark应用程序: ``` ./bin/spark-submit --class <main-class> --master yarn --deploy-mode cluster <application-jar> [application-arguments] ``` 将 `<main-class>` 替换为您的应用程序的主类,将 `<application-jar>` 替换为您的应用程序的JAR文件路径。 9. Spark提交应用程序后,YARN将为您的应用程序启动相应的Executor,并将资源分配给它们。您可以使用YARN的Web界面或命令行工具来监视和管理Spark应用程序。 请注意,这只是Spark on YARN集群部署的基本步骤,您可能需要根据您的特定环境和需求进行一些调整和配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吗喽也是命

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值