本次学习了Spark概述,了解了Spark的一些基本概念,为更好的学习
基于内存计算的分布式框架,拥有良好的性能,运行速度快,采用内存计算
scala简介
运行再jvm上,具有强大并发性,支持函数式编程,语法简洁,兼容java,交互式语言
Spark与Hadoop比较
Hadoop:磁盘io开销大,表达能力有限,延迟高,map未结束reduce开启不了
Spark:提供多种据集操作类型,基于内存计算,迭代效率高
Spark生态系统
基于一个软件栈可以满足不同应用场景的理念,满足不同场景的应用
基本概念和架构设计
Spark运行基本流程
1、Driver -> SparkContext(解释器模式下自动创建好sc,编程下需new) -> 进行资源申请 -> SparkContext进行任务的分配与监控
2、为Executor分配资源
3、SparkContext根据RDD的依赖关系生成有向完成图,解析成Stage,里面包含很多个Task,交给TaskSchedule,Executor向SparkContext进行申请Task,根据计算向数据靠拢原则进行选择Executor,TaskSchedule将Task交给Ececutor进行运行
4、Task再Executor进行计算,最后返回数据
RDD
概念
是一个分布式对象集合,只读记录集合,可以有多个分区,可以保存到不同物理存储上,编程模型更加灵活
操作
具体操作分为动作、转换两种类型:转换操作不进行计算,记录转换的轨迹;动作操作进行计算,进行动作计算从头开始沿着轨迹开始进行计算
执行过程
RDD读入外部数据源进行创建,RDD进行一系列转换操作,每一次都会产生不同的RDD供给下一个RDD,
优点:惰性调用,管道化,避免等待
特性
具有高效容错性,采用记录日志:记录有向无环图的轨迹,只记录粗粒度操作,代价很小
RDD依赖关系和运行过程
依赖关系:窄依赖、宽依赖
窄依赖:一个父RDD对一个子RDD或多个父RDD对一个子RDD
宽依赖:一个父RDD的一个分区对多个子RDD或多个父RDD对多个子RDD
运行过程:先进行Stage划分,遇到窄依赖直接添加,遇到宽依赖断开,将RAG进行划分,进行生成Task任务,进行执行
Spark的部署和应用方式
用Spark可以一栈式架构满足批处理和流计算
可以和hadoop一起架构。
Spark是计算框架,取代hadoop的计算框架:MapReduce,但对于hadoop生态的其他框架,Spark替换不了
标签:依赖,07,记录,假期,RDD,Task,计算,Spark,进行 From: https://www.cnblogs.com/JIANGzihao0222/p/17978332