大数据之MapReduce并行算法简单概括

MapReduce重点

程序员必须指定:

map (k, v) → <k’, v’>*

reduce (k’, v’) → <k’, v’>*

    • 所有具有相同key的value被聚集到一起

可选的操作:

partition (k’,划分数) → k’的划分

    • 往往使用key的一个简单散列函数, e.g., hash(k’) mod n
    • 为并行reduce操作划分key空间

combine (k’, v’) → <k’, v’>*

    • Mini-reducers在map后的阶段运行
    • 用作减少网络流量的优化器

执行框架处理一切

    • 调度:为map和reduce分配工人
    • “数据分布”:将过程移动到数据
    • 同步:聚集, 排序, 打乱中间数据
    • 错误处理:检测工人失败和重新启动

有限的数据和控制执行流

    • 所有算法都必须用m, r, c, p表达

存在疑问的:

    • map和reduce在哪里运行
    • mapper或reducer何时结束
    • 一个特定的mapper正在处理哪种输入
    • 一个特定的reducer正在处理哪个特定中间键值

 

 

同步工具

  • 聪明构建数据结构
    • 将部分结果联系在一起
  • 中间键的排序顺序
    • 控制reducer处理键的顺序
  • 分割器
    • 控制哪些reducer处理哪些键
  • 保持mapper和reducer的状态
    • 捕获多个键和值的依赖关系

可伸缩的Hadoop算法: 模式

  • 避免创建对象
    • 本质上昂贵的操作
    • 垃圾收集
  • 避免缓冲
    • 有限的堆大小
    • 适用于小数据集,但不可扩展!

本地的聚合的重要性

  • 理想的可扩展行:
    • 数据加倍,运行时间加倍
    • 资源加倍,运行时间减半
  • 为什么我们不能做到这一点呢?
    • 同步需要通信
    • 通信影响性能
  • 因此…避免通信!
    • 通过当地的聚合减少中间数据
    • 有效利用组合器

洗牌和排序

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值