————Spark技术内幕读书笔记————
深入解析内核架构设计与实现原理
本书的三个核心:
RDD实现详解
Scheduler:DAGScheduler任务切分调度与TaskScheduler任务执行调度计算过程详解
性能调优详解
Spark究竟解决了什么问题?
1.背景:
在spark出现之前,hadoop的迅速发展,hadoop分布式集群,把编程简化为自动提供 位置感知性调度,容错,以及负载均衡的一种模式,用户就可以在普通的PC机上运行超大集群运算,hadoop有一个非常大的问题:hadoop是基于流处理的,hadoop会从(物理存储)hdfs中加载数据,然后处理之后再返回给物理存储hdfs中,这样不断的读取与写入,占用了大量的IO,后来hadoop出现了非循环的数据流模型,也就是DAG,但是其中任然出现了两个重大的问题:
1.任然是不断的重复写入和读取磁盘。每次操作都要完成这两步,太浪费了。
3.交互式数据查询。比如:用户不断查询具体的一个用户的子集。
2.比如,机器学习,图计算,数据挖掘方面不适用,现在要做大量的重复操作,并且下一次的开始,要依据前面计算的结果,这样对于hadoop来说就要重新的计算,从而浪费大量的资源。2.Spark到底解决了什么根本性的技术问题?
基于上述:
spak提出了分布式的内存抽象,RDD(弹性分布式数据集)支持工作集的应用,也具有数据流模型的特点,例如,自动容错,位置感知,可伸缩性和可扩展性,并且RDD支持多个查询时,显示的将工作集缓存到内存中,后续查询时能够重用工作集的结果。这样与hadoop相比,就极大的提高了速度。
RDD提供了共享内存模型,RDD本身只记录分区的集合,只能通过其他的RDD通过转换例如,map,join等操作来创建新的RDD,而RDD并不需要检查点操作,为什么?因为前后之间的RDD是有”血统”关系的,其核心原因是,每个RDD包含了从其他RDD计算出分区的所有内容,并且这个计算不是从头开始计算,而是仅仅指的是从上一步开始计算得到即可,这也就实现了工作集的复用。
Spark周围的SQL,机器学习,图计算都是基于此构建出来的,使得Spark成为一体化的大数据平台,不仅降低了各个开发,运维的成本,也提高了性能。
Spark的应用场景
DataBricks公司全面替代Hadoop中的MapReduce的分布式数据集计算框架,解决数据规模的爆炸式增长与计算场景的丰富细化,以应对MapReduce难以满足的各种计算需求而生。支持实时流计算(动态数据及时处理)、批计算(历史的离线静态数据处理)、交互查询与图计算一体。
Spark Sore内核:是spark sql(结构化数据处理模块) 、 spark streaming(实时数据流处理)、MLlib(机器学习算法库)、Graphx(图计算)的模块基础,以上的四大模块运用都是基于内核进行计算的。
掌握内核好处:开发更游刃有余、调优做到有的放矢。
设计目标:解决大数据处理的4V难题
- 海量Volume
- 快速Velocity
- 多样Variety
- 价值Value
————第一章:Spark简介与环境————
基础概念
DAG: Directed Acyclic Graph,有向无环图
数据处理方式: