第四章大数据离线计算框架(MapReduce&YARN)
一、MapReduce技术原理
- 并行的编程模型,用于大规模的数据集(TB)的并行计算。
- Hadoop MapReduce是基于HDFS的分布式编程框架,可以使没有并行计算和分布处理系统开发经验的程序员有效利用分布式系统的丰富资源。
1.1 MapReduce概述
- Hadoop MapReduce框架是通过java编写。但也可以使用Ruby、PHP、和c++等非java类语言编写。
- 可用于日志分析、海量的数据排序、在海量的数据中查找特定的模式等场景。
特点: - 易于编程:程序员仅需要描述做什么,具体怎么做交由系统的执行框架处理
- 良好的扩展性
- 高容错性:计算迁移或数据迁移等策略提供集群的可用性和容错性
1.2 Map函数和Reduce函数
进行计算任务时:会将任务初始化为一个工作(job),每个job又被分解成若干任务task,整个计算过程分为Map和Reduce两个阶段。
- Map函数接受一个键/值<key,value>对的输入,产生一个新的键值对作为中间输出。MapReduce负责将所具有相同key值的value汇总到一起传给Reduce函数。
- Redeuce函数接受一个<key,list of values>形式的输入,然后对这个value集合进行处理,每个Reduce产生0或1个<key,value>输出