spark概述以及原理架构
1 介绍
大数据4V 特征
1V 大量化,体现为数据量大
2V 多样化,主要是结构化和非结构化的数据
3V 处理速度快 数据采集和数据处理速度效率快
4V 价值密度低 主要是有效数据和无用数据的占比
大数据技术的两个核心技术
分布式存储 hdfs
分布式计算 spark
Yarn实现了一个集群多个框架
Spark框架
跟hadoop框架对比,hadoop存在两个明显缺点,一个是磁盘IO(磁盘读写)开销大,一个延迟性高
Spark优点(相比较于hadoop):
- 1 继承了hadoop的大部分优点,解决了mapreduce的常见问题
- 2 spark提供了内存计算和实时计算,将中间结果保存在内存中,对于迭代运算效率更好
- 3 spark任务调度执行机制,优于hadoop 中的mapreduce
常见的大数据运算框架中,随着迭代次数增加,效率最高的Flink,其次spark,hadoop(Mapreduce)效率最低。
Hadoop适合离线计算(数据仓库批处理,静态数据处理),比如某个电子商城去年营收情况统计
Spark适合实时计算(内存计算,流计算),微博热搜,某个电子商城今年营收情况。
Flink采用的是一行一行的形式对文件进行读取,支持毫秒级别的运算,对sql的支持范围比spark小。
Spark采用数据分片的方式对文件进行读取,支持秒级别的运算,对sql的支持范围比flink大
2 Spark特点
- 1 运算速度快。使用DAG执行引擎以支持循环数据流的内存计算
- 2 易使用性,仅仅可以只使用scale,java,python或者R语言进行编程,就可以通过spark shell进行交互编程
- 3 通用性高,提供了完整而又强大的技术栈,比如SQL查询,流式计算和机器学习以及图算法组件
- 4 运行模式多样化 提供了独立的集群模式,可以运行在hadoop中,也可以运行在Amazon EC2等云环境,并且可以访问hdfs,Cassnadra,Hbase,HIve等多种数据源
Spark可以满足以下三种场景的计算:
支持流文件批处理、交互式查询和流数据处理
Spark五个重要的组成
1 Spark Core(主要是RDD编程)
2 Spark SQL
3 Spark Streaming
4 MLLib
5 GraphX
每个组成对应的具体的处理场景
3 spark架构
名词解析:
1 RDD:是Resillient Distributed Dataset(弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型
2 DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系
3 Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task
4 应用(Application):用户编写的Spark应用程序
5 任务( Task ):运行在Executor上的工作单元
6 作业( Job ):一个作业包含多个RDD及作用于相应RDD上的各种操作
7阶段( Stage ):是作业的基本调度单位,一个作业(job)会分为多组任务(task),每组任务被称为阶段,或者也被称为任务集合,代表了一组关联的、相互之间没有Shuffle依赖关系的任务组成的任务集
一个cluster manager(集群资源管理器)----》多个工作节点(worker node)
一个工作节点(worker node)------》一个执行进程(Executor)
一个执行进程(Executor)------>多个task(任务)
sparkContext作用:
1 资源申请,任务分配以及监控
2 根据RDD依赖关系构建DAG,并交给DAGscheduler解析
3 将taskSet提交给底层taskscheduler
4 Spark RDD概念
RDD
一个RDD就是一个弹性分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可分成多个分区,每个分区就是一个数据集片段,并且一个RDD的不同分区可以被保存到集群中不同的节点上,从而可以在集群中的不同节点上进行并行计算
RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,不能直接修改,只能基于稳定的物理存储中的数据集创建RDD,或者通过在其他RDD上执行确定的转换操作(如map、join和group by)而创建得到新的RDD
RDD提供了一组丰富的操作以支持常见的数据运算,分为“动作”(Action)和“转换”(Transformation)两种类型
转换是在内存中进行操作的
动作是最后的一个步骤,将内存中保存的结果写入到磁盘(比如hbase中)
RDD
优点:惰性调用、管道化、避免同步等待、不需要保存中间结果、每次操作变得简单
Spark采用RDD以后能够实现高效计算的原因主要在于:
(1)高效的容错性
现有容错机制:数据复制或者记录日志
RDD:血缘关系、重新计算丢失分区、无需回滚系统、重算过程在不同节点之间并行、只记录粗粒度的操作
(2)中间结果持久化到内存,数据在内存中的多个RDD操作之间进行传递,避免了不必要的读写磁盘开销
(3)存放的数据可以是面向对象语言中的对象,避免了不必要的对象序列化和反序列化
RDD编程原理
1 宽依赖和窄依赖
宽依赖和窄依赖主要由是否有shuffle决定
宽依赖:一个父RDD对应多个子RDD依赖
窄依赖:一个父RDD对应一个子RDD或者多个父RDD对应一个子RDD的依赖
窄依赖可以进行优化操作,而宽依赖无法进行优化
将窄依赖尽量划分在同一个Stage中,可以实现流水线计算
2 RDD运行流程
RDD运行流程主要分成三个阶段
[A]创建RDD对象
[B] SparkContetx对象负责计算RDD之间的依赖关系,构建DAG
[C] DAGScheduler负责将DAG图解析成多个阶段(连续的窄依赖会合并成一个阶段),每个阶段包含了多个task任务,每个task任务会被taskScheduler分发给WorkNode的Executor进程去执行。
3 linux中的常用命令
- 1 访问路径
cd + 相对路径|绝对路径
绝对路径以 / 开头的路径,指的是从系统根路径开始
相对路径 以文件夹名字开头,表示相对于当前路径的开始的路径
路径补全快捷键是tab
查看当前文件夹下的子文件或者子文件夹的命令是ll
2 创建一个文件夹
mkdir 文件夹名称
3 重命名文件夹或者文件
mv 文件夹或者文件名字 重命名后的文件夹或者文件名字 (同级情况下是重命名,不同级情况下是移动)
4 删除文件
rm 文件或者文件夹路径 删除对应的文件或者文件夹
5 编辑文件 vi 或者vm 或者 gedit
gedit 文件路径/文件名称 ------->必须要对应要编辑的文件要有相应的权限
4 hadoop+hbase+spark常用指令
启动hadoop命令
start-all.sh
查看hdfs中的文件或者文件夹
hadoop fs -ls /xxx/xxxZ(对应的路径)
上传文件到hdfs中
hadoop fs -put 要上传的本地文件地址 上传后的路径
在hdfs中创建文件夹
hadoop fs -mkdir 要创建的文件夹
spark概述以及原理架构相关推荐
- 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】
视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...
- spark任务shell运行_大数据系列:Spark的工作原理及架构
介绍 本Apache Spark教程将说明Apache Spark的运行时架构以及主要的Spark术语,例如Apache SparkContext,Spark shell,Apache Spark应用 ...
- Spark SQL运行原理和架构
一 Spark SQL运行架构 Spark SQL对SQL语句的处理和关系型数据库类似,即词法/语法解析.绑定.优化.执行.Spark SQL会先将SQL语句解析成一棵树,然后使用规则(Rule)对T ...
- spark基础之spark sql运行原理和架构
一 Spark SQL运行架构 Spark SQL对SQL语句的处理和关系型数据库类似,即词法/语法解析.绑定.优化.执行.Spark SQL会先将SQL语句解析成一棵树,然后使用规则(Rule)对T ...
- 大数据平台,Hadoop集群架构,概述及原理
目录 一,大数据平台架构概述 1,大数据概念 2,大数据的特征 3,大数据的处理流程和相关技术 4,大数据平台架构的特点 5,大数据平台架构原理 二,Hadoop集群概述 1,HDFS 2,MapRe ...
- 深入分析Spark任务调度的原理--Java后端同学入门Spark编程系列
作者:陌北有棵树,Java人,架构师社区合伙人! 之前写了一篇:<我作为Java后端,分享一下入门Spark编程的经历!> 上篇是Spark入门的第一篇,写了一些关于Spark编程中RDD ...
- 大数据技术之Spark(一)——Spark概述
大数据技术之Spark(一)--Spark概述 文章目录 前言 一.Spark基础 1.1 Spark是什么 1.2 Spark VS Hadoop 1.3 Spark优势及特点 1.3.1 优秀的数 ...
- 集群概述及原理笔记(1)
it你好linux学习文档之集群概述及原理笔记(1) 一 前言 目前,越来越多的网站采用Linux操作系统,提供邮件.Web.文件存储.数据库等服务.也有非常多的公司在企业内部网中利用Linux服务器 ...
- mysql 基于语句的复制_MySQL 复制 - 性能与扩展性的基石 1:概述及其原理
1. 复制概述 MySQL 内置的复制功能是构建基于 MySQL 的大规模.高性能应用的基础,复制解决的基本问题是让一台服务器的数据与其他服务器保持同步.接下来,我们将从复制概述及原理.复制的配置.常 ...
最新文章
- 多核处理器集成了神经处理单元
- C++中定义对象的语法,带括号与不带括号有什么区别?
- 小人大作战v0.02原型(单机)发布
- 顺丰控股:2月速运物流业务营业收入98.49亿元,同比下降3.36%
- 我们无法更新系统保留的分区_系统更新是我们手机的基本功能之一 安卓智能更新有哪些用途...
- ListView中有Checkbox时的点击和选择问题
- 刚刚,美国因「光纤断裂」大规模瘫痪,影响微软、Github和Netflix等服务
- 无线网络技术学习总结
- Spring自定义属性转换器
- 关于HTML页面跳转的5种方法分享。
- 超定方程组的最小二乘解
- 如何借助表格优化直通车分时折扣
- 游戏开发中防外挂的那些事儿
- mysql枚举类型enum用法6_mysql中的枚举类型ENUM的用法
- python中的乘方_python乘方运算
- 楞严经悬镜 明• 憨山大师 ----读记
- 基于loongnix20系统,libvlc代码直接集成测试
- C语言编程之用ellipse画椭圆
- 支付宝领红包的算法猜想
- number of items to replace is not a multiple of replacement length
热门文章
- 了解WEB前端开发吗,风风雨雨30年,前端开发变迁史
- 第十三章 使用动态SQL(二)
- std:weak_ptr
- 汉字转换成NCR编码的字符
- 基于web的HMI / SCADA软件
- 错误:The ‘pycocotools>=2.0‘ distribution was not found and is required by the application
- micropython esp32手册_编译micropython遇到的几个问题(ESP32平台)
- linux如何调试elf程序,开发一个Linux调试器就需要了解ELF和DWARF
- 从360与QQ之战看商业政治
- 把通过高德静态地图API获取的地图图片,拼接成一张大地图图片