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


链接