Hadoop中job提交详细过程

distcp流程分析 背景 distcp可用于跨集群或集群内目录的复制,distcp参数不同复制的结果差别较大。本文结合官网及源码,对distcp流程进行分析,并结合测试给出验证。 使用 1. shell 目标目录父目录不存在时,可以自动建立多层目标目录。 1. 文件复制 文件复制时,相当于cp,因为hdfs无法并行写。将a.txt复制并重命令为a_bak.txt $ hadoop distcp \ hdfs://c... 阅读详情

1)客户端运行hadoop jar命令的时候,通过程序中的waitForCompletion(true),进行job的提交,jobPI等等,其中主要的一个工作就是和集群建立连接,会创建一个yarnRunner(实际上是创建resMgrDelegate)代理对象,这个对提交的时候会调用job.submit(),方法进行提交,此方法中会进行一系列的工作,比如确定job的状态,设置新的A象实际上是一个通信协议的对象。由这个对象去和RM通信。

2)客户端向RM(先请求RM,RM再转向applicationsManager/ASM)申请运行一个mr程序,获取一个applicationId。

3)RM会返回给客户端一个applicationId和一个共享资源的路径,用于提交程序运行所需要的共享资源

4)客户端拿到共享资源的路径,就开始进行将相关资源写入到共享资源路径中,相关资源就包括程序运行所需要的jar包及其他文件(job.jar)、配置文件参数job.xml(统一写入这个配置文件中)、切片信息(job.split)

5)写完之后客户端通过resMgrDelegate.submitApplication(appContext)方法向RM报告文件写入完毕,带着一个appContext的上下文并提交应用程序。

6)Rm接收到请求后,将这个请求转给yarn的资源调度器schedule,调度器会初始化这个应用,并将此应用程序加入到调度队列中(默认为容量调度),因为可能同时有很多应用在执行,可能没有资源供当前的程序跑,等待分配资源

resourceManager包括两个组件:

1、调度器:负责调度任务执行的顺序,仅是调度的作用,不参与任何任务的执行

(1)FIFO先进先出调度器:先来的任务先执行,只有一个队列

(2)Capacity容量(计算能力)调度器:有多个队列,为每个队列分配不同的资源,每个队列遵循FIFO(hadoop 2中默认的调度模型)

(3)Fair公平调度器:所有任务平分共享资源

2、任务管理器applicationsManager(ASM):负责任务启动或停止或失败启动 

7)等到分配到相关资源之后就调度器会先给应用程序在一个nodemanager中分配一个容器(container),然后在容器中先启动程序的管理者,用于管理任务的运行进度和完成情况,这个管理者叫APP MASTER(主类是MRAppMaster)。

8)MRappmaster会对作业进行初始化,初始化的过程中会创建多个簿记对象(作业簿),用来跟踪作业的完成。

9)接下来MRAppMaster会启动相应的maptask,但是不知道启动几个啊,也不知道每一个对应的数据切片信息,怎么办?这时候就会去先访问共享文件系统中,获取本作业的输入切片信息。会获取到本job中有几个maptask和reducetask。此时mrappmaster会首先进行一个决策,就是如果maptask的数量小于10个,而reducetask的数量只有1个,并且输入大小小于一个块的作业,就会选用和MRAppmaster同一个JVM中运行任务,因为此时在别的节点上重新启动容器和销毁容器的开销过大不划算,这种模式就是uber模式。然后MRAppMaster会对每一个分片创建一个maptask对象。

10)如果作业不适合作为uber模式运行,此时MRAppMater就会为maptask和reducetask任务向RM申请资源,先发送maptask的请求,再发送reducetask的请求。注意maptask有数据本地化的局限。优先数据本地化,其次机架本地化最后任意节点。请求返回相应的节点信息。

11)RM向MRappMaster返回资源信息,空闲的资源节点,MRAppmaster就会去相应的nodemanager节点上启动Container

12)之后会启动一个YarnChild进程用于执行maptask程序

13)Maptask执行之前会首先去共享文件系统中下拷贝相应的文件,包括jar包、job.xml文件以及job.split分片信息等,下载到本地

14)启动相应的maptask任务

15)maptask进行到80%的时候,MRAppmaster会去启动reduceTask,启动过程同上述过程

16)资源回收和销毁


 

 

 

 

大数据之-Hadoop3.x_MapReduce_Job提交流程---大数据之hadoop3.x工作笔记0103 然后为了弄清楚,MapReduce执行过程中,会进行逻辑切片,一个文件包含多个切片,一个切片大小默认是128m,对应一个maptask 1. 我们看之前的代码,找到提交job的地方,打上debug.然后,要注意,map阶段,输出的文件夹,要是不存在的一个文件夹, 我们把原来用过的这个文件夹的名字改成output666 然后我们去调试运行, 然后我们调试进入到源码中去.Job.java中去 然后,可以看到走到源码中去,可以看到jobstate = define的时候,会执行su... 阅读详情

相关推荐

NIDS——suricata(一)

NIDS——suricata环境安装和规则编写

weixin_58666006的博客 1273

Hadoop学习——MapReduce的job机制和job链介绍

  前边写了MapReduce的介绍、以及四大组件、序列化机制和排序。   这一篇记录一下MapReduce相关的job机制,对于在代码里,我们总要有一个Driver,比如下边: public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); //获取j...

凌大大的博客 6660

CentOS7下OpenVPN Access Server 2.12.0安装与智能分流配置指南

本文详细介绍了在CentOS7系统上安装OpenVPN Access Server 2.12.0并进行智能分流配置的完整指南。从环境准备、核心安装到智能分流策略的深度配置,提供了经过验证的优化方案和故障排查技巧,帮助用户实现高效的VPN网关部署和流量管理。

weixin_30546189的博客 290

[Hadoop源码解读](三)MapReduce篇之Job类

下面,我们只涉及MapReduce 1,而不涉及YARN。 当我们在写MapReduce程序的时候,通常,在main函数里,我们会像下面这样做。建立一个Job对象,设置它的JobName,然后配置输入输出路径,设置我们的Mapper类和Reducer类,设置InputFormat和正确的输出类型等等。然后我们会使用job.waitForCompletion()提交到JobTrac

赶路人儿 1151

Win11+Ubuntu18.04+Ubuntu20.04三系统安装与卸载

以下情况均为个人情况:1.插入启动 U 盘后,登录时可以按F12(拯救者Y7000,不同电脑不同)进入BIOS,选择从启动盘启动。2.。3.5.在win基础上,安装第一个Ubuntu系统后,系统启动界面类似如下第一张图,Ubuntu不显示版本号。安装第二个Ubuntu系统后,系统启动界面如下第二张图,如果想更改启动项的名称,可自行查阅相关资料。

weixin_61686291的博客 2540

服务器安全配置:二、本地安全策略设置

密码最长使⽤期限”设置为“90天”;“⽤可以还原的加密来存储密码”设置为“禁⽤”“复位账户锁定计数器”设置为15分钟,贴图这里是我自己设置的时间,15分钟也够用,具体看自己需要。”网络访问: 不允许 SAM 帐户和共享的匿名枚举“设置为“已启用””网络访问: 限制对命名管道和共享的匿名访问“设置为“已启用””网络访问: 不允许匿名枚举 SAM 帐户“设置为“已启用”“关机: 允许系统在未登录的情况下关闭”设置为“已禁用”(1)交互式登录:不显示最后的⽤户名”设置为“已启⽤”

weixin_48825672的博客 3137

Hadoop跨集群数据拷贝工具DISTCP内部源码实现分析

概述 DISTCP(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具,是Hadoop用户常用的命令之一。它使用Map/Reduce实现大量文件拷贝分发,错误处理和恢复,以及报告生成。它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝。由于使用了Map/Reduce方法,这个工具在语义和执行上都会有特殊的地方。 DISTCP的源码可以在Hadoo

github_zwl的博客 3237

假新闻检测论文分享(30)MMDFND: Multi-modal Multi-Domain Fake News Detection

现有的假新闻检测方法通常集中在单一领域的新闻上,如健康或政治。然而,社交媒体上的新闻往往来自多个领域,这给单一领域的假新闻检测方法带来了两个主要挑战:数据稀缺性:处理较小、单一领域的新闻数据集时,由于训练数据的稀缺,模型的有效性显著下降。跨领域检测的准确性下降:单一领域的假新闻检测方法在跨领域新闻数据集上的准确性大幅降低。缓解领域间模态语义偏差:通过DPLE网络提取跨领域和领域特定的知识,缓解了不同领域间文本和图像的语义差异。

weixin_41964296的博客 671

Hadoop中Job提交过程

虽然写过多次的MR程序,但是未能很好的理解整个Hadoop中的Job的任务提交过程,查看了下源码,整理了下其job的提交过程,大致为:客户端向资源管理yarn申请资源,yarn分配好相应的资源,进行作业的运行,当作业运行完成时,yarn回收资源。具体如下: 1、客户端Client提交job,会执行代码中的job.awitforcompletion(),在客户端创建了一个RunJar的进程,

FzuGsr的专栏 3641

Python 爬虫实战:Boss直聘 Python 岗位招聘数据爬取

本文介绍了一个Python爬虫项目,用于抓取Boss直聘平台的Python岗位招聘数据并进行可视化分析。项目采用requests库发送POST请求,通过抓包分析获取JSON接口,绕过HTML解析直接获取结构化数据。主要内容包括: 接口分析:找到关键POST接口,解析请求头和JSON参数格式 环境准备:安装requests/pandas/matplotlib/pyecharts等依赖库 核心实现: 手动获取登录Cookie 构建请求头和城市代码映射 实现分页抓取职位列表数据 项目特色在于直接解析JSON接口而

u014481728的博客 298

行为预测模型:Social LSTM与Graph Neural Networks

行为预测模型:Social LSTM与Graph Neural Networks ,人工智能,计算机视觉,大模型,AI,本文围绕行为预测模型Social LSTM与Graph Neural Networks展开,介绍了两者的基础概念、原理、应用场景,还对比了它们在优势、劣势和适用场景上的不同,最后给出了相应的代码示例。Social LSTM基于LSTM,通过社交池化层处理多智能体交互;图神经网络处理图结构数据,靠消息传递获取信息,二者各有侧重,适用于不同场景。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 15万+

Hadoop框架MapReduce客户端Job提交过程

Hadoop MapReduce 客户端提交Job的过程 MapReduce WordCount的示例代码 package MapReduceLearn.MapReduceLearn.Art; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configura...

DANTE54的博客 453

18、地下矿山中人工智能在区分真实微震事件与噪声信号的应用

本文提出一种基于遗传编程(GP)的新型经验模型,用于地下矿山中真实微震事件与噪声信号(特别是爆破信号)的自动区分。针对传统方法和常见机器学习算法存在的黑箱问题、过拟合及准确性不足等局限,GP模型通过符号回归和进化机制生成可解释的数学表达式,具备自动特征选择能力,有效提升了分类准确率。研究使用包含100个样本的真实数据库,结合敏感性分析优化模型参数,并与线性判别分析(LDA)进行对比,结果表明GP模型在分类性能上更具优势。该模型可应用于实时微震监测系统,提高矿山安全生产水平,降低误判带来的成本开销,具有良好的

assembly8low的博客 95

Hadoop 源码分析——Job提交过程

1.在客户端,我们进行Job相关属性设定后,最后使用job.waitForCompletion(true);提交任务到集群中,并等待集群作业完成 public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { ...

H20838883的博客 202

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Hadoop源码一起看——job提交过程

最近在学Hadoop写了一个类似wordcount的mapreduce程序,看一下job中提交的过程。程序有四个类,map类、reduce类、自定义封装数据的bean类,除了bean类其他基本和wordcount结构差不多。 话不多说先把代码沾上 自定义bean类: import java.io.DataInput; import java.io.DataOutput; import ja...

qq_37354905的博客 289

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

一个hadoop的job提交过程

1、定义了一个Job对象,完成了一系列set操作,比如设置输入路径和格式 2、调用job的waitForCompletion(boolean verbose)方法,接下来调用submit方法(如果verbose为真则打印作业信息) 3、submit方法中,先通过connect方法得到一个Jobclient对象,并调用该对象的submitJobInternal(conf)方法(conf为当前的配

124

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【hadoop】job提交全过程

一、作业提交过程之 YARN (1)作业提交 第0步:client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第1步:client向RM申请一个作业id。 第2步:RM给client返回该job资源的提交路径和作业id。 第3步:client提交jar包、切片信息和配置文件到指定...

rentian1的博客 234

hadoop job提交完成的整个过程介绍 zz

2009-11-17 11:16http://blog.chinaunix.net/u3/94300/showart_1902760.html 由于大量的使用interface,reflection,rpc proxy,所以当我们提交job给hadoop的时候,他到底是如何一步步运行的确实不太容易看明白,今天费了将近一天的功夫终于将其大概整理了出俩,为以后继续深入仔细阅读源码打下基础。 ...

sealbird的专栏 224

Hadoop源码分析(三)--------------job提交过程分析(3)之job的split过程

现在让我们看一下job.split文件是怎么生成的,先看writeSplits()函数的源码: int maps =writeSplits(job, submitJobDir); private int writeSplits(org.apache.hadoop.mapreduce.JobContext job, Path jobSubmitDir) throwsIOE

小玉歌 1017

学习笔记 Hadoop的job提交过程,shuffle过程以及HA机制的实现

一,在hadoop中的mapreduce的job提交过程比较繁琐,但掌握job的提交过程是我们进入深入学习的必要。   二,mapreduce的shuffle机制 三,Hadoop的HA机制。

周君的个人博客 563

大数据面试(五)_hadoop中job提交全过程

一、作业提交过程之 YARN (1)作业提交 第0步:client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第1步:client向RM申请一个作业id。 第2步:RM给client返回该job资源的提交路径和作业id。 第3步:client提交jar包、切片信息和配置文件到指定...

从2026-09-21开始专注于AI,以前是后端研发、大数据研发等 606

Hadoop源码分析(二)----------job提交过程分析(2)

前面我们所分析的部分其实只是Hadoop作业提交的前奏曲,真正的作业提交代码是在MR程序的main里,RunJar在最后会动态调用这个main,在之前有说明。我们下面要做的就是要比RunJar更进一步,让作业提交能在编码时就可实现,就像HadoopEclipse Plugin那样可以对包含Mapper和Reducer的MR类直接Run on Hadoop。   一般来说,每个MR程序都会

小玉歌 580

详解hadoop1.0 MapReduce job 提交过程

从整个Job运行的流程来看,如下图所示: 从上图可以看到,MapReduce运行过程中涉及有4个独立的实体: Client,用于提交MapReduce job。JobTracker,负责协调job的运行。TaskTrackers,运行 job分解后的多个tasks,task主要是负责运行Mapper和Reducer。Distributed filesystem,用于存储上述实体

hadoop熊的专栏 769

Hadoop源码分析23:MapReduce的Job提交过程

命令为: hadoop_debug jar /opt/hadoop-1.0.0/hadoop-examples-1.0.0.jar wordcount /user/admin/in/yellow.txt /user/admin/out/555 首先调用org.apache.hadoop.util.runJar.main public static void main(String[] args)

荒岛码农 995

Hadoop 2.8.5的job提交过程源码解析

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33941350的博客 211
上一篇: centos7中MySQL数据库的安装
下一篇: Hadoop中shuffle详细过程
Joy_cj
博客等级 码龄9年 13粉丝 30原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值