Hadoop Common 结构学习

从今天开始,开始研究学习Hadoop Common相关的源码结构。Hadoop Common在Hadoop1.0中是在core包下面的。此包下面的内容供HDFS和MapReduce公用,所以作用还是非常大的。Hadoop Common模块下的内容是比较多的。本人打算在后面的学习中挑选部分模块进行分析学习,比如他的序列化框架的实现,RPC的实现等等。我对此模块截出了一些图:

程序包下的主要模块关系图:

下面分模块,做一下简短的概述

1.org.apache.hadoop.conf,配置相关类,配置类在Hadoop中一直都是一个比较基本类,很多配置设置的数据都需要从配置文件中去读取。Hadoop中配置文件还挺多的,HDFS和MapReduce各一个,还会用用户自定义的配置文件。系统开放了许多的get/set方法来获取和设置其中的属性。

2.org.apache.hadoop.fs,Hadoop文件系统,从Hadoop的文件系统中,也许你会看到Linux文件系统的影子,里面包括了很多文件File的各种基本操作,还有很多在文件中特殊的操作实现,比如权限控制,目录,文件通过什么来组织,Hadoop文件系统搞了一个和VFS虚拟文件系统非常像的一个抽象文件系统,基于这个Hadoop抽象文件系统,派生了很多具体拥有各个功能的文件子系统,比如内存文件系统,校验和系统。

3.org.apache.hadoop.io,Hadoop I/O系统,输入输出系统在任何一个系统都是非常重要的设计,同样在Hadoop中,在此上面实现了一个特有的序列化系统,不同于java自带的序列化实现,Hadoop的序列化机制具有快速,紧凑的特点,非常适合于Hadoop的使用场景。还有1个就是Hadoop的在I/O中的解压缩的设计,里面还可以通过JNI的形式调用第三方的比较优秀的压缩算法,比如Google的Snappy框架。

4.org.apache.hadoop.ipc,Hadoop远程过程调用的实现,这个模块的设计是有很多值得学习的好地方,java的RPC最直接的体现就是RMI的实现,RMI的实现就是一个简陋版本的远程过程调用,但是由于JMI的不可定制性,所以Hadoop根据自己系统特点,重新设计了一套独有的RPC体系,在java NIO的基础上,用了java动态代理的思想,RPC的服务端和客户端都是通过代理获得方式取得。

其他包的一些内容我简单的描述,org.apache.hadoop.log,日志帮助类,实现估值的检测和恢复,org.apache.hadoop.metrics,用于度量统计用的,主要用于分析的,至于具体怎么做的,本人也不是特别了解,org.apache.hadoop.http和org.apache.hadoop.net是Hadoop对网络层次相关的封装,最后要提到的就是org.apache.hadoop.util就是在Common中的公共方法类,checkSum校验和的验证方法就包含于此。

时间: 2024-12-20 16:26:17

Hadoop Common 结构学习的相关文章

什么是Hadoop,怎样学习Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上:而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序.HD

Hadoop源码学习笔记(6)——从ls命令一路解剖

Hadoop源码学习笔记(6) ——从ls命令一路解剖 Hadoop几个模块的程序我们大致有了点了解,现在我们得细看一下这个程序是如何处理命令的. 我们就从原头开始,然后一步步追查. 我们先选中ls命令,这是一个列出分面式文件系统中的目录结构.传入一个查阅地址,如果没有则是根目录.启动NameNode和DataNode服务.然后在命令行中输入ls : 换成程序,如果写呢,我们新建一个ClientEnter类.之前章节中,我们就知道,在命令行中输入的dfs命令,指向到org.apache.hado

Hadoop源码学习笔记(5) ——回顾DataNode和NameNode的类结构

Hadoop源码学习笔记(5) ——回顾DataNode和NameNode的类结构 之前我们简要的看过了DataNode的main函数以及整个类的大至,现在结合前面我们研究的线程和RPC,则可以进一步看看几个对象的大至结构以及调用关系. 我们知道,三个结构(客户端,NameNode,DataNode)是能过网络调用的,走的是RPC.那在底层通讯时谁做服务器谁做客户端呢?我们先回顾一下这三者关系: 这样看,看不出,我们进入源码,看一下夹在中间的NameNode: 在这个initialize函数中,

Hadoop权威指南学习笔记一

Hadoop权威指南学习笔记一 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习参考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my_acm 1. 数据的增长远远超过了磁盘的读取速度,传统的数据存储方式和分析方式变得不再适用于大数据的处理. Hadoop分为两大核心技术,HDFS(HadoopDistributed File System-分布式hadoop文件处理系统)和MapReduce(分为Map-数据映射等

2本Hadoop技术内幕电子书百度网盘下载:深入理解MapReduce架构设计与实现原理、深入解析Hadoop Common和HDFS架构设计与实现原理

这是我收集的两本关于Hadoop的书,高清PDF版,在此和大家分享: 1.<Hadoop技术内幕:深入理解MapReduce架构设计与实现原理>董西成 著  机械工业出版社2013年5月出版 2.<Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理>蔡斌.陈湘萍 著  机械工业出版社2013年4月出版 百度网盘下载地址: http://pan.baidu.com/s/1sjNmkFj

Hadoop源码学习笔记(1) ——第二季开始——找到Main函数及读一读Configure类

Hadoop源码学习笔记(1) ——找到Main函数及读一读Configure类 前面在第一季中,我们简单地研究了下Hadoop是什么,怎么用.在这开源的大牛作品的诱惑下,接下来我们要研究一下它是如何实现的. 提前申明,本人是一直搞.net的,对java略为生疏,所以在学习该作品时,会时不时插入对java的学习,到时也会摆一些上来,包括一下设计模式之类的.欢迎高手指正. 整个学习过程,我们主要通过eclipse来学习,之前已经讲过如何在eclipse中搭建调试环境,这里就不多述了. 在之前源码初

Hadoop源码学习笔记(4) ——Socket到RPC调用

Hadoop源码学习笔记(4) ——Socket到RPC调用 Hadoop是一个分布式程序,分布在多台机器上运行,事必会涉及到网络编程.那这里如何让网络编程变得简单.透明的呢? 网络编程中,首先我们要学的就是Socket编程,这是网络编程中最底层的程序接口,分为服务器端和客户端,服务器负责监听某个端口,客户端负责连接服务器上的某个端口,一旦连接通过后,服务器和客户端就可以双向通讯了,我们看下示例代码: ServerSocket server = new ServerSocket(8111); S

Hadoop源码学习笔记(3) ——初览DataNode及学习线程

Hadoop源码学习笔记(3) ——初览DataNode及学习线程 进入了main函数,我们走出了第一步,接下来看看再怎么走: public class DataNode extends Configured implements InterDatanodeProtocol,       ClientDatanodeProtocol, FSConstants, Runnable {      public static DataNode createDataNode(String args[],

Hadoop权威指南学习笔记二

MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my_acm 上一篇介绍了什么是Hadoop.Hadoop的作用等.本篇相同基于Hadoop权威指南,结合迪伦的Hadoop的视频教程对MapReduce做一个介绍. 1. MapReduce是Hadoop的核心之中的一个.MapReduce分为两个部分,Mapper和Ruducer模块.简单