spark特点
spark 计算框架在处理数据时,所有的数据都存储在内存中。减少了磁盘的读写操作,提高了框架计算效率。同时spark还兼容HDFS、Hive,可以很好地与Hadoop系统兼容,弥补了mr高延迟的性能缺点。spark是一个更加高效、快速的大数据计算平台系统。市面上基本的大型离线分析系统都采用spark处理引擎。
基本概念
Application: spark运行的应用。application 中包含一个驱动器进程和集群中的多个执行进程。
Driver Program:运行main方法创建sparkcontext的进程
cluster Manager:用于集群上申请资源的外部服务(集群管理器、Mesos、Yarn)
work node:集群上运行应用程序代码的任意一个节点
Executor:在集群工作节点上为某个应用启动的工作进程,该进程负责运行计算任务,并为一个用程序存储数据。
Task:在Executor 进行中执行任务的工作单元,多个task 组成一个stage。
job:一个并行计算作业,由一组任务组成,并由spark行动算子触发启动。
stage:每个job划分为更小的task集合,每组任务被称为stage。
集群运行架构
spark应用在集群上作为独立的进程组来运行。
1. Driver 通过main创建一个spakrcontext,然后向cluster manager注册并申请资源
2. cluster manager 根据资源调度算法分配并监控资源使用情况,分配资源给work节点,work节点为应用启动多个executor,同时节点汇报心跳情况给cluster manager,便于集群管理器对executor 进行状态监控,如果监控到executor 失败,则立刻重新创建。
3. sparkcontext 构建的DAG图,将分解为stage。并把stage 发送到task scheduler,executor 向spakrcontext 申请task。
4. task scheduler 将task 发送给executor 运行,同时sparkcontext 将应用程序代码发送到executor。
5. task 在executor上 运行,运行完毕后Driver 向cluster ma