Spark on YARN部署模式保姆级教程

发布时间:2024年01月13日

目录

一、引言

二、基础环境(可根据自己的环境进行调整)

三、安装包下载及解压

1.下载压缩包及上传

2.上传压缩包

3.解压

四、配置环境变量

五、Spark的配置

六、配置worker节点

七、启动Spark集群

八、测试用例

九、关闭集群


一、引言

  1. Local模式:这种模式主要用于本地开发和测试。它可以启动一个或多个执行器,具体取决于你是否使用"local"还是"local [n]"来启动Spark应用。"local"模式表示利用本节点单核单线程运行,而"local [n]"则表示利用本节点多核多线程运行。

  2. Standalone模式:这是独立模式,自带完整的服务,可以单独部署到一个集群中,无需依赖任何其他资源管理系统。从一定程度上说,该模式是其他三种模式的基础。目前Spark在Standalone模式下是没有任何单点故障问题的,这是借助ZooKeeper实现的。

  3. Yarn模式:这种模式运行在YARN资源管理器框架之上,由YARN负责资源管理,Spark负责任务调度和计算。

  4. Mesos模式:这种模式运行在Mesos资源管理器框架之上,由Mesos负责资源管理,Spark负责任务调度和计算。

  5. Kubernetes模式:这是一种较新的部署模式,将Spark应用部署到Kubernetes集群中。

没有最好的部署模式,具体要根据实际需求进行部署,由于Spark可以和Hadoop部署在一起,相互协作,Hadoop的HDFS,HBase负责数据存储与管理,Spark负责数据的计算,所以本文将详细讲解Spark on YARN模式的部署。

二、基础环境(可根据自己的环境进行调整)

1. Linux系统,CentOS7.6及以上

2. Hadoop3.3.5

3.JDK1.8版本及以上

4. spark3.4.0

5.集群架构

Hadoop集群架构Spark架构? ? ? ? ? ? ?IP
masterMaster节点192.168.244.131
hadoop01Worker节点192.168.244.132
hadoop02Worker节点192.168.244.133

三、安装包下载及解压

1.下载压缩包及上传

访问Spark官网下载页面?

Index of /dist/spark (apache.org)icon-default.png?t=N7T8https://archive.apache.org/dist/spark/

由于此前我们已经安装了Apache Hadoop3.3.5,所以,下载“

spark-3.4.0-bin-hadoop3-scala2.13.tgz

即可。

补充:

  1. spark-3.4.0-bin-without-hadoop.tgz:这个版本是用于没有安装Hadoop环境下的Spark安装包。

  2. spark-3.4.0-bin-hadoop3-scala2.13.tgz:这个版本是专为安装了Hadoop 3.x版本且使用Scala 2.13的用户而设计的。

  3. spark-3.4.0-bin-hadoop3.tgz:这个版本则是为已经安装了Hadoop 3.x版本的用户提供的。

  4. spark-3.4.0.tgz:这是Spark 3.4.0版本的通用安装包,适用于多种环境和组合。

2.上传压缩包

通过xftp或rz命令将压缩包上传到Linux的/export/software目录

3.解压
$ tar -zxvf /export/software/spark-3.4.0-bin-hadoop3-scala2.13.tgz -C /export/servers
$ cd /export/servers
$ ln -s spark-3.4.0-bin-hadoop3-scala2.13 spark
$ chowm -R hadoop:hadoop ./spark #第一个"Hadoop"是用户名,指的是拥有执行该命令权限的用户。第二个"Hadoop"则是文件或目录的所属组名,这个命令的作用是将当前目录下的所有文件和文件夹的所有权更改为hadoop用户和hadoop组。

四、配置环境变量

1. 在Master节点终端执行以下命令

$ vim /etc/profile

# 在底部追加如下2行内容:
export SPARK_HOME=/export/servers/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

# 使环境变量生效
$ source /etc/profile

五、Spark的配置

1.? 在Master节点执行以下命令将workers.template复制并命名为“workers”

$ cd /export/servers/spark
$ cp ./conf/workers.template ./conf/workers
$ vim ./conf/workers

2. 在workers文件中设置Spark集群的Worker节点。编辑workers文件的内容,把其中的默认内容“localhost”替换成内容如下。

hadoop02
hadoop03

3. 配置spark-env.sh

在Master节点执行以下命令将spark-env.sh.template复制命名为“spark-env.sh”

$ cd /export/servers/spark/conf
$ cp spark-env.sh.template spark-env.sh

编辑spark-env.sh文件内容

vim spark-env.sh
# 在顶部输入以下内容

# 配置Java安装路径
export JAVA_HOME=/export/servers/jdk

# 配置Hadoop的配置文件路径   // on yarn 模式 主要在这
export HADOOP_CONF_DIR=/export/servers/hadoop/etc/hadoop

# 配置MASTER的IP,由于前面做了主机名映射,这里也可以直接用主机名
export SPARK_MASTER_IP=192.168.224.131  #IP地址为Master的ip地址

六、配置worker节点

在Master节点执行以下命令,将Master节点上的/export/servers/spark目录复制到各个worker节点

$ cd /export/servers/
$ scp -r ./spark-3.4.0-bin-hadoop3-scala2.13/  hadoop02:/export/servers/
$ scp -r ./spark-3.4.0-bin-hadoop3-scala2.13/  hadoop03:/export/servers/

#在node2和node3上,构建软链接,完成配置
$ cd /export/servers
$ ln -s spark-3.4.0-bin-hadoop3-scala2.13 spark
# 不推荐用mv修改目录的名字

七、启动Spark集群

  1. 切换为uHadoop用户: su - hadoop
  2. 启动Hadoop集群 :start-all.sh
  3. 在Master节点启动Master节点:start-master.sh??
  4. 执行 jps 查看是否有Master进程
  5. 在Master节点启动所有Worker节点:start-workers.sh
  6. 在Hadoop02和Hadoop03分别 jps查看是否有Worker进程
  7. 在浏览器输入http://master:8080,可以查看spark的集群信息

八、测试用例

在Spark中,根据运行模式的不同,有两种提交任务的方式:YARN-Client和YARN-Cluster。

  1. YARN-Client模式:在此模式下,Driver程序运行在提交应用程序的客户端机器上,并通过客户端来监控和管理应用程序的执行过程。资源由客户端向YARN资源管理器请求。驱动程序首先向资源管理器注册应用程序,并由客户端协调Executor的启动和资源分配。这种模式通常适用于交互、调试和小规模的任务。提交任务时,只需要有Spark的安装包即可,不需要其他配置。

  2. YARN-Cluster模式:与YARN-Client模式不同,此模式下的Driver程序运行在YARN集群中的某个Worker节点上。这样,Driver程序与Executor程序同在一个集群中,可以降低通信开销,因此适合在生产环境中使用。资源由YARN资源管理器自行分配和管理。驱动程序向资源管理器请求资源,并由资源管理器负责启动Executor进程并分配计算资源。

这两种模式的选择取决于实际需求和使用环境,例如,学习、调试阶段可能更适合使用YARN-Client模式,而在生产环境中则常使用YARN-Cluster模式。

$ spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster /export/servers/spark/examples/jars/spark-examples_2.13-3.4.0.jar 100  //指定跑100轮   能看到SUCCEEDED    

run-example SparkPi 2>&1 | grep "Pi is"    //用管道,stdout只输出Pi is roughly 3.14 

九、关闭集群

1. 关闭master:stop-master.sh

2. 关闭worker:stop-workers.sh

3. 关闭Hadoop:stop-all.sh

文章来源:https://blog.csdn.net/weixin_65875490/article/details/135484476
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。