当前位置:   article > 正文

【Spark集群部署系列四】Spark on YARN介绍和环境部署

【Spark集群部署系列四】Spark on YARN介绍和环境部署

简介

引言:

通常如果我们想要一个稳定的生产Spark环境, 那么最优的选择就是构建:HA StandAlone集

群.。不过在企业中, 服务器的资源总是紧张的, 许多企业不管做什么业务,都基本上会有Hadoop集群. 也就是会有YARN集群。
对于企业来说,在已有YARN集群的前提下在单独准备Spark StandAlone集群,对 资源的利用就不高 . 所以, 在企业中,多 数场景下,会将 Spark 运行到 YARN 集群中。
YARN本身是一个资源调度框架, 负责对运行在内部的计算框架进行资源调度管理。
作为典型的计算框架, Spark本身也是可以直接运行在YARN中, 并接受YARN的调度的。

 Spark On Yarn的本质:

 简而言之:就是让YARN替代Spark的Master和Worker的资源管理工作,只负责运行就行

Master角色由YARN的ResourceManager担任.

Worker角色由YARN的NodeManager担任.
Driver角色运行在 YARN 容器 内 或 提交任务的 客户端进程
真正干活的 Executor 运行在 YARN 提供的容器

Spark On Yarn部署需要 :

所以, 对于Spark On YARN, 无需部署Spark集群, 实际上,通常的做法是在集群中的一个或几个节点上安装Spark,然后通过YARN调度器来分配和管理Spark应用程序的执行。

1.需要HDFS,YARN集群已经安装了:

HDFS集群部署参考【hadoop集群部署一】icon-default.png?t=N7T8http://t.csdnimg.cn/TXasCYARN集群部署参考【hadoop集群部署二】YARN,MapReduceicon-default.png?t=N7T8http://t.csdnimg.cn/5Jf78

2.需要Spark客户端工具, 比如spark-submit, 可以将Spark程序提交到YARN中
3.需要被提交的代码程序:,如spark/examples/src/main/python/pi.py此示例程序,或我们后续自己开发的Spark任务

 安装spark:

-单点安装: 可以在集群中的一个节点上安装Spark。这个节点可以是YARN集群中的任何一台机器,通常是NameNode或其他具有较高资源的节点


-多点安装: 在某些情况下,可能会选择在多个节点上安装Spark,以减少网络传输延迟。但这并不是必须的,通常单个节点上的安装就足够了。

本教程以单点安装举例,部署机器node1。多点安装基本就是复制单点安装的Spark安装部署。

是否需要安装Python环境?

pache Spark on YARN(Yet Another Resource Negotiator)模式并不直接依赖于Python环境。Spark on YARN主要是指Spark集群如何管理和分配资源的方式,它通过YARN(这是Hadoop的一个组件)来调度资源。这种模式下,Spark可以使用Java、Scala或Python等语言编写的应用程序。

但是,如果你的Spark作业是用Python编写的(例如使用PySpark),那么需要确保集群中的每个节点都安装了相应的Python环境,并且有正确的版本以及所需的库。

总结一下:

- 对于Spark本身:不需要Python环境。Spark可以使用Java或Scala编译并部署到YARN上,这与Python环境无关。


- 对于Python编写的Spark作业:
  - 如果你的Spark作业使用Python(PySpark),则每个执行作业的节点都需要安装Python及其相关库

 需要安装python的参考:

该教程为StandAlone模式,内含Anaconda安装,往下翻,找到Anaconda的安装部署icon-default.png?t=N7T8http://t.csdnimg.cn/5hvKM

Spark安装部署【单点安装】(node1,根据情况选择,多点安装请套用单点安装):

 提示:如果之前部署过Spark Local(你想要部署的机器上部署过Spark),或者StandALone,又或是StandALone HA,Spark安装可以不用管。直接跳到Spark On Yarn 部署的环节然后往下走就行。

上传解压spark

(我的是 spark-3.2.0-bin-hadoop3.2.tgz)

 通过什么工具不管,能上传就行。

找到spark上传的位置,cd 进到该目录,不进去也行,自己在前面加路径哈!解压。

  tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz -C /export/server spark-3.2.0-bin-hadoop3.2/
-C 参数后跟解压到哪(路径)
cd /export/server    #填你自己解压的路径

  建立软链接

 ln -s spark-3.2.0-bin-hadoop3.2/ spark
ll
配置环境变量
vim /etc/profile
  1. export SPARK_HOME=/export/server/spark
  2. # 如果不用pyspark可以不用管,pyspark运行的python虚拟环境路径
  3. export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python3.8
  4. export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

 

:wq
source /etc/profile
vim /root/.bashrc

添加 

  1. export JAVA_HOME=/export/server/jdk
  2. # 不用pyspark的不用管,和/etc/profile文件一样。
  3. export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python3.8
:wq

Spark On Yarn 部署

修改配置文件:

cd /export/server/spark/conf     # 注意路径
vim spark-env.sh
  1. ## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
  2. HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
  3. YARN_CONF_DIR=/export/server/hadoop/etc/hadoop

:wq
cd ..

tip : 多点安装,想要安装的机器都要完成上述操作,可以分发 (一般来说单台机器就够了)

tip:请保证HDFS,YARN,以及相关的历史服务器已经启动

  1. start-dfs.sh
  2. start-yarn.sh
  3. $HADOOP_HOME/bin/mapred --daemon start historyserver
  4. sbin/start-history-server.sh

 运行

启功pyspark客户端(需要python环境)

bin/pyspark --master yarn

启动scala交互式客户端

bin/spark-shell --master yarn

 提交python程序,需要python环境(spark-submit)

 bin/spark-submit --master yarn /export/server/spark/examples/src/main/python/pi.py 10

 

Web UI 

node1:8088

 Spark on Yarn部署模式

 Spark On YARN是有两种运行模式的,一种是Cluster模式一种是Client模式.

这两种模式的区别就是Driver运行的位置。

Cluster模式

即:Driver运行在YARN容器内部, 和ApplicationMaster在同一个容器内。

 

  1. bin/spark-submit --master yarn\
  2. --deploy-mode cluster \
  3. --driver-memory 521m \
  4. --executor-memory 512m \
  5. --num-executors 3 \
  6. --total-executor-cores 3 \
  7. /export/server/spark/examples/src/main/python/pi.py 10

 

Client模式

即:Driver运行在客户端进程中, 比如Driver运行在spark-submit程序的进程中 

 

  1. bin/spark-submit --master yarn\
  2. --deploy-mode client \
  3. --driver-memory 521m \
  4. --executor-memory 512m \
  5. --num-executors 3 \
  6. --total-executor-cores 3 \
  7. /export/server/spark/examples/src/main/python/pi.py 10

Client模式和Cluster模式最最本质的区别是:Driver程序运行在哪里。
Client模式:学习测试时使用,生产不推荐(要用也可以,性能略低,稳定性略低)
1.Driver运行在Client上,和集群的通信成本高
2.Driver输出结果会在客户端显示
Cluster模式:生产环境中使用该模式
1.Driver程序在YARN集群中,和集群的通信成本低
2.Driver输出结果不能在客户端显示
3.该模式下Driver运行ApplicattionMaster这个节点上,由Yarn管理,如果出现问题,yarn会重启
ApplicattionMaster(Driver)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/982770
推荐阅读
相关标签
  

闽ICP备14008679号