`

hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker

阅读更多

1.JobClient 客户端类 通过调用 JobSubmissionProtocol 接口 的 submit 方法提交作业
2. JobSubmissionProtocol  接口为 JobClient 和JobTracker 共同执行的接口,因此它是一个可代理的接口
3. 调用 createRPCProxy() 通过远程RPC 调用实现动态代理 JobTracker 类的 submitJob 方法

 private static JobSubmissionProtocol createRPCProxy(InetSocketAddress addr,
      Configuration conf) throws IOException {
    return (JobSubmissionProtocol)[color=red][size=medium] RPC.getProxy[/size][/color](JobSubmissionProtocol.class,
        JobSubmissionProtocol.versionID, addr, 
        UserGroupInformation.getCurrentUser(), conf,
        NetUtils.getSocketFactory(conf, JobSubmissionProtocol.class));
  }


打开RPC 类 的 getProxy 方法

public static VersionedProtocol getProxy(
      Class<? extends VersionedProtocol> protocol,
      long clientVersion, InetSocketAddress addr, UserGroupInformation ticket,
      Configuration conf, SocketFactory factory, int rpcTimeout) throws IOException {

    if (UserGroupInformation.isSecurityEnabled()) {
      SaslRpcServer.init(conf);
    }
    VersionedProtocol proxy =
        (VersionedProtocol)[color=red][size=medium] Proxy.newProxyInstance[/size][/color](
            protocol.getClassLoader(), new Class[] { protocol },
            new Invoker(protocol, addr, ticket, conf, factory, rpcTimeout));
    long serverVersion = proxy.getProtocolVersion(protocol.getName(), 
                                                  clientVersion);
    if (serverVersion == clientVersion) {
      return proxy;
    } else {
      throw new VersionMismatch(protocol.getName(), clientVersion, 
                                serverVersion);
    }
  }


通过RPC  远程调用连接到服务端后.通过传入代理接口 获取到JobTracker 类
代理模式 就详细的讲了,如有必要 可翻看java代理模式

这里 getPoxy() 方法中调用  new Invoker(protocol, addr, ticket, conf, factory, rpcTimeout)) 通过new Invoker() 获得client.该cleintt 先判断ClientCache 是不是已经含有该client 如果有则加+1 如果没有 则new Client 生成一个 代码如下

 private synchronized Client getClient(Configuration conf,
        SocketFactory factory) {
      // Construct & cache client.  The configuration is only used for timeout,
      // and Clients have connection pools.  So we can either (a) lose some
      // connection pooling and leak sockets, or (b) use the same timeout for all
      // configurations.  Since the IPC is usually intended globally, not
      // per-job, we choose (a).
      Client client = clients.get(factory);
      if (client == null) {
        client = new Client(ObjectWritable.class, conf, factory);
        clients.put(factory, client);
      } else {
        client.incCount();
      }
      return client;
    }
/* 每次 +1 */
 synchronized void incCount() {
    refCount++;
  }
  


JobTracker 将其加入到job队列中

该过程 完成了 用户通过JobClient 像JobTracker 提交作业的流程,提交的过程中不是通过直接提交而是通过了rpc 通信 创建JobClient 代理 通过代理模式提交


  • 大小: 24.4 KB
8
1
分享到:
评论
2 楼 黎明lm 2013-03-28  
meifangzi 写道
楼主真厉害  都分析源码了

用了很久.一直没写出来,博客荒废了很久,重新分析下 就当复习了,一起交流学习
1 楼 meifangzi 2013-03-28  
楼主真厉害  都分析源码了

相关推荐

    Hadoop源码分析(完整版)

    Hadoop源码分析是深入理解Hadoop分布式计算平台原理的起点,通过源码分析,可以更好地掌握Hadoop的工作机制、关键组件的实现方式和内部通信流程。Hadoop项目包括了多个子项目,其中最核心的是HDFS和MapReduce,这两...

    Hadoop源码分析视频下载

    接下来,我们将详细探讨Hadoop的核心组件、其设计哲学、源码分析的重要性以及如何通过视频学习来提升你的Hadoop技能。 1. Hadoop核心组件: Hadoop主要由两个关键部分组成:Hadoop Distributed File System (HDFS)...

    Hadoop源码分析完整版

    通过对Hadoop源码的深入研究,开发者可以更好地理解和定制Hadoop以适应特定的业务需求,提高数据处理效率。同时,源码分析也有助于培养解决问题的能力,为解决Hadoop在实际应用中遇到的问题提供思路。 总的来说,...

    Hadoop源码分析(client端提交job到rm端)

    学习Hadoop源码过程中做的源码分析,共享一下,PPT中有我的邮箱,可以互相探讨。Hadoop源码分析(client端提交job到rm端)

    Hadoop源码分析 第一章 Hadoop脚本

    《Hadoop源码分析 第一章 Hadoop脚本》 Hadoop是大数据处理领域中的一个核心框架,它为海量数据的存储和计算提供了分布式解决方案。本文将深入剖析Hadoop脚本,带你理解其背后的实现机制,这对于理解Hadoop的工作...

    Hadoop源码分析

    在深入探讨Hadoop源码分析之前,我们先理解Hadoop的核心概念。Hadoop是一个开源的分布式计算框架,由Apache基金会开发,主要用于处理和存储大规模数据。它的主要组件包括HDFS(Hadoop Distributed File System)和...

    hadoop源码分析

    作业提交完成后,JobClient会通过RPC调用JobTracker的submitJob()方法,至此,作业提交过程结束。在JobTracker中,JobInProgress和TaskInProgress等类用于管理和监控作业的执行状态和进度。TaskTracker作为工作节点...

    Hadoop源码分析 完整版 共55章

    ### Hadoop源码分析知识点概览 #### 一、Hadoop概述与背景 - **Google核心技术**:Hadoop的设计理念很大程度上受到了Google一系列核心技术的影响,包括Google File System (GFS)、BigTable以及MapReduce等。这些...

    Hadoop源码分析.rar

    在MapReduce的实现中,Hadoop使用了**JobTracker**(旧版)或**ResourceManager**(YARN版)来管理作业的生命周期,调度任务到合适的DataNode执行。**TaskTracker**(旧版)或**NodeManager**则负责在每个节点上运行...

    Hadoop源码分析(client部分)

    ### Hadoop源码分析(client部分) #### Hadoop概述 Hadoop是一个开源的分布式存储与计算框架,由Apache基金会维护。它为用户提供了处理和存储海量数据的能力,并且能够运行在低成本的商品硬件集群上。Hadoop的...

    hadoop-mapreduce-client-jobclient-2.6.5-API文档-中文版.zip

    赠送jar包:hadoop-mapreduce-client-jobclient-2.6.5.jar; 赠送原API文档:hadoop-mapreduce-client-jobclient-2.6.5-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-jobclient-2.6.5-sources.jar; 赠送...

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

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

    Hadoop RPC机制分析

    本文将深入探讨Hadoop的RPC机制,解析其工作原理,并结合源码分析其内部实现。 一、RPC简介 RPC是一种让程序能够调用运行在其他地址空间(通常在另一台机器上)的程序的方法。在Hadoop中,RPC被广泛用于NameNode、...

    hadoop源码分析-HDFS&MapReduce

    在Hadoop这个分布式计算框架中,HDFS(Hadoop Distributed File System)和MapReduce是两个核心组件,它们共同构建了大数据处理的基础架构。...对于想要成为Hadoop专家的开发者来说,源码分析是不可或缺的一环。

    Hadoop实战+Hadoop权威指南(第二版)+Hadoop源码分析(完整版)_PDF文件

    这个压缩包包含三本关于Hadoop的重要书籍:《Hadoop实战》、《Hadoop权威指南(第二版)》和《Hadoop源码分析(完整版)》,它们涵盖了从基础到深入的所有关键知识点,对于不同阶段的Hadoop学习者都极具价值。...

Global site tag (gtag.js) - Google Analytics