spark技术原理介绍(编辑中)Spark技术原理介绍——分布式⼤数据分析统⼀引擎0.主要内容
(1)Spark概述
(2)Spark架构
(3)Spark运⾏原理与部署⽅式
(4)Spark程序⽰例
1.Spark概述
1.1.Spark是什么?
(1)基于内存的分部署⼤数据分析统⼀引擎
(2)2013年的Apache社区开源项⽬
(3)⽀持Python、SQL、Scala、Java或R语⾔
(4)可⽤于迭代计算、Streaming实时计算、机器学习、SQL等
(5)特点:简单、快速、可扩展、统⼀
1.2.Spark的发展与现状
Hadoop:
Spark:
1.3.Spark与Hadoop对应关系
主流应⽤组合:Spark + Yarn + HDFS
1.4.Spark特点之”统⼀“
Spark⽣态圈
对于不同数据存储系统进⾏封装,提供统⼀API
1.5.Spark特点只”快速“
Spark与Hadoop MapReduce⽐较,中间数据存放在内存中,减少磁盘IO,提⾼了迭代计算效率;
计算DAG图优化,减少任务间依赖;
采⽤pipeline管道计算模式。
Spark与Hadoop MapReduce⽐较,性能提升100倍以上;
磁盘100TB数据排序对⽐:Spark使⽤1/10数量极其,让计算速率提⾼了3倍。
1.6.MapReduce简介
Spark是MapReduce的继任者,但⽀持的操作不仅限于Map和Reduce;
MapReduce是对⼤数据”拆解+组合“的通⽤计算⽅法,属于分治法;
MapReduce是六⼤过程:Input,Split,Map,Shuffle,Reduce,Finalize
2.1.Spark组件架构
Spark Core:Spark基本功能,含RDD的API与操作
Spark SQL:结构化数据查询,提供HiveQL语⾔交互,⼀个数据表即为⼀个RDD
Spark Streaming:基于RDD的实时数据流处理
MLlib:常⽤机器学习算法学习库,通过对RDD操作实现
GraphX:控制图、并⾏图操作和计算的算法⼯具库
2.2.Spark运⾏架构
采⽤Master-Slaver分布式模型,Master为集的控制器,Driver负责应⽤执⾏的调度控制,将Task及其以来传递给对应Executor。
2.3.Spark关键⾓⾊
client:
提供shell或者submit⼯具⽤于应⽤提交
driver:
负责应⽤的业务逻辑和运⾏规划
Apache Spark 已成为分布式横向扩展数据处理的事实上的标准框架。借助 Spark,组织能够使⽤服务器在短时间内处理⼤量数据——既可以和转换数据,也可以分析数据并⽣成业务洞察⼒。Spark 为 ETL(提取、转换、加载)、机器学习 (ML) 和来⾃各种来源的海量数据集的图形处理提供了⼀组易于使⽤的 API。今天,Spark 在数百万台服务器上运⾏,包括本地和云端。
3.Spark发展与现状
3.Spark与hadoop对应关系
2.Spark特点之“统⼀”
2.Spark特点之“快速”
2.MapReduce简介
4.Spark架构
5.Spark关键⾓⾊
6.Spark基本概念
RDD(Resilient Distributed Dataset)弹性分布式数据集:是⼀个基于分区的、只读的抽象数据集,是Spark的基本计算单元,物理上可分块分布在不同机器上。基于该抽象数据集,可以在集中执⾏⼀系列算⼦操作(Tramsformation和Action)。
为了简化容错⽀持,RDD只⽀持粗粒度的变换,不⽀持集中细粒度变换,即输⼊数据集是immutable(或只读)的,每次运算产⽣新的输出,。
数据集显⽰抽象统⼀为RDD,便于将不同计算过程组合起来进⾏统⼀的DAG调度。
Hadoop MapReduce中间结果必须落盘,⽽Spark的RDD保存在内存中,降低加载和计算延迟。
定义宽窄依赖的概念,进⾏Stage划分,优化了DAG调度计算。
因为内存有限,以计算换取存储的⽅式,进⾏容错⽀持,根据当前RDD的⽗RDD以及算⼦来重算来进⾏错误恢复。
可以内存可以硬盘
在逻辑上是⼀个数据集,在物理上则可以分块分布在不同的机器上并发运⾏。RDD的数据具有不可变性(immutable)
也是Spark的基本计算单元,可以执⾏⼀系列算⼦操作(Tramsformation和Action)
存储级别
7.Spark-standalone运⾏原理
8.Spark-Yarn运⾏原理
9.Spark的SQL和Stream介绍
Spark shuffle时是否会在磁盘存储?:ac.nowcoder/questionTerminal/50aeea8e405d4f90baec3060f49a3442? orderByHotValue=1&page=1&onlyReference=false
链接:
来源:⽜客⽹
在Spark 0.6和0.7时,Shufle的结果都需要先存储到内存中(有可能要写⼊磁盘),因此对于⼤数据量的情况下,发
hadoop与spark的区别与联系⽣GC和OOM的概率⾮常⼤。因此在Spark 0.8的时候,Shuffle的每个record都会直接写⼊磁盘,并且为下游的每个
Task都⽣成⼀个单独的⽂件。这样解决了Shuffle解决都需要存⼊内存的问题,但是⼜引⼊了另外⼀个问题:⽣成的
⼩⽂件过多,尤其在每个⽂件的数据量不⼤⽽⽂件特别多的时候,⼤量的随机读会⾮常影响性能。Spark 0.8.1为了
解决0.8中引⼊的问题,引⼊了FileConsolidation机制,在⼀定程度上解决了这个问题。由此可见,Hash Based
shuffle在Scalability⽅⾯的确有局限性。⽽Spark1.0中引⼊的Shuffle Pluggable Framework,为加⼊新的Shuffle机制
和引⼊第三⽅的Shuffle机制奠定了基础。在Spark1.1的时候,引⼊了Sort Based Shuffle;并且在Spark1.2.0时,
Sort Based Shuffle已经成为Shuffie的默认选项。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。