为什么需要Spark
MapReduce的缺点
1.抽象层次太低,大量底层逻辑需要开发者手工完成
2.只有map和reduce两个操作
3.每一个job的计算结果都会存储在HDFS中,所以每一步计算成本很高
4.只支持批处理,却反对流数据处理的支持
Spark支持各种丰富的操作,而且速度远超MapReduce
下图是Spark和Hadoop上运行逻辑回归算法的运行时间对比
在任务(task)级别上,Spark是多线程模型,MapReduce是多进程模型
Spark并不是完全替代Hadoop,因为Hadoop还包含了很多组件:
数据存储层:分布式文件存储系统HDFS,分布式数据库存储HBase
数据处理层:进行数据处理的MapReduce,负责集群和资源管理的YARN
数据访问层:Hive,Pig,Mahout
Spark生态圈如下
Spark有5个主要扩展库
1.支持结构化数据的Spark SQL
2.处理实时数据的Spark Streaming
3.用于机器学习的MLlib
4.用于图计算的GraphX
5.用于统计分析的SparkR
RDD
弹性分布式数据集Reilient Distributed Dataset
RDD是逻辑上的一个大数组,数组中的每个元素代表一个分区Partition,可以被存储在内存或者磁盘中
这些分区是独立的,可以被放在不同节点上
RDD中的每个分区存有在该RDD中的index,通过RDD的ID和分区的index可以唯一确定对应的数据块的编号,从而通过底层存储层的接口提取到数据进行处理
RDD具有不可变性,只能对现有的RDD进行转换Transformation操作,得到新的RDD
RDD的分区和不可变性使得它支持并行操作
RDD的结构
SparkConf提供了一些参数配置信息
SparkContext是所有Spark功能的入口,它代表了与Spark节点的连接,可以用来创建RDD对象以及在节点中的广播变量等
Partitions代表RDD中的数据逻辑结构,每个Partition会映射到某个节点内存或者硬盘的一个数据块,目前两个主流的分区方式Hahs分区和Range分区
Dependencis是依赖关系,包括宽依赖 或者窄依赖
Checkpoint,跟关系型数据库类似,某个RDD的依赖关系复杂计算时间长,加入检查点后,就删除之前的依赖关系加速恢复过程
存储级别Storage Level用来记录RDD持久化的存储级别
迭代函数Iterator和计算函数Compute是用来标示RDD怎样通过父RDD计算得到的
迭代函数首先会判断缓存中是否有要计算的RDD,如果有就直接读取,没有就查找想要计算的RDD是否被检查点处理过,如果有就读取没有就调用计算函数向上递归查找父RDD进行计算
RDD的转换操作
操作分为两种,转换Transformation ,动作Action
转换是把一个RDD转换成另一个RDD,动作是通过计算返回一个结果
转换的操作包括:
map,filter,mapPartitions,groupByKey
动作的操作包括:
collect,reduce,count,countByKey
RDD的持久化
Spark的persist(),cache()函数支持将RDD的数据缓存到内存或者磁盘上
当下一次对同一个RDD进行Action操作时,可以直接读取RDD的结果
存储级别
MEMORY_ONLY:只缓存在内存中,如果内存空间不够则不缓存多出来的部分,这是RDD的默认存储级别
MEMORY_AND_DISK:存储在内存中,如果空间不够则缓存在硬盘中
DISK_ONLY:只缓存在硬盘中
MEMORY_ONLY_2和MEMORY_AND_DISK_2,和上面的级别功能相同,只不过每个分区再集群中的两个几点上建立副本
依赖关系
包括宽依赖Wide Dependency,窄依赖 Narrow Dependency
窄依赖是父RDD的分区可以一一对应到子RDD的分区
宽依赖是父RDD的每个分区可以被多个子RDD的分区使用
窄依赖允许子RDD的每个分区可以被并行处理产生,而宽依赖必须等待父RDD的所有分区都被计算好之后才能开始处理
map,filter会产生窄依赖关系
join,groupBy会产生宽依赖关系
Spark之所以有宽窄依赖是出于以下两点考虑
窄依赖可以支持在同一个节点上链式执行多条命令,如在执行了map后,紧接着执行filter,反之宽依赖需要所有父分区都是可用的,可能还需要调用类似MapReduce之类的操作进行跨节点传递
从失败恢复的角度考虑,窄依赖的失败恢复更有效,因为它只需要重新计算丢失的父分区即可,而宽依赖牵扯到RDD各级的多个分区
标签:实战,存储,依赖,分区,RDD,缓存,数据处理,Spark
来源: https://blog.csdn.net/hixiaoxiaoniao/article/details/90703150