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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MapReduce的启动流程,源码阅读 -> 正文阅读

[大数据]MapReduce的启动流程,源码阅读

目录

1. 追踪WordCount例子代码

2. 追踪Job.submit()方法

3.追踪Job.?submitJobInternal()

? 3.1- 追踪 检查输出规格 checkSpecs(job);? 检查输出路径是否设置,是否已经存在

?3.2- 追踪计算切片数量的方法 JobSubmit.writeSplits()

?3.3- 追踪构建 存放 jar和conf的目录?????

3.4- 如果有认证的,需要的一些操作逻辑,先拷贝

?3.5- 真正的提交

3.5.1-yarnRunner?ctrl + h , 找到yarn的实现方法
?

Hadoop的版本是2.9.2

首选是需要找到入口,可以自己写个WordCount的例子,然后再idea打点Debug。但源码有提供WordCount例子,直接按照他的例子调试查看启动的流程。最后会附上流程图

找到例子

hadoop-mapreduce-client -> examples-> src -> wordCount

1. 追踪WordCount例子代码


看代码前面的都是设置配置项值(JarPath,MapperClass等),关键方法是Job.WaitForCompletion,ctrl + 左键追踪。发现整个方法是,提交(submit),监控并打印(monitorAndPrintJob),返回执行结果。
78f4d09686c99dc1c477216f0b6e1379.png

2. 追踪Job.submit()方法

通过代理生成具体的JobSubmit类对象,根据传入的client端对象(localRunner和YarnRunner)生成。后续以 yarn为例。点入方法 getJobSubmitter()。 有生成的对象继续提交job, submitJobInternal()

?

3.追踪Job.?submitJobInternal()
?

这个方法主要有四个逻辑步骤

1- 检查输出的规格是否符合设置

2- 计算这个job的切片数量

3- 如果有认证,需要上传token等

4- 将job的jar包和conf复制到分布式文件系统的目录中

?? ??????? 3.1- 追踪 检查输出规格 checkSpecs(job);? 检查输出路径是否设置,是否已经存在

检查是否有reduce任务

若没有,则是只有mapper任务,输出默认是FileSystem,调用检查路径的方法。

若有reducer任务,则通过反射取到用户设置的outPutFormat对象,并调用检查路径的方法。

?

?3.2- 追踪计算切片数量的方法 JobSubmit.writeSplits()


?不同的输入格式有不同的计算实现方法,我们这里是FileInputFormat

?

?发现具体的计算逻辑还是在 computeSplitSize()方法中

?追踪computeSplitSize()方法

?再回去看 minSize,maxSize,blockSize的值是什么

minSize是,没有设置块的最小字节数,则默认是1 。若设置了比1大的值,则取设置值

?maxSize? 没有设置每个块的最大字节数则取Long的值,设置了则取设置值

切片方法中还包含了 分片的存放元数据(存放在哪些机器节点上,是否存在内存中)

6d04915276b509a9ae90ef7a1f94c752.png?8d91741071cb99a47c4bbd52d4721121.png

?3.3- 追踪构建 存放 jar和conf的目录







?上传conf和jar

3.4- 如果有认证的,需要的一些操作逻辑,先拷贝

3.5- 真正的提交

?也是反射,根据不同的客户端对象提交到不通的Runner,

d751f7227ab3e70192fa450803947aba.png

3.5.1-yarnRunner?
ctrl + h , 找到yarn的实现方法

6792f4a017ddc0387fd4f3d63a42da7b.png

?

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

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