热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

HDFS的架构要点

HDFS的架构采用masterslave模式,一个HDFS集群是由一个Namenode和多个Datanode组成。在HDFS集群中,只有一个Namenode结点。Namenode作为HDFS集群的中心服务器,主要负责:1、管理HDFS集群中文件系统的名字空间(Namespace),例如打开文件系统、关闭文件

HDFS的架构采用master/slave模式,一个HDFS集群是由一个Namenode和多个Datanode组成。

在HDFS集群中,只有一个Namenode结点。Namenode作为HDFS集群的中心服务器,主要负责:

1、管理HDFS集群中文件系统的名字空间(Namespace),例如打开文件系统、关闭文件系统、重命名文件或者目录等;另外,对任何请求对文件系统名字空间或者属性进行修改的操作,都被Namenode记录下来。

 

2、管理客户端对HDFS集群中的文件系统中的文件的访问,实际上文件以块的形式存储在Datanode上,文件系统客户端向Namenode请求所要执行操作的文件块(该块存储在指定的Dadanode数据结点上),然后通过与Datanode结点交互来完成文件读写的操作。那么,文件系统客户端与Namenode交互的过程中,只有从Namenode中获取到了所请求的文件块所对应的Datanode结点,才能执行文件的读写操作。也就是说,Namenode结点还负责确定指定的文件块到具体的Datanode结点的映射关系。

3、管理Datanode结点的状态报告,包括Datanode结点的健康状态报告和其所在结点上数据块状态报告,以便能够及时处理失效的数据结点。

在HDFS集群中,一个Datanode结点可以存在多个,一般是一个结点上对应一个Datanode实例。Datanode数据结点进程的任务是:

1、负责管理它所在结点上存储的数据的读写。一般是文件系统客户端需要请求对指定数据结点进行读写操作,Datanode作为数据结点的服务进程来与文件系统客户端打交道。同时,是否需要执行对文件块的创建、删除、复制等操作,Datanode数据结点进程还要在Namenode的统一指挥调度下完成,当与Namenode交互过程中收到了可以执行文件块的创建、删除或复制操作的命令后,才开始让文件系统客户端执行指定的操作。具体文件的操作并不是Datanode来实际完成的,而是经过Datanode许可后,文件系统客户端进程来执行实际操作。

2、向Namenode结点报告状态。每个Datanode结点会周期性地向Namenode发送心跳信号和文件块状态报告,以便Namenode获取到工作集群中Datanode结点状态的全局视图,从而掌握它们的状态。如果存在Datanode结点失效的情况时,Namenode会调度其它Datanode执行失效结点上文件块的复制处理,保证文件块的副本数达到规定数量。

3、执行数据的流水线复制。当文件系统客户端从Namenode服务器进程获取到要进行复制的数据块列表(列表中包含指定副本的存放位置,亦即某个Datanode结点)后,会首先将客户端缓存的文件块复制到第一个Datanode结点上,此时并非整个块都复制到第一个Datanode完成以后才复制到第二个Datanode结点上,而是由第一个Datanode向第二个Datanode结点复制,……,如此下去完成文件块及其块副本的流水线复制。

通过上面的叙述,可以看到,在HDFS集群中,存在三个主要的进程:Namenode进程、Datanode进程和文件系统客户端进程,这三个进程之间都是基于Hadoop实现的RPC机制进行通信的,该IPC模型基于Client/Server模式进行通信。因此上述三个进程之间存在如下端到端通信与交互:


推荐阅读
author-avatar
袁冠芳彦源
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有