Spark集群部署和启动与关闭

简介: Spark集群部署和启动与关闭

 上一篇我们讲了 Hadoop集群部署和启动与关闭,今天我们讲一下Spark集群部署和启动与关闭。



一、Spark集群部署模式


  首先我们先来了解一下Spark集群部署模式,分别有以下三种:


   Standalone

     Standalone(独立模式)是Spark一种简单的集群部署模式,自带完整的服务可单独部署到一个集群中,无需依赖任何其他资源调度管理系统。


   Mesos

     Mesos(Spark on Mesos模式)是一款资源调度管理系统,可以为Spark提供资源调度服务,由于Spark与Mesos存在密切的关系,所以在设计Spark框架时充分考虑到了对Mesos的集成。


   YARN

     YARN(Spark on YARN模式)是一款资源调度管理系统,支持动态资源分配策略,可以为Spark提供资源调度服务,由于在生产环境中,很多时候都要与Hadoop同在一个集群,所以采用YARN来管理资源调度,可以降低运维成本和提高资源利用率,避免出现多个资源管理器造成资源分配的混乱无序的问题。


Standalone与Spark On YARN模式下Spark程序运行过程:


 Standalone模式下Spark通过SparkContext向Cluster Manager(资源管理器,即Master)申请所需执行的资源,Cluster Manager分配应用程序执行需要的资源,在Worker节点上创建Executor,SparkContext将程序(jar包或python文件)和Task任务发送给Executor执行,并收集结果给Driver。


 Spark On YARN模式下Spark通过SparkContext向ResourceManager(资源管理器)申请所需执行的资源,ResourceManager分配应用程序执行需要的资源,为NodeManager分配一个Container,并在该Container中启动AppMaster,此时 AppMaster上运行的是SparkDriver。


SparkDriver在Container上启动SparkExecutor,并调度SparkContext提交的程序和SparkTask在SparkExecutor上运行,等到所有的任务执行完毕后,向AppManager取消注册并释放资源。



二、Spark集群安装配置


下载Spark

访问Apache资源网站下载Linux操作系统的Spark安装包spark-2.3.2-bin-hadoop2.7.tgz。

上传Spark安装包

使用SecureCRT远程连接工具连接虚拟机Spark01,在存放应用安装包的目录/export/software/下执行“rz”命令上传Spark安装包。


安装Spark

在虚拟机Spark01中,通过解压缩的方式安装Spark,将Spark安装到存放应用的目录/export/servers/。


tar -zxvf /export/software/spark-2.3.2-bin-hadoop2.7.tgz -C /export/servers/

修改Spark配置文件

在Spark安装目录下的conf目录存在Spark配置文件的样例文件spark-env.sh.template,需要执行“cp spark-env.sh.template spark-env.sh”命令,通过复制样例文件方式创建Spark配置文件spark-env.sh,执行“vi spark-env.sh”命令编辑配置文件

spark-env.sh ,指定JDK安装目录和Hadoop配置文件所在目录。


export JAVA_HOME=${JAVA_HOME}
export HADOOP_CONF_DIR=/export/servers/hadoop-2.7.4/etc/hadoop/


   配置Spark环境变量

   在虚拟机Spark01,执行“vi /etc/profile”命令编辑系统环境变量文件profile,配置Spark环境变量。


export SPARK_HOME=/export/servers/spark-2.3.2-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH

系统环境变量文件profile配置完成后保存并退出即可,随后执行“source /etc/profile”命令初始化系统环境变量使配置内容生效。

   Spark环境验证

   在虚拟机Spark01,执行“spark-shell --master yarn --deploy-mode client”命令进入6.Spark Shell交互界面。

   在这里插入图片描述

a4f69da2fdbb417d96a4cfd73944d957.png



三、Spark集群测试


  1. 在虚拟机Spark01,使用Spark官方示例SparkPi,验证Spark任务是否可以成功提交到YARN中运行。


spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 2g \
--executor-memory 1g \
--executor-cores 1 \
/export/servers/spark-2.3.2-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.3.2.jar  \
10

f5cce4df2c9b4eb7b7473852be825e79.png


在浏览器输入http://192.168.121.132:8088查看YARN管理界面,State为“RUNNING”表示当前YARN中正在执行的Spark任务。

0be5c601351240949094c8565f25fe0c.png



State为“FINISHED”表示当前YARN的Spark任务执行完成,并且FinalStatus为“SUCCEEDED”表示当前Spark任务执行成功。

执行几秒后刷新页面

在虚拟机Spark01查看Spark任务执行结果。



注意:解决Spark提交任务要YARN异常问题

  为了防止提交Spark任务时,YARN可能将Spark任务Kill掉,导致“Failed to send RPC xxxxxx”异常,可以在Hadoop配置文件yarn-site.xml中添加如下内容

<property>
  <name>yarn.nodemanager.pmem-check-enabled</name>#是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true。
  <value>false</value>
</property>
<property>
  <name>yarn.nodemanager.vmem-check-enabled</name>#是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。
  <value>false</value>
</property>



好了,Spark的集群部署和启动与关闭我们就讲到这里了,下一篇我们将讲解HBase集群部署和启动与关闭

相关文章
|
6月前
|
存储 分布式计算 监控
Spark Standalone模式是一种集群部署方式
【6月更文挑战第17天】Spark Standalone模式是一种集群部署方式
84 7
|
7月前
|
分布式计算 资源调度 Kubernetes
Spark集群部署与架构
Spark集群部署与架构
|
1月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
124 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
2月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
72 0
|
2月前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
44 0
|
2月前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
100 0
|
1月前
|
SQL 机器学习/深度学习 分布式计算
Spark快速上手:揭秘大数据处理的高效秘密,让你轻松应对海量数据
【10月更文挑战第25天】本文全面介绍了大数据处理框架 Spark,涵盖其基本概念、安装配置、编程模型及实际应用。Spark 是一个高效的分布式计算平台,支持批处理、实时流处理、SQL 查询和机器学习等任务。通过详细的技术综述和示例代码,帮助读者快速掌握 Spark 的核心技能。
78 6
|
1月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
106 2

相关实验场景

更多