zoukankan      html  css  js  c++  java
  • Google论文系列(2) MapReduce

    mapreduce

    思想

        map函数:处理一组key/value对进而生成一组key/value对的中间结果

        reduce函数:将具有相同Key的中间结果进行归并

    clipboard

     

    实现

    环境

        普通带宽,上千台机器(失败变得正常),廉价硬盘,调度系统。

    执行过程

    clipboard[1]

    1. 文件划分
    2. master分派map和reduce任务
    3. 执行map函数
    4. 中间结果缓存和位置传递
    5. 执行reduce函数
    6. 生成最终结果文件
    7. 结果返回

    Master是将中间结果文件从map task传递到reduce task的渠道。

        保存:对于每个完成的map task,master会保存由它产生的R个中间结果文件的大小及位置。

        收到:中间结果信息上报:当map task结束后,将会受到对于这些位置和大小信息的更新。

        推送:中间结果信息(位置+大小)会被逐步推送到那些包含正在处理中国的reduce task 的worker

    容错:

        标记失败:Master周期性地ping每个worker。一定时间内无响应则标记失败。

        重新执行:标记失败worker上的完成状态任务需要重新执行,因为中间结果仍保存在失败机器上。

        Master失败:从上次检查点状态恢复拷贝。

    本地化:输入和中间结果本地存取。

    任务粒度:

        R个map task 和 M各reduce task,M和R都应当远远大于运行worker的机器数目。

        优点:

            提高动态负载平衡。

            加速worker失败后的恢复过程。

        M的选择:使每个独立task输入数据限制在16M到64M之间。

        R的选择:大概是使用worker机器的几倍。

    备份任务:

        长尾:花费相当长的时间去完成MapReduce任务中最后剩下的极少数的那几个task的那台机器。

        解决:当MapReduce任务接近尾声的时候,master会备份那些还在执行的task,只要该task的主本或者一个副本完成了,我们就认为它完成了。


    技巧

    1. 划分函数
    2. 有序化保证:中间结果的key/value对是按照key值的增序进行处理
    3. 合并函数:每个reduce task部分归并
    4. 输入和输出类型:预定义的类型就足够了
    5. 副作用:map和reduce操作过程中产生一个文件作为额外输出,应用程序编写者保证这些操作的原子性以及幂等性(backup机制)
    6. 跳过坏记录:一种可选模式,在该模式下,MapReduce库会检测哪些记录会引发crash,然后跳过它们继续执行。
    7. 本地执行:调试和小规模测试可以再本地串行执行
    8. 状态信息:web页面
    9. 计数器:MapReduce库提供了一些计数器设施来计算各种事件的发生。

    MapReduce优点:

    1. 模型容易使用,隐藏了并行化、容错、本地化优化、负载平衡的细节
    2. 大量的问题可以简单地用MapReduce计算来表达
    3. 可以扩展到数千台机器上

    参考资料:

    《google系列论文》- MapReduce

  • 相关阅读:
    Kubernetes-一文详解ServiceAccount与RBAC权限控制
    删除无用的docker镜像与容器
    How do I write one to many query in Dapper.Net?
    c# 使用反射Reflection的Emit实现动态创建元数据及可执行文件
    IE浏览器下bootStrap form-control input输入框不显示兼容性问题
    WPF控件从一个窗口移动到另一个窗口,特别适合实时刷新的
    添加/扫描显示二维码中的换行之【另类视野】
    各浏览器官方离线版下载地址
    CentOS挂载NTFS
    System.Data.SQLite.Core for .NET 5 Core manual reference
  • 原文地址:https://www.cnblogs.com/suzhou/p/google2mapreduce.html
Copyright © 2011-2022 走看看