赞
踩
通常如果我们想要一个稳定的生产Spark环境, 那么最优的选择就是构建:HA StandAlone集
群.。不过在企业中, 服务器的资源总是紧张的, 许多企业不管做什么业务,都基本上会有Hadoop集群. 也就是会有YARN集群。对于企业来说,在已有YARN集群的前提下在单独准备Spark StandAlone集群,对 资源的利用就不高 . 所以, 在企业中,多 数场景下,会将 Spark 运行到 YARN 集群中。YARN本身是一个资源调度框架, 负责对运行在内部的计算框架进行资源调度管理。作为典型的计算框架, Spark本身也是可以直接运行在YARN中, 并接受YARN的调度的。
简而言之:就是让YARN替代Spark的Master和Worker的资源管理工作,只负责运行就行
Master角色由YARN的ResourceManager担任.
Worker角色由YARN的NodeManager担任.Driver角色运行在 YARN 容器 内 或 提交任务的 客户端进程 中真正干活的 Executor 运行在 YARN 提供的容器 内
所以, 对于Spark On YARN, 无需部署Spark集群, 实际上,通常的做法是在集群中的一个或几个节点上安装Spark,然后通过YARN调度器来分配和管理Spark应用程序的执行。
1.需要HDFS,YARN集群已经安装了:
HDFS集群部署参考【hadoop集群部署一】http://t.csdnimg.cn/TXasCYARN集群部署参考【hadoop集群部署二】YARN,MapReducehttp://t.csdnimg.cn/5Jf78
2.需要Spark客户端工具, 比如spark-submit, 可以将Spark程序提交到YARN中3.需要被提交的代码程序:,如spark/examples/src/main/python/pi.py此示例程序,或我们后续自己开发的Spark任务
-单点安装: 可以在集群中的一个节点上安装Spark。这个节点可以是YARN集群中的任何一台机器,通常是NameNode或其他具有较高资源的节点。
-多点安装: 在某些情况下,可能会选择在多个节点上安装Spark,以减少网络传输延迟。但这并不是必须的,通常单个节点上的安装就足够了。本教程以单点安装举例,部署机器node1。多点安装基本就是复制单点安装的Spark安装部署。
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的安装部署http://t.csdnimg.cn/5hvKM
提示:如果之前部署过Spark Local(你想要部署的机器上部署过Spark),或者StandALone,又或是StandALone HA,Spark安装可以不用管。直接跳到Spark On Yarn 部署的环节然后往下走就行。
(我的是 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
- export SPARK_HOME=/export/server/spark
-
- # 如果不用pyspark可以不用管,pyspark运行的python虚拟环境路径
- export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python3.8
-
- export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
:wq
source /etc/profile
vim /root/.bashrc
添加
- export JAVA_HOME=/export/server/jdk
-
- # 不用pyspark的不用管,和/etc/profile文件一样。
- export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python3.8
:wq
cd /export/server/spark/conf # 注意路径
vim spark-env.sh
- ## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
- HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
- YARN_CONF_DIR=/export/server/hadoop/etc/hadoop
:wq
cd ..
tip : 多点安装,想要安装的机器都要完成上述操作,可以分发 (一般来说单台机器就够了)
tip:请保证HDFS,YARN,以及相关的历史服务器已经启动
start-dfs.sh start-yarn.sh $HADOOP_HOME/bin/mapred --daemon start historyserver sbin/start-history-server.sh
bin/pyspark --master yarn
bin/spark-shell --master yarn
bin/spark-submit --master yarn /export/server/spark/examples/src/main/python/pi.py 10
node1:8088
Spark On YARN是有两种运行模式的,一种是Cluster模式一种是Client模式.
这两种模式的区别就是Driver运行的位置。
- bin/spark-submit --master yarn\
- --deploy-mode cluster \
- --driver-memory 521m \
- --executor-memory 512m \
- --num-executors 3 \
- --total-executor-cores 3 \
- /export/server/spark/examples/src/main/python/pi.py 10
Client模式
即:Driver运行在客户端进程中, 比如Driver运行在spark-submit程序的进程中
- bin/spark-submit --master yarn\
- --deploy-mode client \
- --driver-memory 521m \
- --executor-memory 512m \
- --num-executors 3 \
- --total-executor-cores 3 \
- /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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。