Hadoop实践(三)---MapReduce框架编程笔记

原创 2016年08月28日 15:57:19

MapReduce框架通过把计算逻辑转移到数据所在的机器,而不是把数据转移到其能够处理的机器上,从而充利用本地性优势。

  • Combiner函数
    进行键值对的聚合操作时,会产生大量I/O和网络流量I/O,为了压缩map和reduce步骤间需要的网络带宽,程序员可以选择在map一侧进行预聚合,而预聚合通过提供的Combiner函数完成。Combiner函数和reduce函数类似,不同之处在于,前者并不传递给定键的所有值,而是把传递进来的输入值之和作为输出值传递出去。

  • 其他的MapReduce开源实现
    Sphere Starfish Riak等 这些开源项目实现了Google文档描述的特性或者其中的部分特性。

    【Hadoop MapReduce 作业的 I/O性能严重依赖HDFS】
    

map任务包含2个子任务(map和merge),reduce任务只包含1个子任务。shuffle和sort首先发生,由系统完成。每个子任务可以拆分为多个子阶段,如:read-map、spill、mege、copy-map和reduce-write。

  • 影响MapReduce性能的因素
    1.硬件(或资源)因素,如CPU时钟,磁盘I/O,网络带宽和内存大小。
    2.底层存储系统。
    3.输入数据、分拣(shuffle)数据以及输出数据的大小,这与作业的运行时间密切相关。
    4.作业算法(或者程序),如map、reduce、partition、combine和compress。有些算法很难再MapReduce中概念化,或者在MapReduce中效率可能会降低。

  • 其他可能对MapReduce性能构成潜在影响的因素

    1. I/O模式:也就是从存储系统获取数据的方式。从底层存储系统去读数据有2中模式:
      1.1直接I/O:通过硬件控制器把数据直接从本地硬盘中读取到内存中,不需要进程间通信成本。
      1.2流式I/O:通过特定进程间通行手段,如TCP/IP和JDBC,从其他正在运行进程(典型情况是存储系统进程)读取数据。
    2. 输入数据解析:是指从存储系统获取数据时,从原始数据到键值对的转换过程。
    3. 输入数据存储:当MapReduce获取数据并进行下一步处理时,所在的存储系统必须保证高速访问和数据可用性(如HDFS和HBase)。
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Quartz Cron 表达式(时间格式的写法)

Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别。区别之一就是 Quartz 的格式向下支持到秒级别的计划,而 UNIX cron 计划仅支持至分钟级。...

Hadoop2.0全分布式集群架构

Hadoop 2.0 集群搭建

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Hadoop实践(四)---Hadoop集群运维

Hadoop集群简单运维指南

Hadoop实践(三)---Hadoop数据类型

《Hadoop MapReduce实战手册》学习笔记

YARN与MRv1对比

YARN的改进

Hadoop实践(四)---在HDFS中合并文件

HDFS进阶

Hadoop实践---导航

Hadoop实践 目录导航

Hadoop使用技巧

如果Hadoop出现问题,找到Hadoop提供的网址查看进度。然后看被kill掉的程序中的: 找里面的error log,看看问题出在哪里? 使用Hadoop写脚本的时候最好写...

Hadoop实践(三)---MapReduce编程 小技巧

总结一些MapReduce编程中的小技巧
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)