MapReduce编程概述

    MapReduce是一个用于大规模数据集的并行处理的分布式计算的编程框架。MapReduce将一个数据处理过程拆分为Map和Reduce两部分:Map是映射,负责数据的过滤分发;Reduce是规约,负责数据的计算归并。开发人员只需通过编写map和reduce函数,不需要考虑分布式计算框架的运行机制,即可在Hadoop集群上实现分布式运算。MapReduce可以帮助开发人员将精力集中在业务逻辑的开发上,分布式计算的复杂性交由框架来处理。MapReduce把对数据集的大规模操作分发到计算节点,计算节点会周期性地返回其工作的最新状态和结果。如果结点保持沉默超过一个预设时间,主节点则将该节点标记为死亡状态,并把已分配该节点数据发送到其他结点重新计算,从而实现数据处理任务的自动调度。

    Hadoop支持多种语言进行MapReduce编程,包括Java、Ruby、Python和C++等。在Hadoop平台上运行MapReduce程序,主要人物是将HDFS存储的大文件数据分发给多个计算节点上的Map程序进行处理,然后再由计算节点上的Reduce程序合并或进一步处理多个节点上的计算机结果。步骤如下:

    (1)编写Hadoop中org.apache.hadoop.mapreduce.Mapper类的子类,并实现map方法;

    (2)编写Hadoop中org.apache.hadoop.mapreduce.Reducer类的子类,并实现reduce方法;

    (3)编写main程序,设置MapReduce程序的配置,并指定任务的Map程序类(第一步的Java类),Reduce程序类等(第二步的Java类),指定输入/输出文件及格式,提交任务等;

    (4)将(1)~(3)的类文件与Hadoop自带的包打包为jar文件,并分发到Hadoop集群的任意节点。

    (5)运行main程序,任务自动在Hadoop集群上运行;

    (6)到指定文件夹查看计算结果;

    Map程序和Reduce程序的输入/输出都是以Key-Value对的形式出现的,定义map函数的输出和reduce函数的输入的Key-Value的格式必须一致,MapReduce的调度程序完成Map和Reduce间的数据传递。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值