《Spark核心技术与高级应用》——2.2节Spark部署

简介:

本节书摘来自华章社区《Spark核心技术与高级应用》一书中的第2章,第2.2节Spark部署,作者于俊 向海 代其锋 马海平,更多章节内容可以访问云栖社区“华章社区”公众号查看

2.2 Spark部署
Spark部署主要包括Local模式部署、Standalone模式部署、YARN模式部署、Mesos模式部署(参考官方文档)。
其中,集群部署模式如下:
独立部署模式:Spark自带的一种简单集群管理器,使用该集群管理器可以轻松地建立一个集群;
Apache Mesos:一个通用的集群管理器,该集群管理器也可以运行MapReduce和服务应用(实际业务没有采取该种架构,本书没有对该模式进行专门讲解,如需要了解,请参考官方文档);
Hadoop YARN:Hadoop 2中的资源管理器,是当前主要使用的资源管理器。
除此之外,Spark的EC2启动脚本使得在Amazon EC2上启动一个独立模式集群变得容易。
2.2.1 Local模式部署
Local(本地)模式下部署Spark应用程序比较简单,可以用于检测Spark是否编译安装成功,需要配置Java环境变量和设置主节点。
主节点设置步骤如下:
1)进入Spark主程序的conf目录,执行:cd spark-1.5.0/conf。
2)以spark-env.sh.template文件为模板创建spark-env.sh文件。
3)修改spark-env.sh配置文件:

vi spark-env.sh
export SPARK_MASTER_IP=$YOUR_MASTER_IP
export JAVA_HOME=$YOUR_JAVA_HOME
AI 代码解读

4)版本验证,在安装完毕Spark并配置环境变量之后,在任意目录下运行spark-shell命令即可进入Spark命令行模式,此时出现的大段文字中会提示当前的Spark版本,例如:

Welcome to Spark version 1.5.0
Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_45)
AI 代码解读

2.2.2 Standalone模式部署
部署Standalone模式Spark集群步骤如下:
1)修改spark-env.sh配置文件(参考本地部署模式)。

vim spark-env.sh
export SPARK_MASTER_IP=$YOUR_MASTER_IP
export JAVA_HOME=$YOUR_JAVA_HOME
2)在Spark目录下创建一个名为conf/slaves的文件。该文件需要包含所有将要启动Spark Workers的机器的hostname(主机名),每行一个。
vim slaves
# A Spark Worker will be started on each of the machines listed below.
slave01
slave02
slave03
slave04
……
3)发送配置文件spark-env.sh和Slaves到所有Worker节点,以slave02为例:
scp -r $SPARK_HOME/conf/spark-env.sh slave02:/$SPARK_HOME/conf/
scp -r $SPARK_HOME/slavesslave02:/$SPARK_HOME/conf/
4)配置Master无密钥登录Slaves节点。
①?在Master节点和所有Slaves节点上安装openssh-server(以Ubuntu 12.04为例):
sudo apt-get install openssh-server
②?建立SSH KEY:
ssh-keygen -t rsa -P ""
③?在Master节点上启用SSH KEY(authorized_keys权限644):
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
sudo /etc/init.d/ssh reload
④?验证SSH的配置:
ssh localhost
⑤?将Master节点的authorized_keys发送到所有的Slaves节点,并登录验证。
部署完毕,可以通过手动启动和脚本启动集群的Master和Worker。下面详细介绍一下Spark Standalone模式集群的启动以及启动参数的功能。
1.?手动启动集群
通过执行下面的命令启动Master节点:
./sbin/start-master.sh
AI 代码解读

启动之后,命令行会打印出一个spark://HOST:PORT,你可以通过该信息将Worker与Master连接,或以“master”参数的形式传递给SparkContext对象。你也可以在Master的WebUI中找到这个URL,默认访问地址是http://localhost:8080
支持启动一个或更多的Worker,然后通过下面的指令与Master连接:
./bin/spark-class org.apache.spark.deploy.worker.Worker park:// IP:PORT
一旦启动了一个Worker节点,在Master的WebUI中(默认http://localhost:8080),你会看到新增Worker节点,以及CPU数目、内存大小(减去1GB留给系统)在列表中呈现。
2.?脚本启动集群
检查Spark目录下的conf/slaves文件是否创建,是否包含了所有工作节点机器的hostname,一旦建立了这个文件,就可以通过下面的shell脚本在Master节点上启动或终止你的集群。

sbin/start-master.sh:在脚本运行的机器上启动一个Master实例。
sbin/start-slaves.sh:在conf/slaves文件中指定的机器上启动一个Slaves实例。
sbin/start-all.sh:以上面所述的方式启动一个Master和一定数量的Slaves。
sbin/stop-master.sh:停止当前通过bin/start-master.sh脚本启动的Master实例。
sbin/stop-slaves.sh:停止在conf/salves文件中指定的机器上所有的Slaves实例。
sbin/stop-all.sh:停止当前启动的Master实例和指定的Slaves实例。
AI 代码解读

执行cd /spark-1.5.0/sbin命令进入sbin文件夹,执行./start-all.sh可以启动所有服务器上的Spark相关进程。
执行jps命令可以查看当前服务器正在运行的进程。如果是主节点,可以看到Master进程;如果是子节点,可以看到Worker进程。这样就表示Spark在服务器上全部配置完毕。
可以通过设置spark-env.sh中的环境变量进一步配置集群,并复制到所有的Worker机器上以使设置生效,表2-2为可配置的spark-env.sh中的环境变量。


50f76749d09cf58e4d2569bc3537d005d7c37c14

2.2.3 YARN模式部署
下面来具体讲解如何基于YARN配置Spark程序。
(1)准备工作
配置Spark之前,需要做一些准备工作。
首先,检查hosts文件,即使用root账户登录服务器之后,在任意目录下执行vim /etc/hosts命令,查看需要部署Spark的“服务器IP机器名”是否已存在,没有请添加。
其次,添加配置文件,同样是在任意目录下执行vim /etc/prof?ile,打开环境变量配置文件,将SPARK_HOME配置到环境变量中,具体如下所示。

export SPARK_HOME=/home/hadoop/spark-1.5.0
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
AI 代码解读

然后,在任意目录下执行source /etc/prof?ile命令让环境变量生效。
(2)Spark本身的配置
接下来就是针对Spark本身的配置。
首先,进入Spark中的conf文件夹,即在Spark所在目录执行cd/spark-1.5.0/conf命令。打开spark-env.sh文件,即vim spark-env.sh,添加:

export JAVA_HOME=$YOUR_JAVA_HOME
export SPARK_MASTER_IP=$YOUR_MASTER_IP
通过这一项配置,可以确定执行Spark程序时的主节点。
接下来,打开Slaves文件,将子节点的IP地址或名称添加到该文件中,完成Spark的IP和机器名对应的配置。
vim slaves
# A Spark Worker will be started on each of the machines listed below.
slave01
slave02
slave03
slave04
……
AI 代码解读

最后,需要将spark-1.5.0文件夹、环境变量配置文件和hosts文件批量发送到配置的各个子节点的服务器上,再批量执行source /etc/prof?ile命令即可。
按照先启动Hadoop,再启动Spark的顺序进行启动。

目录
打赏
0
0
0
0
1408
分享
相关文章
Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
【10月更文挑战第10天】Spark和Flink的区别是什么?如何选择?都应用在哪些行业?
418 1
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
99 2
【决战大数据之巅】:Spark Standalone VS YARN —— 揭秘两大部署模式的恩怨情仇与终极对决!
【8月更文挑战第7天】随着大数据需求的增长,Apache Spark 成为关键框架。本文对比了常见的 Spark Standalone 与 YARN 部署模式。Standalone 作为自带的轻量级集群管理服务,易于设置,适用于小规模或独立部署;而 YARN 作为 Hadoop 的资源管理系统,支持资源的统一管理和调度,更适合大规模生产环境及多框架集成。我们将通过示例代码展示如何在这两种模式下运行 Spark 应用程序。
301 3
Apache Spark的应用与优势:解锁大数据处理的无限潜能
【8月更文挑战第23天】Apache Spark以其卓越的性能、易用性、通用性、弹性与可扩展性以及丰富的生态系统,在大数据处理领域展现出了强大的竞争力和广泛的应用前景。随着大数据技术的不断发展和普及,Spark必将成为企业实现数字化转型和业务创新的重要工具。未来,我们有理由相信,Spark将继续引领大数据处理技术的发展潮流,为企业创造更大的价值。
“Spark Streaming异常处理秘籍:揭秘如何驯服实时数据流的猛兽,守护你的应用稳如泰山,不容错过!”
【8月更文挑战第7天】Spark Streaming 是 Apache Spark 中的关键组件,用于实时数据流处理。部署时可能遭遇数据问题、资源限制或逻辑错误等异常。合理处理这些异常对于保持应用稳定性至关重要。基础在于理解其异常处理机制,通过 DSC 将数据流切分为 RDD。对于数据异常,可采用 try-catch 结构捕获并处理;资源层面异常需优化 Spark 配置,如调整内存分配;逻辑异常则需加强单元测试及集成测试。结合监控工具,可全面提升应用的健壮性和可靠性。
92 3
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
《Spark大数据处理:技术、应用与性能优化》深入浅出介绍Spark核心,涵盖部署、实战与性能调优,适合初学者。作者基于微软和IBM经验,解析Spark工作机制,探讨BDAS生态,提供实践案例,助力快速掌握。书中亦讨论性能优化策略。[PDF下载链接](https://zhangfeidezhu.com/?p=347)。![Spark Web UI](https://img-blog.csdnimg.cn/direct/16aaadbb4e13410f8cb2727c3786cc9e.png#pic_center)
180 1
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
大数据处理框架在零售业的应用:Apache Hadoop与Apache Spark
【8月更文挑战第20天】Apache Hadoop和Apache Spark为处理海量零售户数据提供了强大的支持
98 0
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
本文演示了使用 EMR Serverless Spark 产品搭建一个日志分析应用的全流程,包括数据开发和生产调度以及交互式查询等场景。
56624 7
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用

相关实验场景

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等