### Hapoop生态体系
hdfs+zookeeper+mapreduce/hive+hbase+storm+mahout+其他
### Spark体系
hdfs+zookeeper+spark+hbase+storm+mahout+其他
设计初衷:
设计一个统一的计算引擎解决所有的各种类型的计算
1. 离线批处理
2. 交互式查询
3. 流式处理
4. 图计算
5. 迭代计算/机器学习
6. SparkR 科学计算 数据分析
> Spark是一个统一的计算引擎能够完美融入Hadoop体验
***优势***:
1. 减少磁盘IO
2. 增加并行度
3. 避免重复计算: 可以把数据强制能够持久化到内存中供其他task使用
4. 可选的shuffle和排序: HashShuffle SortShuffle
5. 灵活的内存管理策略
![](https://box.kancloud.cn/7bc2294d9b0a8496ff9c08d4ef0d14ce_633x298.png)
### Spark编程
1. 获取编程入口
SparkContext SQLContext/HiveContext StreamingContext
2. 通关编程入口加载数据
RDD DataFrame DataSet
3. 对数据进行数据得到结果
各种算子(80个Operators)
4. 对结果进行处理
测试 上线
### 应用场景
1. 复杂的批量处理
2. 基于历史数据的交互式处理
3. 基于实时数据流的数据处理
### RDD
> 分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变,可分区,内部元素可并行计算的集合.RDD具有数据流模型的特点,自动容错,位置感知性调度和可伸缩性.RDD允许用户在执行多个查询时显示地将工作集缓存在内存中,后续的查询能够重用数据集,这极大的提升了查询速度.
1. 数据集 Dataset
2. 分布式 Distributed
3. 弹性 Resilent
### SparkContext
> 隐藏了网络通信,分布式通信,消息通信,存储能力,计算能力,缓存,测量系统,文件服务,web服务.
> SparkContext内置了DAGSheduler负责创建Job,将RDD划分到不同的Stage,提交Stage等功能
> SparkContext内置的TaskScheduler负责资源的申请\任务的提交以及请求集群对任务的调度.
>
```
Application->Job->Stage->Task
```