`

hadoop 源码分析(一) jobClient 提交到JobTracker

阅读更多

  

   Hadoop 用了2年多了.从最初一起创业的11人20台服务器集群到后来独立搭建基于hadoop nutch的搜索引擎并商用化 到现在也2年了.这两年来应用了很多新技术也经历了很多,从数据仓库的Hive pig 到mapreduce的编码去解决算法或是etl的问题 等等都离不开hadoop.觉得用了2年多也到了该总结的时候了.故此想重新翻译hadoop 源码,按照不同的类方法的不同作用.也希望读到这篇博客的人和我一起 经历这一段岁月,一起讲hadoop的核心结合实用主义 传递给中国的开源软件使用者。

 

 下图为 jobClient 提交到 Mapreduce 作业到JobTracker 核心逻辑。

 



 

 1.JobProfile类:

 job的描述性元语,相当于bean的功能.其中包括:
  user job的提交者
  jobid 唯一的标志一个job的ID  ->JobID 类生成:
      --jobid 包括两部分.第一部分代表jobTracker 标志,第二部分代表时间.如果是本地job(local Job) 则为local,最后为 job数量,代表是第   几个job
  jobFile job运行时文件
  url  定位该条job的描述性信息url
  name  job的名字
  queueName  job 队列名称,
 
2.JobStatus 类:
   -- job的几种状态
  running
  successed
  failed
    prep
  killed
3.copyAndConfigureFiles() 方法:
 1.JobSubmissionFiles  工具类 负责管理 job 相关文件:
   conf 路径
   jar 包路径
   分布式缓存(distributed cache files(archives,libjars,)) 路径
 拷贝job执行文件到 job执行目录 
4.writeNewSplits()
 mapred.max.split.size 设置最小输入分片
  mapred.max.split.size  最大分片的大小
 计算输入分片
 FileInputFormat  ->getSplits()->computeSplitSize()方法 
分片计算法:
 1.首先 获取文件的长度 length
 2.获取blocksize
 3. 获取最 大分片大小 getMaxSplitSize
 4.取 maxsize 和 block 中 的较小者 A
 5. 取 最新分片和 A 中的最大者 作为分片大小
 6.如果文件长度 length/分片大小 >1.1 则调用FileSplit 分片
FileInputFormat 类:
setInputPaths((Job job,  Path... inputPaths) 可添加多个输入路径
 


 

  • 大小: 106.2 KB
分享到:
评论

相关推荐

    hadoop源码分析

    本文将深入探讨Hadoop的核心组件,包括Configuration、JobClient、JobConf以及JobTracker、TaskTracker等,并详细解析Hadoop作业提交的流程。 首先,我们从Configuration类开始。Configuration类是Hadoop中的基础...

    MapReduceV1:Job提交流程之JobClient端分析

    MapReduceV1实现中,主要存在3个主要的分布式进程(角色):JobClient、JobTracker和TaskTracker,我们主要是以这三个角色的实际处理活动为主线,并结合源码,分析实际处理流程。下图是《Hadoop权威指南》一书给出的...

    MapReduceV1:Job提交流程之JobTracker端分析

    上一篇我们分析了Job提交过程中JobClient端的处理流程(详见文章MapReduceV1:Job提交流程之JobClient端分析),这里我们继续详细分析Job提交在JobTracker端的具体流程。通过阅读源码可以发现,这部分的处理逻辑还是...

    MapReduce Job集群提交过程源码跟踪及分析

    下面我们将深入源码,详细分析这一过程。 首先,当用户编写好MapReduce程序并调用Job的submit()方法时,客户端会进行一系列的初始化工作。这包括将程序的JAR包、配置信息以及输入输出路径等打包成一个JobConf对象,...

    hadoop-3.1.3.tar.gz编译后的源码包

    这个hadoop-3.1.3.tar.gz文件是一个包含了Hadoop 3.1.3版本的源码压缩包,对于理解Hadoop的工作原理、进行二次开发或者定制化配置来说,研究源码是非常重要的。 首先,Hadoop的核心组件包括HDFS(Hadoop ...

    hadoop jar包.rar

    这个"hadop jar包.rar"文件可能包含了Hadoop运行所需的各种库文件,如HDFS客户端、MapReduce客户端、Hadoop其他组件的jar包等,使得用户可以直接在本地或者集群上运行Hadoop相关程序,无需自行编译源码。用户在使用...

    Hadoop运行流程详解

    - JobInProgress:JobTracker接收到JobClient提交的作业后,会创建一个JobInProgress实例,用于跟踪和调度作业,并将其放入作业队列。 - TaskInProgress:JobTracker启动任务时,通过TaskInProgress来launchTask。...

    Hadoop+HDFS和MapReduce架构浅析

    - **作业提交**:用户通过编写Map和Reduce函数定义作业逻辑,并通过JobClient提交作业到JobTracker。 - **作业初始化**:JobTracker接收到作业后,会对其进行初始化,并创建相应的Map任务和Reduce任务。 - **任务...

    hadoop2 MR运行修改jar

    `org.apache.hadoop.mapreduce.JobClient`类是这个库的核心,它负责与JobTracker(在Hadoop 2.x中被ResourceManager替代)进行通信,执行各种操作,如提交Job、获取Job状态、杀死Job等。 在Windows环境中,由于路径...

    HadoopAPI使用

    JobClient 是一个客户端 API,用于将应用程序和配置参数打包成 jar 文件,并将其提交到 JobTracker 服务中。 JobInProgress 是 JobTracker 创建的一个对象,用于跟踪和调度 Job 的执行情况。TaskInProgress 是 ...

    常见Hadoop面试题

    3. MapReduce 中的 JobClient 会在用户端将应用已经配置参数打包成 jar 文件存储到 HDFS,并将路径提交到 JobTracker。 Hadoop 作者 1. Hadoop 的作者是 Doug Cutting。 HDFS Block Size 1. HDFS 默认 Block ...

    基于Hadoop的分布式系统依赖的所有JAR包

    7. **开发与调试**:对于开发和调试Hadoop应用,使用`hadoop jar`命令可以提交MapReduce作业到集群上执行。例如,`hadoop jar myjob.jar com.example.MyMainClass`将运行包含在`myjob.jar`中的`MyMainClass`。 总之...

    myEclipse10.0与hadoop集群远程连接

    为了让myEclipse能够提交和运行你的Hadoop作业,你需要配置jobTracker和taskTracker的地址,这样myEclipse就可以通过Hadoop的JobClient接口提交任务到集群。此外,你可能还需要在myEclipse的运行配置中设置Hadoop...

    Hadoop期末整理.pdf

    - 作业提交:客户端通过JobClient提交作业到JobTracker。 - 作业初始化:JobTracker解析作业配置,生成Map和Reduce任务。 - 任务分配:JobTracker将任务分配给TaskTracker执行。 - Map任务执行:TaskTracker运行...

    Hadoop-mapreduce过程.doc

    总结来说,Hadoop MapReduce通过客户端提交任务,JobTracker分配任务,TaskTracker执行任务,以及Child执行map和reduce操作,实现了分布式数据处理。这种模型充分利用了集群资源,能高效地处理海量数据。然而,由于...

    hadoop-3.1.4-src.zip

    JobClient用于提交作业,JobTracker负责任务调度,而TaskTracker在各个节点上执行实际的任务。 3. **YARN(Yet Another Resource Negotiator)**: - `hadoop-yarn-project`:YARN是Hadoop的资源管理系统,它将...

Global site tag (gtag.js) - Google Analytics