Introduction to Spark
Intro to MapReduce
Traditional and Parallelize
- 传统数据处理使用串行处理, 速度较慢, 不能充分利用算力
- Parallelized System(并行系统)通过Partitions(切分)->Workers(并行处理)->Combine(汇总), 其中Workers可以拆分成三种粒度:
- distinct server in different locations(异地独立服务器)
- local machine(本地机器)
- CPU core in a machine(一台机器中的单个CPU核)
MapReduce
- MapReduce是第一个被广泛采用的distributed big data processing(分布式大数据处理)框架
- 关键优势:
- 简化的编程模型: map & reduce
- 在廉价硬件上表现出的强大scalability
- built-in的容错能力
- 解决了阅读海量数据的问题:
- Map: 从每条数据/每篇文档中抽取信息
- Shuffle and Sort: 在不同的机器之间shuffle同时交换数据和文档
- Reduce: aggregate(聚合), summarize(汇总), filter(过滤), transform(变换)
- Write得到最终结果, 在此过程中保持paradigm不变并且只修改map和reduce函数即可适配不同问题
Data Model
- 在HDFS中,假设文件都以扁平形式存在(表示为无顺序的键对)
- Map reduce program会接收这样的无顺序键对(key,value)并输出处理后的无顺序键对(key,value)

MapReduce Issues/Challenge
- 在Map Reduce中存在以下问题:
- 任何任务都必须拆解成Map和Reduce, 表达力受限
- 为了容错,Map得到的结果必须先写进HDFS
- 每次迭代必须以磁盘为总线,速度很慢
- 同样为了容错,每份数据还必须在磁盘上保留replication,慢上加慢
- 理想情况下, 数据操作应当基于内存进行而不是磁盘
- 直接将内存作为总线也不可行,因为这套为磁盘设计的容错在内存上运行过于昂贵(整体读写),因此必须放弃细颗粒度的操作(精准修改)转而变为粗颗粒度(整体修改, 如filter)
- 最终就会得到RDD
Intro to Spark
链接