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等..)

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

  

     

posted on 2017-07-02 15:05  松伯  阅读(454)  评论(0编辑  收藏  举报