hadoop04--(mapreduce增强)
发布日期:2021-05-20 07:58:19 浏览次数:23 分类:精选文章

本文共 1397 字,大约阅读时间需要 4 分钟。

MapReduce的运行流程

MapReduce是一种并行计算模型,广泛应用于大数据处理领域。其运行流程可分为三个主要阶段:Map(映射)、Shuffle(洗牌)、Reduce(归并)。

  • Map阶段

    • 启动:MapReduce程序启动后,首先启动MRAppMaster(掌管器)。

    • 切片分配:MRAppMaster根据Job的描述信息计算所需的maptask实例数量(切片),并向集群申请相应数量的maptask进程。

  • Maptask执行

    • 数据读取:-maptask进程获取inputformat指定的RecordReader,读取数据并形成键值对(KV对)。

    • 逻辑处理:传递给map()方法处理,生成新的KV对存储到缓存中。

    • 输出结果:缓存中的KV对按键分区排序后,溢写到磁盘文件。

  • Shuffle阶段

    • 数据的洗牌是MapReduce的核心机制。

    • 分区排序:Maptask输出的数据按键分区并排序。

    • 数据分发:Reducetask根据分区号获取相应数据并进行归并排序。

  • Reduce阶段

    • 界面管理:MRAppMaster启动reducetask进程,并告知处理数据范围。

    • 数据处理:读取多个maptask输出结果文件,进行归并排序后调用reduce()方法计算结果。

    • 输出结果:将处理后的结果通过outputformat输出到外部存储。

  • MapReduce的Shuffle机制

    Shuffle机制确保数据从map阶段流入reduce阶段的效率。

    • 数据收集与流出:maptask持续收集并溢写到本地磁盘。
    • 合并与分区:多个溢出文件合并成大文件,同时进行分区和排序。
    • 分区分发:Reducetask根据分区号收集数据并进行归并排序。

    Shuffle的缓冲区大小影响性能,io.sort.mb默认为100M,可调整以优化性能。

    MapReduce与YARN

    YARN是Hadoop的资源调度平台:

    • 资源调度:YARN不管理用户程序运行机制,而是为程序分配资源。
    • 角色分工
      • ResourceManager:负责全集群资源管理。
      • NodeManager:管理集群节点资源。

    YARN支持多种分布式计算框架,包括MapReduce、Spark等,实现资源共享提升利用率。

    实践案例1:流量统计

    目标:统计每个手机号的上行、下行及总流量。

    • 数据格式:一列用户数据,每列包含手机号、上行流量、下行流量。

    • 流程

    • map():解析数据,提取手机号及其流量,写入FlowBean。
    • reduce():按手机号汇总流量。
    • 序列化接口:FlowBean实现Writable接口,定义序列化方法。

    • Partitioner定制:按号码归属地分区,调整reduce任务数和分区器实现。

    Partitioner扩展

    实现根据号码归属地分区:

    • 自定义Partitioner类,构建映射关系。
    • getPartition方法根据号码前三位获取分区。 -.AutoScaleDimensions确保数据分布均匀。

    实践案例2:流量排序

    修改:

    • FlowBean:实现WritableComparable,定义compareTo方法按总流量排序。
    • Partitioner:根据流量大小分区。

    总结

    MapReduce通过三个阶段完成并行计算,Shuffle机制确保数据高效排序,YARN实现资源调度。通过实践案例认知其灵活性和扩展性。

    上一篇:多线程学习笔记--05线程间的通信(join方法的使用)
    下一篇:计算机网络02--从零开始学

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2025年05月07日 13时03分46秒