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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏美图数据技术团队

Spark on Yarn | Spark,从入门到精通

欢迎阅读美图数据技术团队的「Spark,从入门到精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,...

2090
来自专栏about云

CDH(Cloudera)与hadoop(apache)对比

问题导读: 1.hadoop有几个版本? 2.CDH有几种安装方式? 3.CDH在安装认证方面做了什么改变? Cloudera的CDH和Apache的H...

5156
来自专栏灯塔大数据

每周学点大数据 | No.64 配置Hadoop

NO.64 配置Hadoop 在开始使用Hadoop 之前,先要对Hadoop 进行配置。Hadoop 的配置分为单机模式、完全分布式、伪分布式三种。单机模式一...

35610
来自专栏星汉技术

Hadoop问题:DataNode线程不见了

3246
来自专栏美图数据技术团队

Spark on Yarn | Spark,从入门到精通

欢迎阅读美图数据技术团队的「Spark,从入门到精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,...

1931
来自专栏我是攻城师

Hadoop之NameNode+ResourceManager高可用原理分析

4997
来自专栏数据和云

Hadoop 面试,来看这篇就够了

原文链接 | http://www.jianshu.com/p/c97ff0ab5f49

1172
来自专栏pangguoming

Hadoop视频教程汇总

一 慕课网 1.Hadoop大数据平台架构与实践--基础篇(已学习) 链接:https://www.imooc.com/learn/391 2.Hadoop进阶...

7594
来自专栏Spark生态圈

Spark Streaming管理Kafka偏移量前言从ZK获取offset

为了让Spark Streaming消费kafka的数据不丢数据,可以创建Kafka Direct DStream,由Spark Streaming自己管理of...

4913
来自专栏大数据

大数据干货系列(三)-Hadoop2.0总结

本文共计810字,预计阅读时长五分钟 Hadoop2.0总结 一、本质 Hadoop2.0,相比于Hadoop1.0,最明显的区别是YARN系统和HDFS2.0...

2059

扫码关注云+社区

领取腾讯云代金券