第四章Mapreduce.pdf

【MapReduce概述】 MapReduce是Hadoop生态系统中的关键组件,主要设计用于处理和生成大规模数据集的并行计算。该框架由Google首次提出,后来在Apache Hadoop项目中得到了广泛的应用和实现。MapReduce的核心理念是“分而治之”,即将大问题分解为小问题,然后并行处理这些小问题,最后汇总各个子问题的结果以获得整体答案。 【MapReduce的优缺点】优点: 1.易于编程:MapReduce提供了简单的编程模型,开发者只需要实现Map和Reduce两个主要函数,即可构建分布式应用程序。 2.良好的扩展性:通过添加更多的节点到集群,MapReduce能够线性扩展其计算能力,适应不断增长的数据量。 3.高容错性:系统能够自动处理节点故障,确保任务的连续性和数据的一致性,无需人工干预。 4.处理大规模离线数据:适合PB级别以上的数据处理,可实现大规模数据的批处理。缺点: 1.实时计算能力不足:不适合需要快速响应时间的在线或实时分析任务。 2.不支持流式计算:输入数据集是静态的,不适用于数据流持续更新的场景。 3. DAG计算效率低:对于有依赖关系的多步计算,频繁的磁盘I/O会导致性能下降。 4.编程模型限制:MapReduce模型仅包含一个Map阶段和一个Reduce阶段,复杂业务逻辑可能需要多个MapReduce作业串行执行。 【MapReduce核心思想】 MapReduce的基本思想是将大规模数据处理分解为两个主要步骤:Map和Reduce。Map阶段,原始数据被分割并分配到多个节点上,每个节点执行一个Map任务,将数据转化为键值对形式。Reduce阶段,来自Map阶段的键值对经过分区和排序,由Reducer进行聚合处理,生成最终结果。 【MapReduce编码规范】编写MapReduce程序涉及Mapper、Reducer和Driver三个部分: 1. Mapper:自定义Mapper类,实现map()方法,处理输入数据并生成中间键值对。 2. Reducer:自定义Reducer类,实现reduce()方法,对Mapper输出的中间键值对进行聚合操作。 3. Driver:配置和提交MapReduce作业,连接Mapper和Reducer,指定输入输出格式及参数。 Mapper和Reducer的数据类型需遵循Hadoop的可序列化类型,如BooleanWritable、Text等。此外,Reducer的输入数据来源于Mapper的输出,而Mapper的输出数据类型可以根据需求自定义。 MapReduce是一种强大的分布式计算框架,尤其适合大规模数据的离线处理。然而,其局限性在于实时性、流处理和复杂计算场景。理解并掌握MapReduce的编程模型和工作原理,对于开发和优化大数据处理应用至关重要。
pdf 文件大小:1.49MB