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框架原理

在这里插入图片描述

一、InputFormat数据输入

1. 切片与MapTask并行度决定机制

1.问题:
MapTask的并行度决定Map阶段的任务处理并发度,进而影响整个job的处理速度。
但是相对于1G数据启动8个MapTask,可以提高集群的并发处理能力。1k的数据数据启动8个MapTask不一定会提高集群性能;MapTask并行任务是否越多越好?哪些因素影响了MapTask并行度?

2.MapTask并行度决定机制

数据块:block是HDFS物理上把数据进行分块(0-128MB)。数据块是HDFS存储数据单位

数据切片:数据切片只是逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储。数据切片是MapReduce程序计算输入数据的单位,一个切片会对应启动一个MapTask。
在这里插入图片描述
tips: 切片大小最好与block大小一致,即设置默认128MB,处理更加有效率。

FielInputFormat切片源码解析:
在这里插入图片描述

2. FielInputFormat切片机制

在这里插入图片描述

3. FileInputFormat切片大小的参数设置

在这里插入图片描述

4. TextInputFormat

1).FileInputFormat实现类

在运行MapReduce程序时,输入的文件格式包括:基于行的日志文件、二进制格式文件、数据库表等。那么,针对不同的数据类型,MapReduce时如何读取这些数据的呢?

FileInputFormat常见的接口实现类包括:TextInputFormat、KeyValueInputFormat、NLineInputFormat、CombineTextInputFormat和自定义InputFormat等。

2).TextInputFormat

TextInputFormat是默认的FileInputFormat实现类。按行读取每条记录。键时存储该行在整个文件中的起始字节偏移量,LongWritable类型。值是这行的内容,不包括任何行终止符(换行符和回车符),Text类型。

5. CombineTextInputFormat切片机制

框架默认的TextInputFormat切片机制是对任务按文件规划切片,不管文件多小,都会是一个单独的切片,都会交给一个MapTask,这样如果有大量小文件,就会产生大量的Maptask,处理效率极其低下。

1). 应用场景

CombineTextInputFormat用于小文件过多的场景,它可以将多个小文件从逻辑上规划到一个切片中,这样,多个小文件就可以交给一个MapTask处理。

2). 虚拟存储切片最大值设置

CombineTextInputFormat.setmaxInputSplitSize(job,4194304); // 4M
tips: 虚拟存储切片最大值设置最好根据实际的小文件大小情况来设置具体的值。

3). 切片机制

生成切片过程包括:虚拟存储过程和切片过程两部分。
在这里插入图片描述

二、MapReduce工作流程

切片数量影响Maptask,分区数量影响ReduceTask。

MapReduce详细工作流程一:
在这里插入图片描述
tips: 步骤7. 数据往内存中写到80%的时候,新开了一个线程把内存中的旧数据往磁盘的文件进行溢写,另一个线程继续把从MapTask来的数据写到内存里,因为此时还未到100%,所以新的数据可以正常写,不需要等所有的数据都溢写完后再开始。

若是往内存写数据的线程写到交界点,它会等溢写完成后再继续写,此处的等待时间会比写到100%之后溢写等待的时间短,且此时的等待是为了保证数据干净必须等待的。

步骤8. 在溢写之前对数据进行排序,通过对key的索引按照字典顺序进行快速排序。

步骤10. 对溢写之后的数据进行归并排序。

combiner在聚合操作的场景下,使得传到Reduce的数据量变小( <a,1><a,1> ==> <a,2> ),从而提高效率。

MapReduce详细工作流程二:

在这里插入图片描述

tips: 步骤13. ReduceTask主动从MapTask分区拉取数据,而不是等待MapTask传递数据给它。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:50:45  更:2021-09-09 11:51:38 
 
开发: 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 19:59:23-

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