概述:
基于内存计算
三大分布式计算系统:Hadoop、Spark、Storm
特点:
采用有向无环图DAG作业调度
运行速度快
循环数据流
容易使用:可以通过Spark Shell交互式编程
用途:SQL查询、流式计算、机器学习、图算法组件
部署:Hadoop的yarn框架调度、单独部署等等
Spark主要语言:
Scala(scalable可扩展):多范式编程语言(面向对象、函数式编程)
兼容Java可以运行在JVM,强大并发性,更好支持分布式系统
Spark生态系统:
复杂的批量数据处理:MR
历史数据的交互式查询:Impala
实时数据流处理:Storm
内存计算:Spark Core
交互式查询分析:Spark SQL
流计算: Spark Streaming
机器学习算法库组件:Mlib
图计算:GraphX
运行架构:
RDD:分布式内存抽象概念
DAG:有向无环图
Executor:负责运行任务Task
Application:编写Spark
Task:工作单元
Job:包含多个RDD
Stage:Job基本调度单位(任务集合)
worknode 中 有execute
一个Application由一个Driver管家和多个worker node
运行基本流程:
Driver构建运行环境:创建SparkContext与资源管理器申请资源
资源管理器为Execute申请资源
根据RDD依赖关系构建DAG,DAG提交给DAGScheduler解析成Stage
把TaskSet提交给TaskScheduler
Execute申请Task,运行
RDD:
分布式对象集合
不断转换
不需要不断写入磁盘
Spark SQL
Shark:hive on Spark
部署应用:
Standalone
Spark on Mesos
Spark on YARN
底层HDFS存储 YARN资源调度 部署Spark