IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop四大组件之——MapReduce -> 正文阅读

[大数据]Hadoop四大组件之——MapReduce

一、概念

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

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

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

二、组件

1、分区组件Partitioner

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

public class MyPartitioner extends Partitioner<Text, LongWritable> {
    @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为:<(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);

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-30 11:59:57  更:2021-09-30 12:00:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:31:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码