简介
引言:
通常如果我们想要一个稳定的生产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集群部署一】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:
-单点安装: 可以在集群中的一个节点上安装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的安装部署http://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
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
Spark On Yarn 部署
修改配置文件:
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
运行
启功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