`

Hadoop代码分析(四)

阅读更多

 

好了,大概了解了一下从输入到mapper的数据的处理过程,其实我在刚刚接触hadoop的时候很好奇,当你你在命令行输入hadoop jar ******的时候系统到底如何启动job的,诸如mapper是如何获取输入的K/V对的呢?一般的hadoop程序中的map,reduce方法是被谁而调用的呢?现在就来看看咯:

当一个作业开始被提交,job.waitForCompletion(true),系统开始等待作业的完成,在waitForCompletion方法中,调用了submit方法以提交作业的conf,在job类中,该方法被描述为如下:

 

public void submit() throws IOException, InterruptedException, 
                              ClassNotFoundException {
    ensureState(JobState.DEFINE);
    setUseNewAPI();
    info = jobClient.submitJobInternal(conf);
    state = JobState.RUNNING;
}
 

 

第5行的jobclient是提交作业,追踪jobtracker,在jobclienr方法中,submitJobInternal(),是一个内部提交作业到系统的方法,
,继续追踪该方法,该方法中有Path submitSplitFile = new Path(submitJobDir, "job.split");
                                                        maps = writeNewSplits(context, submitSplitFile);
啊哈。终于看到一点split的影子了,不过最主要的是第二条语句,我先说明该语句的作用吧,将该split绑定到一个map上,现在解释原因,追踪writeNewSplits(),看到如下代码:
org.apache.hadoop.mapreduce.InputFormat<?,?> input = ReflectionUtils.newInstance(job.getInputFormatClass(), job.getJobConf());
 
利用反射机制,获取到该job的jobconf,以得到该job的InputFormat(这个是将指定输入转换为splits),然后一直ctrl啊ctrl,到了ReflectionUtils中的setJobConf方法,代码清单:
try {
      Class<?> jobConfClass = 
        conf.getClassByName("org.apache.hadoop.mapred.JobConf");
      Class<?> jobConfigurableClass = 
        conf.getClassByName("org.apache.hadoop.mapred.JobConfigurable");
       if (jobConfClass.isAssignableFrom(conf.getClass()) &&
            jobConfigurableClass.isAssignableFrom(theObject.getClass())) {
        Method configureMethod = 
          jobConfigurableClass.getMethod("configure", jobConfClass);
        configureMethod.invoke(theObject, conf);
}
 
我对反射机制不太懂,反正总结了一下,这段代码就是利用该jobConf信息配置该job的InputFormat,以至于InputFormat
转换的输入是该job的指定输入。。这样,指定的输入就通过分块,给map进行分类处理。。
其实在hadoop中,Context类是很重要的,记录了该jobstracker的上下文信息,明天再说吧,手冷死了。。

分享到:
评论

相关推荐

    Hadoop源代码分析完整版.pdf

    Hadoop源代码分析完整版.pdf

    Hadoop源代码分析(完整版).pdf

    Hadoop 源代码分析 Hadoop 是一个开源的分布式计算框架,由 Apache 基金会维护。Hadoop 的核心组件包括 HDFS(Hadoop Distributed File System)和 MapReduce。HDFS 是一个分布式文件系统,可以存储大量的数据,而 ...

    Hadoop源代码分析

    《Hadoop源代码分析》是一本深入探讨Hadoop核心组件MapReduce的专著。Hadoop是Apache软件基金会的一个开源项目,旨在提供分布式存储和计算框架,以处理和存储大量数据。MapReduce是Hadoop的核心计算模型,它通过将大...

    深入云计算:Hadoop源代码分析(修订版)

    深入云计算:Hadoop源代码分析(修订版)

    深入云计算 Hadoop源代码分析

    ### 深入云计算 Hadoop源代码分析 #### 一、引言 随着大数据时代的到来,数据处理成为了各个领域中的关键技术之一。Hadoop作为一个开源的大数据处理框架,因其优秀的分布式计算能力,在业界得到了广泛的应用。...

    Hadoop分析气象数据完整版源代码(含Hadoop的MapReduce代码和SSM框架)

    Hadoop分析气象数据完整版源代码(含Hadoop的MapReduce代码和SSM框架) 《分布式》布置了一道小作业,这是作业的所有代码,里面包含了Hadoop的MapReduce代码、和SSM框架显示数据的代码

    Hadoop源代码分析完整版.doc

    "Hadoop源代码分析完整版" Hadoop作为一个开源的分布式计算框架,具有高可扩展性和高性能的特点。Hadoop的源代码分析可以分为多个部分,包括HDFS、MapReduce、YARN等。 首先,让我们了解Hadoop的架构。Hadoop的...

    Hadoop分析气象数据完整版代码

    在这个项目中,我们重点关注的是一套完整的Hadoop分析气象数据的代码,这涉及到分布式计算、数据处理以及数据可视化等多个关键知识点。 首先,我们要理解Hadoop的核心组件:HDFS(Hadoop Distributed File System)...

    Hadoop源代码分析(一)

    在IT行业中,Hadoop是一个广泛使用的开源大数据处理框架,它主要由Apache软件基金会维护。...在阅读博客文章《Hadoop源代码分析(一)》时,可以结合Hadoop的源码,逐步揭开这个强大框架的神秘面纱。

    Hadoop源代码分析完整版

    ### Hadoop源代码分析知识点详解 #### 一、Hadoop与云计算的核心技术 Hadoop作为分布式计算领域的核心框架,其源代码分析对于深入理解云计算的底层实现至关重要。Hadoop最初的设计灵感来源于Google的一系列论文,...

    Hadoop源代码分析(完整版

    在Hadoop源代码分析中,首先,我们可以看到HDFS(Hadoop分布式文件系统)是所有基于Hadoop项目的基础。HDFS的设计灵感来源于Google的GFS(Google File System),它通过将大文件分割成块并复制到多个节点来确保数据...

    hadoop代码

    在大数据处理领域,Hadoop和HBase是两个非常重要...以上就是关于"Hadoop代码"资源的详细解析,这个资源提供了从基础API使用到高级优化策略的全面学习材料,对于想要深入理解并应用Hadoop和HBase的开发者来说极具价值。

    Hadoop源代码分析 高清完整中文版PDF下载

    根据提供的文件内容,以下是关于Hadoop源代码分析的知识点总结。 首先,Hadoop项目起源于Google的核心技术论文。Google开发了一系列创新技术用于构建其大规模的分布式计算平台,这些技术包括Google Cluster、Chubby...

    Hadoop源码分析视频下载

    - 性能调优:学习如何通过调整参数和优化代码来提升Hadoop集群的性能。 通过深入学习和理解Hadoop源码,你将能够更好地驾驭这个强大的大数据处理工具,解决实际项目中的问题,甚至为Hadoop社区贡献自己的改进和...

    老师的Hadoop源代码分析报告.pdf

    ### Hadoop源代码分析报告知识点总结 #### 一、概览 本报告是对Hadoop源代码进行深入分析的结果,重点研究了Hadoop分布式文件系统(HDFS)的内部实现细节。Hadoop是一种开源软件框架,主要用于分布式存储和处理大...

Global site tag (gtag.js) - Google Analytics