Spark 1--3章简介,架构体系, 环境搭建

news2024/11/23 19:13:27

今天开始了新的课程

由我们的星哥带领我们踏入Spark的神秘殿堂

01_SparkCore

1. Spark简介

1.1 什么是Spark

Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache的顶级项目,2014年5月发布spark1.0,2016年7月发布spark2.0,2020年6月18日发布spark3.0.0

1.2 Spark的特点

  • Speed:快速高效

Hadoop的MapReduce作为第一代分布式大数据计算引擎,在设计之初,受当时计算机硬件条件所限(内存、磁盘、cpu等),为了能够计算海量数据,需要将中间结果保存到HDFS中,那么就要频繁读写HDFS从而使得网络IO和磁盘IO成为性能瓶颈。Spark可以将中间结果写到本地磁盘或将中间cache到内存中,节省了大量的网络IO和磁盘IO开销。并且Spark使用更先进的DAG任务调度思想,可以将多个计算逻辑构建成一个有向无环图,并且还会将DAG先进行优化后再生成物理执行计划,同时 Spark也支持数据缓存在内存中的计算。性能比Hadoop MapReduce快100倍。即便是不将数据cache到内存中,其速度也是MapReduce10 倍以上。

  • Ease of Use:简洁易用

 

Spark支持 Java、Scala、Python和R等编程语言编写应用程序,大大降低了使用者的门槛。自带了80多个高等级操作算子,并且允许在Scala,Python,R 的使用命令进行交互式运行,可以非常方便的在Spark Shell中地编写spark程序。

  • Generality:通用、全栈式数据处理

Spark提供了统一的大数据处理解决方案,非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。 同时Spark还支持SQL,大大降低了大数据开发者的使用门槛,同时提供了SparkStream和Structed Streaming可以处理实时流数据;MLlib机器学习库,提供机器学习相关的统计、分类、回归等领域的多种算法实现。其高度封装的API 接口大大降低了用户的学习成本;Spark GraghX提供分布式图计算处理能力;PySpark支持Python编写Spark程序;SparkR支持R语言编写Spark程序。

  • Runs Everywhere:可以运行在各种资源调度框架和读写多种数据源

Spark支持的多种部署方案:Standalone是Spark自带的资源调度模式;Spark可以运行在Hadoop的YARN上面;Spark 可以运行在Mesos上(Mesos是一个类似于YARN的资源调度框架);Spark还可以Kubernetes实现容器化的资源调度

丰富的数据源支持。Spark除了可以访问操作系统自身的本地文件系统和HDFS之外,还可以访问 Cassandra、HBase、Hive、Alluxio(Tachyon)以及任何 Hadoop兼容的数据源。这极大地方便了已经 的大数据系统进行顺利迁移到Spark。   

1.3 Spark与MapReduce的对比

框架

优点

缺点

MapReduce

历史悠久、稳定

编程API不灵活、速度慢、只能做离线计算

Spark

通用、编程API简洁、快

跟MapReduce比暂无缺点

 

面试题:MapReduce和Spark的本质区别:

 

  1. MR只能做离线计算,如果实现复杂计算逻辑,一个MR搞不定,就需要将多个MR按照先后顺序连成一串,一个MR计算完成后会将计算结果写入到HDFS中,下一个MR将上一个MR的输出作为输入,这样就要频繁读写HDFS,网络IO和磁盘IO会成为性能瓶颈。从而导致效率低下。

  1. spark既可以做离线计算,又可以做实时计算,提供了抽象的数据集(RDD、Dataset、DataFrame、DStream)

有高度封装的API,算子丰富,并且使用了更先进的DAG有向无环图调度思想,可以对执行计划优化后在执行,并且可以数据可以cache到内存中进行复用,shuffle时,数据可以不排序

注意:MR和Spark在Shuffle时数据都落本地磁盘

 

2. Spark架构体系

StandAlone模式是spark自带的集群运行模式,不依赖其他的资源调度框架,部署起来简单。

StandAlone模式又分为client模式和cluster模式,本质区别是Driver运行在哪里,如果Driver运行在SparkSubmit进程中就是Client模式,如果Driver运行在集群中就是Cluster模式

2.1 standalone client模式

 

2.2 standalone cluster模式

 

2.3 Spark On YARN cluster模式

 

2.4 Spark执行流程简介

 

  • Job:RDD每一个行动操作都会生成一个或者多个调度阶段 调度阶段(Stage):每个Job都会根据依赖关系,以Shuffle过程作为划分,分为Shuffle Map Stage和Result Stage。每个Stage对应一个TaskSet,一个Task中包含多Task,TaskSet的数量与该阶段最后一个RDD的分区数相同。 
  • Task:分发到Executor上的工作任务,是Spark的最小执行单元 
  • DAGScheduler:DAGScheduler是将DAG根据宽依赖将切分Stage,负责划分调度阶段并Stage转成TaskSet提交给TaskScheduler
  • TaskScheduler:TaskScheduler是将Task调度到Worker下的Exexcutor进程,然后丢入到Executor的线程池的中进行执行 

2.5 Spark中重要角色

  • Master :是一个Java进程,接收Worker的注册信息和心跳、移除异常超时的Worker、接收客户端提交的任务、负责资源调度、命令Worker启动Executor。
  • Worker :是一个Java进程,负责管理当前节点的资源管理,向Master注册并定期发送心跳,负责启动Executor、并监控Executor的状态。
  • SparkSubmit :是一个Java进程,负责向Master提交任务。
  • Driver :是很多类的统称,可以认为SparkContext就是Driver,client模式Driver运行在SparkSubmit进程中,cluster模式单独运行在一个进程中,负责将用户编写的代码转成Tasks,然后调度到Executor中执行,并监控Task的状态和执行进度。
  • Executor :是一个Java进程,负责执行Driver端生成的Task,将Task放入线程中运行。

2.6 Spark和Yarn角色对比

  

Spark StandAlone的Client模式

YARN

Master

ResourceManager

Worker

NodeManager

Executor

YarnChild

SparkSubmit(Driver)

ApplicationMaster

3. StandAlone模式环境搭建

3.1 搭建步骤

环境准备:三台Linux,一个安装Master,其他两台机器安装Worker

 

  1. 下载spark安装包,下载地址:Downloads | Apache Spark

 

  1. 上传spark安装包到Linux服务器上
  1. 解压spark安装包

Shell
tar -zxvf spark-3.2.3-bin-hadoop3.2.tgz -C /opt/apps

  1. 进入到spark按照包目录并将conf目录下的spark-env.sh.template重命名为spark-env.sh,再修改

Shell
export JAVA_HOME=/usr/local/jdk1.8.0_251/
export SPARK_MASTER_HOST=node-1.51doit.cn

  1. 将conf目录下的workers.template重命名为workers并修改,指定Worker的所在节点

Shell
node-2.51doit.cn
node-3.51doit.cn

  1. 将配置好的spark拷贝到其他节点

Shell
for i in {2..3}; do scp -r spark-3.2.3-bin-hadoop3.2 node-$i.51doit.cn:$PWD; done

3.2 启动Spark集群

  • 在Spark的安装目录执行启动脚本

Shell
sbin/start-all.sh

  • 执行jps命令查看Java进程

Shell
jps

在ndoe-1上可以看见Master进程,在其他的节点上可以看见到Worker进程

  • 访问Master的web管理界面,端口8080

 

3.3 一些重要参数

Shell
export SPARK_WORKER_CORES=4    #指定worker可用的逻辑核数
export SPARK_WORKER_MEMORY=2g  #指定worker可用的内存大小

3.4 standalone模式高可用部署

spark的standalone模式可以启动两个以上的Master,但是需要依赖zookeeper进行协调,所有的节点启动后,都向zk注册

 

修改配置文件spark-env.sh

Shell
 # 注释掉master的地址,所有节点都先连接zookeeper
 # export SPARK_MASTER_HOST=node-1.51doit.cn
 export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node-1.51doit.cn:2181,node-2.51doit.cn:2181,node-3.51doit.cn:2181 -Dspark.deploy.zookeeper.dir=/spark"

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

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

相关文章

Cisco模拟器配置OSPF

一、前言 1.1 本文为Cisco模拟器配置OSPF操作笔记 (供新手参考) 使用Cisco模拟器,配置OSPF协议,并使各台电脑ping通,如下参考图! 1.2 思科路由器设置ip设置 在将设备摆放完毕后,需要配置每台设备的IP&…

【科普】干货!带你从0了解移动机器人(四) ——移动机器人导航技术

移动机器人导航是指移动机器人确定自己在地图参考系中的位置后,自动规划出通往地图参考系中某个目标位置路径并沿着该路径到达目标位置点的能力,是移动机器人行动能力的关键。 基于整个智能制造的发展,移动机器人导航技术大致可分为以下几种&…

【MarkDown】CSDN Markdown之思维导图mindmap详解

文章目录 思维导图(Mindmap)一个思维导图的例子语法形状矩形圆角矩形圆形爆炸云朵六边形默认 图标和类图标类 不清晰的缩进Markdown字符串与库或网站资源集成 思维导图(Mindmap) Mindmap现在是一个实验性的图表类型。语法和特性可能会在未来版本中更改,除了图标集成…

【UE 从零开始制作坦克】9-坦克瞄准

效果 步骤 1. 将下载的图片资源导入 2. 再新建一个控件蓝图,命名为“WBP_Aim” 打开“WBP_Aim”,拖入图像控件 选择图像控件的锚点如下 偏移全部置0 图像选择刚导入的“miaozhunjing” 3. 打开骨骼“SKEL_West_Tank_M1A1Abrams” 可以看到在炮管上有一个…

房屋装修选择自装,如何寻找选购系统门窗,比价并施工(门窗阶段)

环境: 地点:杭州 装修类型:自装 面积:建面135平方 进度:选购安装铝合金门窗阶段 问题描述: 房屋装修选择自装,如何寻找选购系统门窗,比价并施工 解决方案: 一、了…

暑期托管班招生海报模板 一键就能完成设计

即将到来的暑期,许多的兴趣班也将迎来暑期招生热,那么兴趣班如何设计一幅招生用的招生易拉宝?可以一键生成内容,自定义填写兴趣班的报名方式,课程内容以及联系方式等内容的招生海报制作工具!跟着教程一起使…

Rust之泛型、特性和生命期(三):Traits:定义共同的行为

开发环境 Windows 10Rust 1.70.0 VS Code 1.79.2 项目工程 这里继续沿用上次工程rust-demo Traits:定义共同的行为 Trait定义了一个特定类型所具有的功能,并且可以与其他类型共享。我们可以使用特质以抽象的方式来定义共享行为。我们可以使用特质的界…

低学历又如何?我这样的程序员照样可以逆袭

今天分享的这个主题,很可能会带来争议,因为目前优秀毕业生0年就可以拿到 20K 的待遇,这里暂且抛开硕士,985,211的 Top 前几高学校本科生。 毕竟今天的主题的初衷是地点低的程序员如何才能 2-3 年实现 20K 的目的&…

mysql根据一个表的数据更新另一个表数据的SQL写法

目录 问题描述解决办法(推荐第三种) 问题描述 概述:用一个表中的字段去更新另外一个表中的字段, MySQL 中有相应的 update 语句来支持,不过这个 update 语法有些特殊。看一个例子就明白了。 解决办法(推…

机器学习笔记 - 基于MobileNetV2的迁移学习训练关键点检测器

一、下载数据集 StanfordExtra数据集包含12000张狗的图像以及关键点和分割图图。 GitHub - benjiebob/StanfordExtra:12k标记的野外狗实例,带有2D关键点和分割。我们的 ECCV 2020 论文发布的数据集:谁把狗排除在外?3D 动物重建,循环中期望最大化。https://github.com/benj…

驱动模块和printk函数

目录 1. 驱动模板 1.1. 在源码工程路径下创建.c文件 1.2. 编写驱动模板 1.3. 将模板放到ubuntu上 1.4. 书写Makefile 1.5. 编译和安装 2. printk 2.1. Source Insight查找命令 2.2. printk讲解 2.2.1. 分析函数 2.2.2. 编写代码 2.3. 拓展 2.3.1. 关于printk函数测…

《人工智能.一种现代方法》原版精读思维导读-第一章

目录 书籍 前言部分 封面故事 完整目录 1. Intruduction简介 Whats AI The Foundations of AI The History of AI The State of the Art Risks and Benefits of AI Summary 2. Intelligent Agents 书籍 人工智能.一种现代方法 Artificial Intelligence. The Moder…

ArcGis系列-坐标系转换

Arcgis的工程项目可以添加各种类型的空间资源,比如数据库空间表、shp文件,每张空间表的坐标系可能都会有差异,把他们放到一个工程里时可以统一设置坐标系。 本文将介绍ArcGis三个需要坐标转换的场景: Arcgis Pro设置项目坐标GP分…

WPy64的Python开发环境中安装pinyin库方法举例和应用

WPy64的Python开发环境中安装拼音库(pypinyin)方法举例和应用 在Python开发环境中安装拼音库后,我们就可以实现对汉字的注音显示。下面以WPy64为例子,讲解pypinyin库的安装方法。 步骤: 一、找到WPy64所安装的目录中…

Vue中如何进行分布式事务管理与分布式事务解决方案

Vue中如何进行分布式事务管理与分布式事务解决方案 在分布式系统中,事务管理是一个非常重要的问题。如果没有良好的事务管理,分布式系统可能会导致数据不一致的问题。本文将介绍Vue中如何进行分布式事务管理以及分布式事务解决方案。 什么是分布式事务&…

二叉搜索树(Binary Search Tree)的模拟实现

前言 为什么要学习二叉搜索树呢?因为set 和 map的底层实际上就是一颗二叉搜索树,只不过是被进行了一些特殊的处理,所有了解二叉搜索树的底层实现有利于我们更好的理解的map和set的原理。二叉搜索树又叫二叉排序树,它或者是一颗空树…

数据库系统概述——第二章 关系数据库(知识点复习+练习题)

🌟博主:命运之光 🦄专栏:离散数学考前复习(知识点题) 🍓专栏:概率论期末速成(一套卷) 🐳专栏:数字电路考前复习 🦚专栏&am…

SpringBoots利用redis实现防止接口幂等性重复提交

目录 什么是幂等性? 应用场景分析 解决办法 实际使用 什么是幂等性? 接口的幂等性就是用户对于同一个操作发起的一次请求或者多次请求的结果都是一致的,不会因为多次点击而产生副作用,比如说经典的支付场景:用户购…

一款超级给力的弱网测试神器—Qnet(上)

一、APP弱网测试背景 App在使用的过程中,难免会遇到不同的弱网络环境,像在公车上、在地铁、地下车库等。在这种情况下,手机常常会出现网络抖动、上行或下行超时,导致APP应用中出现丢包延迟,从而影响用户体验。 作为软…

推荐10款测试员常用的单元测试工具

前言 随着DevOp的不断流行,自动化测试慢慢成为Java开发者的关注点。因此,本文将分享10款优秀的单元测试框架和库,它们可以帮助Java开发人员在其Java项目上编写单元测试和集成测试。 1. JUnit 我绝对JUnit不需要太多的介绍了。即使您是Java…