是Scala(编程语言)实现的
Spark核心概念RDD
RDD:弹性分布式数据集 是一个只读的 可分区的分布式数据集
默认存储在内存 当内存不足时 溢写到磁盘
RDD数据以分区的形式在集群中存储
RDD具有血统机制 发生数据丢失时 可快速进行数据恢复
Spark集群
HDFS RDD1 RDD2 外部存储
Hello spark ''Hello spark" "Hello,spark'' Hello spark
Hello Hadoop "Hello Hadoop" "Hello,Hadoop" Hello Hadoop
定义_____
基于内存的(所有操作都是在内存中完成的) 分布式 批量数据处理引擎
功能______
离线式处理 实时流处理(还是批处理 不是真正意义上的流处理) 交互式查询 图计算 机器学习
应用场景
离线处理 实时处理 交互式学习 机器学习 数据挖掘 ETL 迭代计算
特点 Spark
轻(Scala编写) 快(小数据集可以控制在毫秒级别的延迟) 灵(不同层面对的灵活性) 巧(借用大数据)
存储:HDFS
Yarn:资源管理和任务调度
主备选举:Zookeeper
交互式查询:Hive
核心:Spack core
离线批发工具__ 直梯___>高延迟
MapRuduce Hive
实时流处理____阶梯__>低延迟
Strom(Streaming)
_____________________________________________
Spack SQL 处理引擎是Spack core 延迟低
Hive 处理引擎 MapReduce 延迟高
1.Client 需求提出
3.Driver 负责业务逻辑和运行规划
4.ApplicationMaster 向资源部门申请资源 |
2.ResourceManager 负责整个集群资源统一调度和分配 |
Executor:负责实际计算工作 一个应用会拆分成多个Executor来计算
用户提交一个任务 spack把任务称为application 被Driver拆分
Application ----(action算子)---->Job----(宽依赖)----->Stage---(Stage末端RDD分区数决定)----->Task
Spark应用在运行时 Stage划分的依据是 shuffle
两类算子
action得到最终结果 Transform得到中间结果
Spack数据类型:
RDD;弹性式 分布式 只读的 可分区的数据集 里面包含数据 对数据所要做的操作
特性;lazy式 只记录什么不去执行 只有遇到Action算子才会从头执行
属于Action算子是:
Reduce collcet count first take saveAsTextFile
窄依赖是指每一个父RDD的Partition最多被子RDD的一个Rartition使用
宽依赖是指多个子RDD的Partition会依赖同一个父RDD的Partition
如果出故障:
窄依赖 只要重算和子RDD分区对应的父RDD分区即可
宽依赖 极端情况下 所有的父RDD分区都要进行重新计算
窄依赖的每个父RDD的分区只会传入到一个字RDD分区中 通常可以在一个节点内完成
宽依赖往往对应着shuffle操作 需要在运输过程中将同一个父RDD的分区传入到不同的子RDD分区中
中间肯能涉及多个节点之间的数据传输
Spark可以将RDD持久化到内存或磁盘文件中 把RDD持久化到内存中可以
极大提高迭代计算以及各计算模型之间的数据共享
Dataframe是一个不可变弹性分布式数据集
Dataframe是Datset的特例
表现形式
RDD Dataframe Dataset
1,小红,22 id:String Name:String Age:int value:Penple[age:bigint,id:bigint]
2,小黄,20 1 小红 22a People(id=1,name="小红")
Spark SQL 和Hive
区别:S的执行引擎是Spark core ,Hive默认执行引擎为MapReduce
S的执行速度是Hive的10-100倍
S不支持buckets
联系:S依赖Hive的元数据
S兼容绝大部分Hive的语法和函数
S可以使用Hive的自定义函数



