浅谈MapReduce编程模型
以Wordcount程序为例,简单描述MapReduce程序的编程模型。 MapReduce程序组成 MapReduce程序一般分成三个部分: 一个程序主引导部分; 一个Map程序部分; 一个Reduce部分。 主引导部分用来设置MapReduce(以下简称 “ MR” )程序的一些非业务逻辑属性,例如最终生成jar包时指定MR框架执行该程序的入口、MR程序的map和reduce部分是哪个(一个jar包中可能封装了多个程序)、map和reduce部分的输出参数类型、输入数据的来源(路径)和输出数据的路径等。 Map程序部分和Reduce程序部分就是业务逻辑部分,只要按照MR框架要求的格式编写。对于这两个部分,分别有map( )和reduce( )两个关键的函数,这两个函数要么是重写继承其父类Mapper和Reducer的成员函数,要么是实现其所实现接口内定义的具体函数。 map( )和reduce( )方法 Mapper类和Reducer类在继承时要分别提供4个参数,分别代表当前模块的输入、输出数据的类型。在实现map、reduce方法时会用到输入参数(key-value)的类型。而这里的类型并不是Java自身的数据类型,而是hadoop自己的一套数据标准。 在hadoop中,由于要考虑对象序列化,而Java自带的对象序列化机制添加了大量的冗余——少量数据为保证网络传输的正确