zoukankan      html  css  js  c++  java
  • MapReducer

    MapReducer
        概述
            是一个分布式的计算框架(编程模型),最初由由谷歌的工程师开发,基于GFS的分布式计算框架。后来Cutting根据《Google Mapreduce》,设计了基于HDFS的Mapreduce分布式计算框架。
            MR框架对于程序员的最大意义在于,不需要掌握分布式计算编程,不需要考虑分布式编程里可能存在的种种难题,比如任务调度和分配、文件逻辑切块、位置追溯、工作。这样,程序员能够把大部分精力放在核心业务层面上,大大简化了分布式程序的开发和调试周期。
        结构
            JobTracker / ResourceManager: 任务调度者,管理多个TaskTracker。ResourceManager是hadoop2.0版本之后引入了yarn,有yarn来管理hadoop之后,jobtracker就被替换成了ResourceManager
            TaskTracker / NodeManager:任务执行者
        Mapper组件
            1.Mapper组件开发方式:写一个类,继承Mapper
            2.Mapper组件的作用是定义 每一个MapTask具体要怎么处理数据。比如一个文件,257MB,会生成3个MapTask。即三个MapTask处理逻辑是一样的只是每个MapTask处理的数据不一样。
        Reduce
            1.reduce组件用于接收mapper组件的输出
            2.redudce第一个泛型类型是reduce的输入key,需要和mapper的输出key类型一致
            3.第二个泛型类型是reduce的输入value,需要和mapper的输出value类型一致
            4.第三个泛型类型是reduce的输出key类型,根据具体业务决定
            5.第四个泛型类型是reduce的输出value类型,根据具体业务决定
            6.reduce收到map的输出,会按相同的key做聚合,形成:key Iterable 形式然后通过reduce方法传给程序员。
            7.reduce方法中的Iterable是一次性的,即遍历一次之后,再遍历,里面就没有数据了。所以,在某些业务场景,会涉及到多次操作此迭代器,处理的方法是:①先创建一个List  ②把Iterable装到List ③多次去使用List即可

    序列化机制
        由于集群工作过程中,需要用到RPC操作,所以MR处理的对象必须可以进行序列化/反序列操作。Hadoop利用的是avro实现的序列化和反序列,并且在其基础上提供了便捷的API
    要序列化的对象必要实现相关的接口:
    Writable接口--WritableComparable

  • 相关阅读:
    iPad 3g版完美实现打电话功能(phoneitipad破解)
    vb.NET基础总结
    PMP考试的过与只是
    Oracle基础学习5-- Oracle权限之”角色”
    linux内存操作----kernel 3.5.X copy_from_user()和copy_to_user()
    猜数字游戏
    pthread_t definition
    POJ 2057 The Lost House
    简单截图功能实现
    java实现罗马数字转十进制
  • 原文地址:https://www.cnblogs.com/Striverchen/p/10557827.html
Copyright © 2011-2022 走看看