一、HDFS概述

基于hadoop2.6
HDFS被设计能够运行在通用硬件上、提供流式数据操作、能够处理超大文件的分布式文件系统。
特点:高容错和高吞吐量、易扩展、高可靠性
HDFS的四个核心模块:namenode节点、datanode节点、客户端、HDFS协议(RPC协议、流式接口协议:HTTP和TCP)

基本概念

1、数据块(block)

数据块是HDFS文件处理(读和写)的最小单元,默认是128M。一个文件存储到HDFS上首先被切分成数据块,然后分别存储到不同的datanode节点上。

2、namenode节点


由于Hadoop是一个master/slave主从结构,namenode相当于主从的主节点,负责管理文件系统的命名空间,包括文件系统目录树、文件/目录信息以及文件的数据块的索引,这些信息以两个文件
的形式永久保存在namenode节点的本地磁盘,即命名空间镜像文件和边记日志文件。

同时namenode节点还保存着数据块与数据节点datanode的对应关系,这部分数据不报存在磁盘上而是在数据节点datanode启动的时候向namenode动态汇报,然后由namenode动态构建,保存在内存中。

总结:namenode主要功能是保存着两个映射关系
数据文件到数据块的映射关系(保存在磁盘上);
数据块和数据节点datanode的映射(保存在内存中);

3、datanode节点

数据节点是HDFS的从节点,数据节点在namenode的调度下负责把数据写入本地或者读出本地存储上保存的数据块。
datanode节点会不断向namenode节点发送心跳、数据块汇报以及缓存汇报。

4、客户端

通过各种接口操作HDFS(命令行接口、API接口等),这些客户端接口都是建立在DFSClient类的基础上;

5、HDFS协议

HDFS节点间的接口主要有两种类型:
Hadoop RPC接口:基于Hadoop RPC框架实现的接口;
流式接口:基于TCP或者HTTP实现的接口;



HDFS的RPC接口







 

总结

RPC接口:客户端与namenode节点、datanode节点进行简单的信息交互;

TCP接口:用于读取或写入数据块;

HTTP接口:namenode进行同步元信息;

 

HDFS主要操作流程

1)、HDFS客户端读流程







 

2)、HDFS客户端写流程





 

3)、HDFS客户端追加流程




4)、datanode启动、心跳检测、以及namenode节点指令流程




5)、HA(namenode)切换流程





读取或者写入时是按照数据块为单位来进行的,每次读完或者写完一个数据块才和下一个数据块进行建立连接通道。 

HA切换流程,保证两个一致性:

* 命名空间的一致性
* 数据块和数据节点datanode的一致性;
二、Hadoop的RPC

Hadoop的RPC是基于IPC(inter-process communications
,进程间通信)模型实现的一套高效的轻量级RPC框架,采用了javanio、java动态代理以及protobuf等基础技术。





 

Hadoop RPC server端基于Reactor设计模式的设计实现:基于多reactor多线程模式



 



 

三、namenode节点

 


四、datanode节点

 


五、HDFS客户端

 

 

 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信