Spark集群的搭建

news2024/11/15 9:22:35

1.1搭建Spark集群

Spark集群环境可分为单机版环境、单机伪分布式环境和完全分布式环境。本节任务是学习如何搭建不同模式的Spark集群,并查看Spark的服务监控。读者可从官网下载Spark安装包,本文使用的是spark-2.0.0-bin-hadoop2.7.gz。

1.1.1搭建单机版集群

单机版环境可以支持对Spark的应用程序测试工作,对于初学者而言是非常有益。

搭建单机版Spark集群步骤如下:

1.在Spark官网选择对应版本的Spark安装包并下载至Windows本地路径下。

2.将Spark安装包上传至linux虚拟机的/opt目录下。

3.将Spark安装包解压至/usr/local/src/目录下。

1)解压Spark安装包

tar -zxf /opt/software/spark-2.0.0-bin-hadoop2.7.gz -C /usr/local/src/

2)进入Spark安装目录的/bin目录,使用“SparkPi”计算Pi值

#进入目录
cd /usr/local/src/spark/bin/
#执行如下命令,其中2是指两个并行度
./run-example SparkPi 2

 使用“SparkPi”计算Pi值的结果

 

1.1.2搭建单机伪分布式集群

Spark单机伪分布式集群指的是在一台机器上既有Master进程,又有Worker进程。Spark单机伪分布式集群可在Hadoop伪分布式环境基础上进行搭建。读者可自行了解如何搭建Hadoop伪分布式集群,本文不做介绍。搭建Spark单机伪分布式集群的步骤如下:

(1)将Spark安装包解压至Linux的/usr/loca/src/目录下。

(2)进入解压后的Spark安装目录,对安装包进行改名

mv spark-2.0.0-bin-hadoop2.7 spark

(3)进入Spark的/conf目录下,复制spark-env.sh.template文件并重命名为spark-env.sh。

[root@master spark]# cd conf/

[root@master conf]# cp spark-env.sh.template spark-env.sh

(4)打开spark-env.sh文件,在文件末尾添加代码

export JAVA_HOME=/usr/local/src/jdk
export HADOOP_HOME=/usr/lcoal/src/hadoop
export HADOOP_CONF_DIP=/usr/local/src/hadoop/etc/hadoop
export SPARK_MASTER_IP=master
export SPARK_LOCAL_USR_IP=master
参数解释
JAVA_HOMEJava的安装路径
HADOOP_HOMEHadoop的安装路径
HADOOP_CONF_DIPHadoop配置文件的路径
SPARK_MASTER_IPSpark主节点的IP地址或主机名
SPARK_LOCAL_USR_IPSpark本地IP地址或主机名

(5)切换到Spark安装目录的/sbin目录下,启动Spark集群

[root@master sbin]# cd /usr/local/src/spark/sbin/

[root@master sbin]# ./start-all.sh

 通过命令“jps”查看进程,如果既有Master进程又有Worker进程,那么说明Spark集群启动成功

(6)切换至Spark安装包的/bin目录下,使用“SparkPi”计算Pi值

[root@master bin]# ./run-example SparkPi 2

由于计算Pi的值时采用随机数,因此每次计算结果也会有差异

1.1.3搭建完全分布式集群

Spark完全分布式集群使用主从模式,即其中一台机器作为主节点master,其他的几台机器作为子节点slave。本文使用的Spark完全分布式共有三个节点,分别是一个主节点和2个子节点

Spark完全分布式集群是在Hadoop完全分布式集群的基础上进行搭建的。读者可自行了解如何搭建Hadoop完全分布式集群,本文不做介绍

(1)在前面的基础之上切换至Spark安装目录下的/conf目录下,并打开spark-env.sh文件,并添加如下代码:

#将原来伪分布式集群添加上去的那几行代码删掉从新添加下面代码,防止后面发生影响


export JAVA_HOME=/usr/local/src/jdk
export HADOOP_CONF_DIP=/usr/local/src/hadoop/etc/hadoop
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MEMORY=512m
export SPARK_WORKER_CORES=1
export SPARK_EXECUTOR_MEMORY=512m
export SPARK_EXECUTOR_CORES=1
export SPARK_WORKER_INSTANCES=1

 spark-env.sh文件的配置参数解释

参数解释
JAVA_HOMEJava的安装路径
HADOOP_CONF_DIRHadoop配置文件的路径
SPARK_MASTER_IPSpark主节点的IP地址或主机名
SPARK_MASTER_PORTSpark主节点的端口号
SPARK_WORKER_MEMORY工作(worker)节点能给予Executor的内存大小
SPARK_WORKER_CORES每个节点可以使用的内核数
SPARK_EXECUTOR_MEMORY每个Executor内存大小
SPARK_EXECUTOR_CORESExecutor的内核数
SPARK_WORKER_INSTANCES每个节点的Worker进程数

(2)配置Workers文件。复制Workers.template文件并重命名为Workers,打开Workers文件删除原有内容,并添加如下代码,每一行代表一个子节点的主机名,这里的workers文件名为,slaves.template

slave1
slave2

(3)配置spark-defaults.conf文件。复制spark-defaults.conf.template文件并重命名为spark-defaults.conf,打开spark-defaults.conf文件,并添加如下代码:

spark.master                     spark://master:7077
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://master:8020/spark-logs
spark.history.fs.logDirectory    hdfs://master:8020/spark-logs

spark-defaults.conf文件的配置参数解释

参数解释
spark.masterSpark主节点所在机器及端口,默认写法是spark://
spark.eventLog.enabled是否打开任务日志功能,默认为false,既不打开
spark.eventLog.dir任务日志默认存放位置,配置一个HDFS路径即可
spark.history.fs.logDirectory存放历史应用日志文件目录

(4)在主节点(master节点)中,将配置好的Spark安装目录远程复制至子节点(slave1,slave2节点)的/usr/local/src/目录下,代码如下:

[root@master src]# scp -r /usr/local/src/spark root@slave1:/usr/local/src/
[root@master src]# scp -r /usr/local/src/spark root@slave2:/usr/local/src/

(5)启动Spark集群前,需要先启动Hadoop集群,并创建/spark-logs目录,如代码:

#启动Hadoop集群
cd /usr/local/src/hadoop
./sbin/start-dfs.sh
./sbin/start-yarn.sh
./sibn/mr-jobhistory-daemon.sh start historyserver
#创建/spark-logs目录
hdfs dfs -mkdir /spark-logs

(6)切换至Spark安装目录的/sbin目录下,启动Spark集群

cd /usr/local/src/spark/sbin/

./start-all.sh
./start-history-server.sh

(7)通过命令jps查看进程,开启Spark集群后,master节点增加了Master进程,而子节点则增加了Worker进程。

Spark集群启动成功后,打开浏览器访问“http://master:8080”,可进入主节点的监控界面。其中master指代主节点的IP地址

Hisory Server的监控端口为18080端口,打开浏览器访问“http://master:18080”,即可看到监控界面,界面记录了作业信息,包括已经运行完成的作业的信息和正在运行的作业信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1612666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《乱弹篇(30)厌战的杜诗》

时下地球村有一伙成天叫嚣着“打打杀杀”、鼓吹快快发动战争的狂人,他们视老百姓的生命如草芥,毫不珍惜。没有遭受过战火焚烧的人,也跟着成天吠叫“快开战吧”。然而中国唐朝大诗人却是个“厌战派”,他对战争的厌恶集中表现在诗《…

实在RPA设计器试用导引

一、产品概述 实在RPA设计器是一款将人工智能(AI)与机器人流程自动化(RPA)深度融合的可视化自动流程编辑器。它通过AI推荐与桌面嵌入式交互,极大简化了RPA的使用难度,让普通业务人员也能轻松使用。实在RPA设计器具备以下核心优势: 兼容性&a…

我与C++的爱恋:类和对象(四)

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:我与C的爱恋 ​ 朋友们大家好!本篇是类和对象的最后一个部分。 一、static成员 声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之…

系统架构最佳实践 -- 相关JAVA架构

1. java 类加载器架构 2. JVM 架构 3. Java 技术体系 4. 线程运行架构 5. Java 体系(编译与运行)结构 6. JMS 技术架构 7. JMX 技术架构 8. Spring 架构 9. Hibernate 架构 10. ibatis 架构 11. Struts2 架构 12. Struts1 架构 13. JBPM 14. EJB 技术架构…

Java面试八股之marshalling和demarshalling

marshalling和demarshalling Marshalling(序列化)是将内存中的对象状态转化为适合传输或存储的格式(如字节流、JSON、XML),以便进行网络通信、持久化存储或跨平台/语言交互操作。Demarshalling(反序列化&a…

渗透测试入门教程,从零基础入门到精通(非常详细)

目录 什么是渗透测试 渗透测试的重要性 渗透测试的前置技能 开始入门学习路线 什么是渗透测试 渗透测试,通常被视为模拟黑客的一种安全评估行为,其目的在于全面挖掘目标网站或主机的潜在安全漏洞。与真实的黑客攻击不同,渗透测试旨在发现…

9.MMD 基础内容总结及制作成品流程

前期准备 1. 导入场景和模型 在左上角菜单栏,显示里将编辑模型时保持相机和光照勾选上,有助于后期调色 将抗锯齿和各向异性过滤勾掉,可以节省资源,避免bug 在分辨率设定窗口,可以调整分辨率 3840x2160 4k分辨率 1…

05 MySQL--字段约束、事务、视图

1. CONSTRAINT 约束 创建表时,可以给表的字段添加约束,可以保证数据的完整性、有效性。比如大家上网注册用户时常见的:用户名不能为空。对不起,用户名已存在。等提示信息。 约束包括: 非空约束:not null检…

kafka实验部署

一、前期准备 二、kafka实验 在zookeeper后继续进行操作 2.1 为ndoe1、node2、node3作出部署 2.1.1 解压kafka压缩包(node1举例) 2.1.2 操作 将解压后的kafka移动到kafka,进入到kafka下的config中,复制文件 2.1.2.1 编辑server.pr…

LWIP开发之静态IP为什么接收和发送不了数据

使用的硬件开发板是探索者F4 V3版本 这里用的LWIP的lwIP例程7 lwIP_NETCONN_UDP实验 问了开发板的官方和其他人都说不清楚;搞了两天,浪费了两天时间; 最奇葩的问题还在于只能单片机发送,上位机能接收。而上位机发送单片机不能接…

虚拟机扩容方法

概述 我的虚拟机开始的内存是40G,接下来要扩成60GB 扩容步骤 步骤1 步骤2 步骤3 修改扩容后的磁盘大小,修改后的值只可以比原来的大,修改完成后点击扩展,等待扩展完成 步骤4 虽然外面扩展成功,但是新增的磁盘空间虚拟机内部还…

自媒体个人品牌IP策划打造孵化运营方案

【干货资料持续更新,以防走丢】 自媒体个人品牌IP策划打造孵化运营方案 部分资料预览 资料部分是网络整理,仅供学习参考。 ppt可编辑(完整资料包含以下内容)目录个人IP孵化方案概要: 1. 目标定位与市场分析 - 女性…

QMT和Ptrade有什么区别?该如何选择?

QMT(Quantitative Model Trading)和Ptrade(Professional Trading)是两种不同的交易策略和方法,它们在金融市场中被广泛应用。了解它们的区别有助于投资者根据自己的需求和目标做出选择: QMT(量…

AI+PS快捷键大全!

hello,我是小索奇, 你会用Photoshop(PS)或者(Illustrator)AI吗?相信很多人都会接触到吧,但有一部分人很少用快捷键,仅凭借鼠标点击来实现功能,殊不知快捷键能…

在线拍卖系统,基于SpringBoot+Vue+MySql开发的在线拍卖系统设计和实现

目录 一. 系统介绍 二. 功能模块 2.1. 管理员功能模块 2.2. 用户功能模块 2.3. 前台首页功能模块 2.4. 部分代码实现 一. 系统介绍 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系…

感知机学习算法中的Novikoff定理证明中的隐含背景知识

一、引言 《统计学习方法》(李航著)第二章感知机学习时,其中的Novikoff定理是关于感知机算法收敛性的一个重要定理。这个定理保证了对于线性可分的数据集,感知机学习算法最终能够收敛到一个解,即存在一个权重向量 w 和…

投稿没被采纳不是水平问题可能是投稿方法不对

每周一次的信息宣传投稿任务,如同一面镜子,映照出我们在媒体传播领域的探索与成长。起初,我在执行这项任务时,怀着满腔热情,挥洒汗水创作出一篇篇通信稿件,却在投稿阶段屡遭挫折,多次尝试均未果,一度让我质疑自己的写作能力是否足以胜任这项工作。 那时,我采用的是传统的邮箱投…

智慧煤矿/智慧矿区视频汇聚存储与安全风险智能分析平台建设思路

一、建设背景 目前我国非常重视煤矿安全生产,并投入大量资金用于煤矿安全综合远程监控系统的研发。视频监控系统作为实现煤矿智能化无人开采的关键系统与煤矿安全生产的多系统协同分析与处理的关键信息源,在智慧矿山管控平台的建设中发挥着重要的作用。…

【微信小程序】解决分页this.setData数据量太大的限制问题

1、原始方法,每请求一页都拿到之前的数据concat一下后整体再setData loadData() {let that thislet data {}data.page this.data.pagedata.size this.data.sizefindAll(data).then(res > {if (res.data.code 1) {this.setData({dataList: this.data.dataLi…

【嵌入式DIY实例】-称重计

DIY称重计 文章目录 DIY称重计1、硬件准备1.1 HX711 称重传感器模块2、硬件接线原理图3、代码实现在本文中,我们将使用数字体重秤 HX711 称重传感器模块来实现一个简易的称重计。 HX711 模块非常适合测量重量、力或任何其他可以以克为单位的东西。 该模块易于使用,可以连接到…