继上一节的HDFS,这一节来学习并行计算框架MapReduce。
作为Hadoop的又一核心概念,HDFS解决了数据的存储的问题,而MapReduce自然解决的是并行计算的问题。
目录:
- Hadoop的优势与概念
- Map和Reduce函数
- MapReduce体系结构:Client,JobTracker, TaskTracke,Task
- 工作流程
- shuffle过程详解:Map和Reduce端各自的shuffle过程
- 应用程序执行过程
- 统计词频例子
- 总结
首先,相对于在此之前诸如MPI之类的并行计算框架,MapReduce有什么优势呢?
在集群架构上,传统框架大抵采用的是共享式(共享内存/存储),容错性低,而MapReduce就不共享。
传统计算框架采用刀片服务器、高速网等设备,价格昂贵,而MapReduce只需要普通的PC机就可以了,便宜,扩展性又好。
在适用场合上,传统并行计算框架适用于实时的、细粒度计算和计算密集型。但是MapReduce更适合批处理、非实时,数据密集型的计算。
MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce。
程序运行在分布式系统上,完成海量数据的计算。
MapReduce采用分而治之策略,一个存储在分布式文件系统中的大规模数据集,会被切分为许多独立的分片,这些分片可以被多个Map任务并行处理。
MapReduce设计的一个理念就是”计算向数据靠拢“,而不是”数据向计算靠拢“。因为移动数据需要大量的网络传输开销。
MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave。
Map和Reduce函数:
函数 | 输入 | 输出 | 说明 |
---|---|---|---|
Map | < K1,v1> |