栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

MapReduce核心思想、编程规范及bean序列化

MapReduce核心思想、编程规范及bean序列化

1. MapReduce 核心思想

    分布式的运算程序往往需要分成至少 2 个阶段第一个阶段的 MapTask 并发实例,完全并行运行,互不相干第二个阶段的 ReduceTask 并发实例互不相干,但是他们的数据依赖于上一个阶段的所有 MapTask 并发实例的输出MapReduce 编程模型只能包含一个 Map 阶段和一个 Reduce 阶段,如果用户的业务逻辑非常复杂,那就只能多个 MapReduce 程序,串行运行。
2. MapReduce 进程

一个完整的 MapReduce 程序在分布式运行时有三类实例进程:

    MrAppMaster :负责整个程序的过程调度及状态协调MapTask :负责 Map 阶段的整个数据处理流程ReduceTask :负责 Reduce 阶段的整个数据处理流程
3. MapReduce 编程规范

用户编写的程序分为三个部分:Mapper、Reducer 和 Driver。

    Mapper阶段

     	用户自定义的Mapper要继承自己的父类
     	Mapper的输入数据是KV对的形式(KV的类型可自定义)
     	Mapper中的业务逻辑写在map()方法中
     	Mapper的输出数据是KV对的形式(KV的类型可自定义)
     	map()方法(MapTask进程)对每一个调用一次
    

    Ruducer 阶段

     	用户自定义的Reducer要继承自己的父类
     	Reducer的输入数据类型对应Mapper的输出数据类型,也是KV
     	Reducer的业务逻辑写在reduce()方法中
     	ReduceTask进程对每一组相同k的组调用一次reduce()方法
    

    Driver 阶段

       相当于YARN集群的客户端,用于提交我们整个程序到YARN集群
       提交的是封装了MapReduce程序相关运行参数的job对象
    
4. Hadoop序列化 4.1 概述

序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。
反序列化就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换

4.2 自定义 bean 对象实现序列化接口(Writable)

具体实现 bean 对象序列化步骤如下 7 步:

    必须实现 Writable 接口反序列化时,需要反射调用空参构造函数,所以必须有空参构造重写序列化方法 write重写反序列化方法 readFields注意反序列化的顺序和序列化的顺序完全一致要想把结果显示在文件中,需要重写 toString(),可用"t"分开,方便后续用如果需要将自定义的 bean 放在 key 中传输,则还需要实现 Comparable 接口,因为 MapReduce 框中的 Shuffle 过程要求对 key 必须能排序
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/742722.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号