基于内存,通用、可扩展的计算引擎
基于mr算法实现分布式计算
不同之处时job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,更好地适用于数据挖掘与机器学习,后期需要使用spark对接外部地数据源。
特征
速度快
采用最先进的DAG调度算法
原因
基于内存:job结果可以保存在内存中,但是也会产生shuffle阶段
任务以线程方式
易用性
可通过不同礼物
通用性
是一个生态系统,包含很多模块
sparksql:通过sql去开发spark程序做离线分析
sparkStreaming:主要用来解决公司有实时计算的场景
Mlib:封装了机器学习算法库
Graphx:图计算
兼容性
可以访问不同的数据源
运行模式
master
资源调度系统leader
监控worker
worker
slave角色掌管所有节点的资源信息
注册到master 定时发送心跳给master
根据master发送的application配置进程环境
driver
执行开发程序中的main方法的线程
spark的驱动器,执行开发程序中main方法的线程
将用户程序转化为作业job
在executor之间调度任务task
跟踪executor的执行情况
通过ui转世查询运行情况
excutor
是一个工作节点,负责在spark作业中运行任务,任务间相互独立,生命周期与spark相同,如果发生故障,spark也可以继续执行,会将出错节点上的任务调度到其他的executor节点上。
功能:负责运行组成spark应用的任务,并返回结果
为RDD提供内存式存储,任务可以在运行时充分利用缓存数据加速运算。
RDDs
弹性分布式数据集
Application
包含了客户端的代码和任务运行的资源信息
job
一个运动算子action就是一个job
stage阶段
一次宽依赖(一次shuffle)就是一个stage,划分式从后向前划分的
task
spark是以task线程的方式运行在worker节点对应的executor进程中
一个核心就是一个task,体现在任务的并行度