zoukankan      html  css  js  c++  java
  • Hadoop源码分类概要整理

      最近突然觉得, 很多掌握的都还是很浅的原理,需要更深入细粒度去了解整个分布式系统的运转机制。于是。。开始作死而又作死而又作死的源码之旅。

      Hadoop包的功能总共有下列几类:

      tool:提供一些命令行工具,如DistCp,archive

      mapreduce,:Hadoop的Map/Reduce实现

      filecache:提供HDFS文件的本地缓存,用于加快Map/Reduce的数据访问速度

      fs:文件系统的抽象,可以理解为支持多种文件系统实现的统一文件访问接口

      hdfs:HDFS,Hadoop的分布式文件系统实现

      ipc:一个简单的IPC的实现,依赖于IO提供的编解码功能

      io:表示层,将各种数据编码/解码,方便在网络上的传输

      net:封装部分网络功能,如DNS,socket

      security:用户和用户组信息

      conf:系统的配置参数

      metrics:系统攻击数据的收集,用于网管范畴

      util:工具类

      record:根据DDL自动生成他们的编码函数,目前可以提供C++和java

      http:基于Jetty的HTTP Servlet,用户通过浏览器可以观察文件系统的一些状态信息和日志

      log:提供HTTP访问日志的HTTP Servlet

    一、RPC

      它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。

        RPC采用客户机/服务器模式,请求程序就是一个客户机,而服务提供程序就是一个服务器。例如HDFS的通信就包括:

      1、Client-NameNode之间,其中NameNode是服务器。

      2、Client-DataNode之间,其中DataNode是服务器。

      3、DataNode-NameNode之间,其中NameNode是服务器。

      4、DataNode-DataNode之间,其中某一个DataNode是服务器,另一个是客户端。

      org.apache.hadoop.rpc中包含Client类和Server类。Server类是一个抽象类,类RPC封装了Server,利用反射,把某个对象的方法开放出来,变成RPC中的服务器。

    二、DataNode与NameNode

      一个HDFS集群可能包含上千DataNode节点,这些DataNode定时与NameNode通信,为了减轻NameNode的负担,NameNode上并不永久保存DataNode上那些数据块信息,而是通过DataNode启动时上报,来更新NameNode上的映射表。

            相关包:org.apache.hadoop.hdfs.server.common、org.apache.hadoop.hdfs.server.datanode...

      所有和数据块相关的操作,都在FSDataset相关的类中进行处理,一个DataNode上可以指定多个Storage来存储数据块,由于HDFS规定了一个目录能存放Block的数目,所以一个storage上存在多个目录。对应的,FSDataset中用FSVolume来对应一个Storage,FSDir对应一个目录,所有的FSVolume由FSVolumeSet管理,FSDataset中通过一个FSVolumeSet对象,就可以管理它的所有存储空间。

           相关包:org.apache.hadoop.hdfs.server.dataNode.fsDataSet

      NameNode作为系统文件目录的管理者,DataNode关注的是数据块,NameNode保存的主要信息是文件名-数据块,数据块-DataNode列表。 DataNode实现了InterDatanodeProtocol和ClientDatanodeProtocol,剩下的,由NameNode实现。

      相关包:org.apache.hadoop.hdfs.server.protocol、org.apache.hadoop.hdfs.protocol、org.apache.hadoop.hdfs.server.namenode   (重点FSNamesystem.java)

    三、MapReduce

         相关包:org.apache.hadoop.mapreduce.JobContext、org.apache.hadoop.mapreduce、org.apache.hadoop.mapreduce.lib.*(包含inputFomat等..)

      这些还是很小的一部分,但是一点一点深入好了~

      

         

  • 相关阅读:
    asp.net获取服务端和客户端信息
    ASP.NET 中JSON 的序列化和反序列化
    Asp.net TextBox常规输入验证
    ADO.NET中的五个主要对象
    .Net一般处理程序来实现用户名的验证
    .net获取当前网址url(各种参数值)
    hdu-1941 Find the Shortest Common Superstring
    字典树的动态与静态模板
    模板 Dijkstra+链式前向星+堆优化(非原创)
    基础深搜小结
  • 原文地址:https://www.cnblogs.com/yangsy0915/p/7106083.html
Copyright © 2011-2022 走看看