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

Hadoop四大组件之——MapReduce

大数据 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hadoop四大组件之——MapReduce

一、概念

MapReduce 是一个分布式运算程序的编程框架/编程模型

MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个 Hadoop 集群上。

大数据量计算
利用了hdfs做了存储,计算任务是不是要分散计算
(1)任务的分配
(2)监控
(3)容错
(4)中间结果的汇总

二、组件 1、分区组件Partitioner

自定义一个类,继承Partitioner接口,再根据自身条件进行分区,然后再主函数中进行调用。代码:

public class MyPartitioner extends Partitioner {
    @Override
    public int getPartition(Text text, LongWritable longWritable, int numPartitions) {
   //按长度分两区
        if (text.toString().length() >= 5){
            return 0;
        }else {
            return 1;
        }
   	 }
	}
2 排序组件与序列化

序列化 (Serialization) :结构化对象转化为字节流
反序列化 (Deserialization):把字节流转为结构化对象。

在进程间传递对象或持久化对象的时候,需要序列化对象成字节流, 反之当将接收到或从磁盘读取的字节流转换为对象,要进行反序列化

Java 的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额 外的信息(各种校验信息,header,继承体系等),不便于在网络中高效传输;
所以,hadoop 自己开发了一套序列化机制(Writable),更加精简高效。
Hadoop 中的序列化框架已经对基本类型和 null 提供了序列化的实现了。

Hadoop为了提高效率自定义了一套序列化框架,如果在Hadoop程序中进行序列化操作则需要使用相应的数据类型

JavaHadoop
byteByteWritable
shortShortWritable
intIntWritable
longLongWritable
floatFloatWritable
doubleDoubleWritable
StringText
nullNullWritable

另外 Writable 有一个子接口是 WritableComparable,WritableComparable 是既可实现序列化,也可以对key进行比较

思路:
1、将 Mapper 端输出的中的 key 和 value 组合成一个新的 key , value值不变,也就是新的key和value为:<(key,value),value>
2、在针对新的 key 排序的时候, 如果key相同, 就再对value进行排序

3 局部合并组件

1、
Combiner 是 MapReduce 程序中 Mapper 和 Reducer 之外的一种组件,它的作用是在 maptask 之后给 maptask 的结果进行局部汇总,以减轻 reducetask 的计算负载,减少网络传输

2、如何使用Combiner
说白了,就是再写一个Reducer,取名MyCombiner,然后在job中设置Combiner组件:job.setCombinerClass(MyCombiner.class)

4、分组

定义:分组是mapreduce中shuffle组件当中reduce端的一个功能组件,主要的作用是决定哪些数据作为一组。
和分区一样,新建个类制定规则,然后再主函数中进行调用
job.setGroupingComparatorClass(MyGroup.class);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/278313.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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