Hadoop0.21.0源码流程分析(3)-Task节点管理启动任务

Hadoop源码分析-综述 2021SC@SDUSC 阅读详情

源码流程分析3-Task节点管理启动任务

 

1.     代码执行流程

1)       TaskTracker的启动的时候会加载所有信息,包括利用RPC获得JobTracker 的RPC变量定义为jobClient;TaskTracker.run()方法会去循环向JobTracker心跳,在里面主要调用TaskTracker.offerService()方法;

2)       offerService()方法首先调用JobTracker.transmitHeartBeat()方法,去执行jobClient.heartbeat()(也就是JobTracker.heartbeat()),返回心跳信息HeartbeatResponse类,该类包含了主节点分配给该任务节点需要执行的map和reduce任务。每个maptask或reducetask对应一个独自的LaunchTaskAction类实例。

3)       然后,offerService()方法再调用TaskTracker的addToTaskQueue ()方法,循环将LaunchTaskAction中的maptask或reducetask添加到map与reduce维护列表中mapLauncher和reduceLauncher中,这两个对象都是TaskLauncher的实例。

4)       addToTaskQueue ()方法在调用的时候会调用到TaskLauncher. addToTaskQueue(),该方法体内会调用TaskTracker.registerTask();该方法会根据每个taskaction(LaunchTaskAction对象)生成一个TaskInProgress的实例,TaskInProgress与DN中的TaskInProgress不同,这里的TaskInProgress是TaskTracker的内部类,它是每个任务运行的主体。

5)       TaskLauncher类中的run()方法会循环查找任务去执行。一旦有空闲的slot,就调用TaskTracker.startNewTask()方法开启一个新的任务。startNewTask()方法中首先会去执行关键方法TaskTracker.localizeJob(TaskInProgress)初始化所需要的信息,创建工作目录和调用hdfs下载执行的jar包和配置信息xml。完成向监控队列的添加后,startNewTask()方法会去调用launchTaskForJob(),然后launchTaskForJob()调用TaskTracker$TaskInProgress.launchTask()开始执行Task。

6)       launchTask()方法中,首先通过localizeTask方法根据当前的任务创建工作目录,并把所需要的数据信息下载到本地。然后,如果是Map任务的话就是MapTask.createRunner()方法会去创建MapTaskRunner,如果是Reduce的话就是ReduceTask.createRunner()方法去创建ReduceTaskRunner。最后开启TaskRunner线程。

7)       TaskRunner是继承Thread的类,在它的run函数主体执行的过程比较复杂,首先是初始化启动java子进程的一系列环境变量,包括设定工作目录workDir,设置CLASSPATH环境变量等(需要将TaskTracker的环境变量以及job  jar的路径合并起来),然后装载job jar包。然后,调用launchJvmAndWait()方法,该方法再调用jvmManager.launchJvm()方法。

8)       launchJvm()是执行的主体,函数体内会判断是map任务还是reduce任务,并把它加载到管理队列里面。从JvmManager中我们看到runChild()方法的调用,方法中会去调用DefaultTaskController中的launchTaskJVM()方法,DefaultTaskController.launchTaskJVM()会根据已经获取的环境变量和jvm运行堆大小设定等参数,利用ProcessBuilder自动生成shell脚本,并运行来设定task节点的变量信息。

9)       在装载过的信息中有个类是Child,它自动去调用TaskTracker.getTask()方法去取出当前的task任务,然后调用task的run()方法,在这里同样会用到hdfs从中取出输入数据,然后根据判断是旧api还是新api去执行对应的方法。具体在下一节解释。

 

2.            TaskTracker

       Task的执行实际是由TaskTracker发起的,TaskTracker会定期(缺省为3秒钟,参见MRConstants类中定义的HEARTBEAT_INTERVAL变量)与JobTracker进行一次通信,报告自己Task的执行状态,接收JobTracker的指令等,TaskTracker里面会通过循环的方式查找。

 

3.     JobTracker.heartbeat()

这个方法主要是TaskTracker端远程调用时用到的方法,其主要作用就是分派具体任务,并将该任务分发到TaskTracker端:

其关键代码为:

1 HeartbeatResponse response = new HeartbeatResponse(newResponseId,null);

2 List<TaskTrackerAction> actions = newArrayList<TaskTrackerAction>();

……

3 if (tasks == null) {

4     tasks =taskScheduler.assignTasks(taskTrackers.get(trackerName));

5 }

6 if (tasks != null) {

7     for (Task task : tasks) {

8            expireLaunchingTasks.addNewTask(task.getTaskID());

           ……             

9            actions.add(newLaunchTaskAction(task));

10   }

11}

这里的调度中主要会根据我们的任务的输入文件dfs中的文件存放节点来分配,数据在哪个节点上任务就分配到哪个节点上的TaskTracker中。

       简单来说这里会根据我们的上面提到的JobInProgress和TaskInPorgress调度生成具体的MapTask和ReuceTask实例,他们均继承自抽象类Task该实例会放入到LaunchTaskAction中,最后获得的任务列表会被返回到TaskTracker端。

 

4.     TaskTracker$TaskLauncher

TaskLauncher是个继承了Thread线程的TaskTracker的内部类,在这里面会维护一个TaskInProgress的链表:

private List<TaskInProgress> tasksToLaunch;

该列表中的每个TaskInProgress 实例对应一个TaskUnit任务。

该类中的run方法才是主体关键之处,他会循环判断是否tasksToLaunch中有新任务要做,有就去从该列表中拿出来然后去调用TaskTracker.startNewTask(TaskInprogress);去开启一个新任务。

 

 

 

Hadoop_YARN资源管理系统源码解析 目录 一、YARN产生的背景(MRv1的局限性) 二、YARN源代码结构 三、YARN基本架构 四、YARN各模块详细分析 五、MRAppMaster-MapReduce On YARN实现 六、YarnChild-MR引擎启动入口 七、总结   一、YARN产生的背景(MRv1的局限性) YARN 是在 MRv1 基础上演化而来的,它克服了 MRv1 中的各种局限性。在正式介... 阅读详情

相关推荐

Spark 3.0 内核源码深入解读

Spark支持堆内内存也支持堆外内存。1)堆内内存:程序在运行时动态地申请某个大小的内存空间。2)堆外内存:直接向操作系统进行申请的内存,不受JVM控制。

悦分享 785

Hadoop集群搭建过程中DataNode与TaskTracker节点的问题

在Hadoop集群搭建的过程中,我们总会发现在slaves文件中的主机名既是DataNode也是TaskTracker,这是为什么呢? 今天在黄宜华《深入理解大数据》一书中找到了答案:96页 原因: 为了实现Hadoop系统设计中 本地化计算 的原则,数据存储节点DataNode与计算节点TaskTracker将合并设置,让每个从节点同时运行作为DataNode和TaskTrack

什么最重要?算法!! 2036

Hadoop 2.2.0 64位源码编译与安装实战

htmltable {th, td {th {pre {简介:Hadoop是大数据处理领域的核心开源框架,Hadoop 2.2.0版本在性能和稳定性方面具有重要意义。为确保其在64位Linux系统上的兼容性与高效运行,需从源代码进行编译以生成适配的64位版本。本文详细介绍从环境准备、源码编译、安装配置到集群服务启动的完整流程,涵盖Java环境设置、Maven构建、核心配置文件修改及HDFS与YARN的部署验证,帮助开发者掌握Hadoop本地化构建的关键技术环节。

weixin_42186015的博客 531

hadoop task的执行

一旦resource manager’s scheduler给一个任务分配了资源,application master就会启动这个task所在的container。task就是一个类名为YarnChild的java程序。在task运行之前,task运行所需的配置文件,jar文件等都会被复制到task所在的节点。最后,执行map task或者reduce task。因为YarnChild运行在一个专有

www.hohode.com 869

SAP PS模块预算控制实战:为什么你的采购订单金额和预算占用对不上?

本文深入解析SAP PS模块中采购订单金额与预算占用偏差的常见问题,揭示承诺成本与实际成本的分流处理机制。通过实战案例和六步定位法,提供发票拆分、跨年度预算等典型场景的解决方案,并分享预防性配置框架和最佳实践,帮助企业有效控制预算偏差。

weixin_30363981的博客 515

整合WGCNA、机器学习和孟德尔随机化

(G)通过蛋白质免疫印迹法(Western blot)测定的 UT-B(由 SLC14A1 编码)、ARHGEF38、NEFH、MSMB、KRT23 和 KRT15 在前列腺癌肿瘤组织和癌旁非癌组织中的蛋白质表达水平。本研究利用来自基因表达综合数据库(GEO)的数据集筛选差异表达基因(DEGs),并采用加权基因共表达网络分析(WGCNA),以识别在模块中与前列腺癌高度相关的驱动基因。(F)蓝绿色模块中的模块成员关系(MM)与前列腺癌(PCa)的基因显著性(GS)的散点图。(D)6 个基因之间的相关性分析。

多组・学・多组学 1137

Hadoop1中Task运行过程

当我们编写一个Mapreduce的作业时候,只需要实现map()和reduce()两个函数就可以。 其中map阶段大概可以划分 read 、map、collect、spill和combine五个阶段 。reduce阶段可以划分shuffle、merge、sort、reduce和write五个阶段。 一个应用程序被划分成map和reduce两个计算阶段,它们分别有一个或者多个map task或者re

Xlucas的博客 2874

Windows 10 下 DockerToolbox 安装全攻略:从下载到配置阿里云镜像加速

本文详细介绍了在Windows 10系统上安装和配置DockerToolbox的完整流程。从下载安装包、执行初步安装,到关键步骤——修改虚拟机存储路径以及配置阿里云镜像加速器,旨在帮助开发者,尤其是初次接触Docker的新手,快速搭建高效的本地容器开发环境,并解决国内镜像下载缓慢的痛点。

moon9的博客 476

hadoop中各个节点的功能及HDFS文件上传流程图

Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元(块),并把这些单元放到任何集群节点上执行。在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出得、运行于各个计算节点的工作单元称为“任务(task)”。此外,Hadoop提供的分布式文件系统(HDFS)主要负责各个节点的数据存储,并实现了高吞吐率的数据读写。   在分布式存储和分布式计算方面,Hadoo...

建建的博客 2298

英特尔® NUC迷你电脑实现无人值守自动开机配置指南

本文详细介绍了如何配置英特尔® NUC迷你电脑实现无人值守自动开机功能。从BIOS设置到操作系统级配置,涵盖硬件兼容性确认、电源恢复功能设置及常见问题解决,帮助用户轻松实现设备断电后自动恢复运行,适用于家庭服务器、企业终端等多种场景。

weixin_42638178的博客 472

从零构建:如何在VSCode中为HBuilderX迁移的UniApp项目搭建TypeScript支持环境

本文详细指导如何将HBuilderX中的UniApp项目迁移至VSCode并搭建TypeScript支持环境。通过pnpm包管理器初始化项目、配置tsconfig.json和vite.config.ts文件,实现工程化迁移与TypeScript深度集成,提升开发效率和代码质量。

book8的博客 1050

Hadoop之YARN及运行流程

YARN是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。 YARN通用资源管理框架组成部分: 1,ResourceManager(RM):由Scheduler(资源调度器)和ApplicationsManager(ASM:应用管理器)2个组件组成。RM和每个NodeManager (NM)构成一个资源估算框架,管...

qianshanding0708的博客 5600

交换机基本介绍(分类、性能指标、硬件构成及工作方式)

一、交换机的分类与性能指标 1.1交换机的分类 按照网络构成方式来分的话,交换机分为三类:接入层交换机、汇聚层交换机和核心层交换机。 按照OSI模型来划分的话,分为:二层交换机、三层交换机和四层交换机 还有一种按照硬件形态来划分,可以分成两类:盒式交换机和机框式交换机。 盒式交换机是一种有固定端口数,有时也会带有少量扩展槽的交换机。机架式交换机是一种插槽式的交换机,这种交换机扩展性较好,可支持不同的网络类型,可支持更大端口密度的网络。一般在数据中心的接入层都会采用盒式交换机,盒式...

monologuezjp的博客 4万+

Hadoop0.21.0源码流程分析(2)-主节点接收作业

JobTracker功能概述      JobTracker负责调度job的每一个子任务task运行于slave上,并监控它们,如果发现有失败的task就重新运行它。JobTracker一直在等待JobClient通过RPC提交作业,而TaskTracker一直通过RPC

学术技术交流,分享生活感悟 1678

易语言游戏Call调用避坑指南:主线程绑定与反检测实战

本文详细解析了易语言游戏Call调用中的主线程绑定与反检测技术,帮助开发者避免游戏崩溃和断线问题。通过分析线程检测原理、提供易语言实现方案及高级反检测技巧,如动态线程绑定和上下文伪装,确保Call调用的稳定性和安全性。文章还包含常见问题排查和性能优化建议,适用于游戏辅助开发领域。

weixin_29323365的博客 459

告别手动复制粘贴!用R语言脚本批量抓取TCMSP中药靶点基因(附完整代码)

本文介绍如何使用R语言脚本自动化抓取TCMSP数据库中的中药靶点基因数据,告别手动复制粘贴的低效操作。通过详细的代码示例和参数设置,帮助研究人员快速获取并过滤符合药代动力学标准的中药成分及其靶点基因,大幅提升研究效率。特别适合生物信息学和中药现代化研究领域的从业者。

weixin_26950847的博客 264

Hadoop2.2.0伪分布式之MapReduce简介

Hadoop中的MapReduce简述

雨钓的专栏 9315

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Flink内核源码(一)任务提交流程

Flink内核源码学习,对于Yarn-per-job模式的任务提交过程,通过源码深入了解执行过程。

小朱小朱绝不认输的博客 2860

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Spark中Task数量的分析

本文主要说一下Spark中Task相关概念、RDD计算时Task的数量、Spark Streaming计算时Task的数量。 Task作为Spark作业执行的最小单位,Task的数量及运行快慢间接决定了作业运行的快慢。 开始 先说明一下Spark作业的几个核心概念: Job(作业):Spark根据行动操作触发提交作业,以行动操作将我们的代码切分为多个Job。 Stage(调度阶段):每个Jo...

upupfeng的博客 9579

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Hadoop2源码分析-MapReduce篇

1.概述   前面我们已经对Hadoop有了一个初步认识,接下来我们开始学习Hadoop的一些核心的功能,其中包含mapreduce,fs,hdfs,ipc,io,yarn,今天为大家分享的是mapreduce部分,其内容目录如下所示: MapReduce V1MapReduce V2MR V1和MR V2的区别MR V2的重构思路   本篇文章的源码是基于hadoop-2.6.

一只刚刚上路的猿 717

hadoop源码解析-Yarn源码解析

hadoop源码解析-Yarn源码解析0.mr程序提交到客户端所在的节点 1.由YarnRunner运行。 2.申请一个Applicaction,交给ResourceManager: 3.提交job运行所需资源 4.资源提交完毕, 申请运行mrAppMaster 5.将用户的请求初始化成一个Task,然后领取到Task任务。 对于NodeManager来说,进行2个操作,创建容器container,下载job资源到本地。 9.申请运行MapTask容器,由NodeManager创建容器, 10.NodeMa

专注Java(全栈)应用开发,求知若渴,虚心若愚,talk is cheap, show me the code. 470

hadoop job 数量_hadoop之Mapper/reducer源码分析之二

若当前JobClient (0.22 hadoop) 运行在YARN.则job提交任务运行在YARNRunner Hadoop Yarn 框架原理及运作机制主要步骤作业提交作业初始化资源申请与任务分配任务执行具体步骤 在运行作业之前,Resource Manager和Node Manager都已经启动,所以在上图中,Resource Manager进程和Node Manager进程不需要启动1. ...

weixin_36118025的博客 103

Hadoop-0.20.203.0rcl公平调度器(FairScheduler)源代码解析

在Hadoop中,调度器是一个可插拔的模块,用户可以根据自己的实际应用要求设计调度器。在Hadoop中常见的调度器有三种:默认的FIFO调度器(FIFO Scheduler),计算能力调度器(Capacity Scheduler),公平调度器(Fair Schedule)。相关信息可以参考文章《Hadoop调度器总结》。 本文我们主要分析hadoop-0.20.203.0rcl中的公平调度器

Joe.Lee | RS | ML | DM ...... 2767

[Hadoop] - TaskTracker源码分析

  在Hadoop1.x版本中,MapReduce采用master/salve架构,TaskTracker就是这个架构中的slave部分。TaskTracker以服务组件的形式存在,负责任务的执行和任务状态的汇报。TaskTracker是hadoop集群中运行在各个节点上的服务。扮演着“通信交通”的角色,是JobTracker和Task之间的“沟通桥梁”,一方面,TaskTracker发送心跳信息...

weixin_30905981的博客 226
上一篇: 分享8年开发经验,浅谈个人发展经历,明确自己发展方向
下一篇: Hadoop源码流程分析4-Task节点执行任务
xiejava
博客等级 码龄19年 26粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值