大数据技术hadoop入门理论系列之二—HDFS架构简介

发布时间:2020-06-20 12:43:13 作者:gridmix
来源:网络 阅读:502

HDFS简单介绍

HDFS全称是Hadoop Distribute File System,是一个能运行在普通商用硬件上的分布式文件系统。
与其他分布式文件系统显著不同的特点是:

HDFS设计假设和目标

HDFS适用场景

综合上述的设计假设和后面的架构分析,HDFS特别适合于以下场景:

HDFS架构

本文将从以下几个方面分析HDFS架构,探讨HDFS架构是如何满足设计目标的。

HDFS总体架构

下面这张HDFS架构图来自于hadoop官方网站.

大数据技术hadoop入门理论系列之二—HDFS架构简介

从这上面可以看出,HDFS采取主从式C/S架构,HDFS的节点分为两种角色:
HDFS数据组织机制

HDFS的数据组织分成两部分进行理解,首先是NameNode部分,其次是DataNode数据部分,数据的组织图如下所示:

大数据技术hadoop入门理论系列之二—HDFS架构简介

                                       

Technorati 标记: HDFS,hadoop,NameNode,大数据,架构

 
HDFS数据访问机制

HDFS的文件访问机制为流式访问机制,即通过API打开文件的某个数据块之后,可以顺序读取或者写入某个文件,不可以指定
读取文件然后进行文件操作。
由于HDFS中存在多个角色,且对应应用场景主要为一次写入多次读取的场景,因此其读和写的方式有较大不同。读写操作都由
客户端发起,并且进行整个流程的控制,服务器角色(NameNode和DataNode)都是被动式响应。
下面分别对其进行 介绍:

                        大数据技术hadoop入门理论系列之二—HDFS架构简介

             流程分析             ?使用HDFS提供的客户端开发库Client,向远程的Namenode发起RPC请求; 
         ? Namenode会视情况返回文件的部分或者全部block列表,对于每个block,Namenode都会返回有该block拷贝的DataNode地址; 
         ?客户端开发库Client会选取离客户端最接近的DataNode来读取block;如果客户端本身就是DataNode,那么将从本地直接获取数据. 
         ?读取完当前block的数据后,关闭与当前的DataNode连接,并为读取下一个block寻找最佳的DataNode; 
         ?当读完列表的block后,且文件读取还没有结束,客户端开发库会继续向Namenode获取下一批的block列表。 
         ?读取完一个block都会进行checksum验证,如果读取datanode时出现错误,客户端会通知Namenode,然后再从下一个拥有该block拷贝的datanode继续读。 

        

                        大数据技术hadoop入门理论系列之二—HDFS架构简介

                 流程分析

            ?使用HDFS提供的客户端开发库Client,向远程的Namenode发起RPC请求; 
            ?Namenode会检查要创建的文件是否已经存在,创建者是否有权限进行操作,成功则会为文件 创建一个记录,否则会让客户端抛出异常; 
            ?当客户端开始写入文件的时候,会将文件切分成多个packets,并在内部以数据队列"data queue"的形式管理这些packets,并向Namenode申请新的blocks,获取用来存储replicas的合适的datanodes列表,列表的大小根据在Namenode中对replication的设置而定。 
          ?开始以pipeline(管道)的形式将packet写入所有的replicas中。把packet以流的方式写入第一个datanode,该datanode把该packet存储之后,再将其传递给在此pipeline中的下一个datanode,直到最后一个datanode,这种写数据的方式呈流水线的形式。 
          ?最后一个datanode成功存储之后会返回一个ack packet,在pipeline里传递至客户端,在客户端的开发库内部维护着"ack queue",成功收到datanode返回的ack packet后会从"ack queue"移除相应的packet。 
         ?如果传输过程中,有某个datanode出现了故障,那么当前的pipeline会被关闭,出现故障的datanode会从当前的pipeline中移除,剩余的block会继续剩下的datanode中继续以pipeline的形式传输,同时Namenode会分配一个新的datanode,保持replicas设定的数量。

 

HDFS数据安全机制

HDFS文件系统的安全机制采取类linux的ACL安全访问机制。每一个文件默认继承其父对象即目录的访问权限,默认的用户和属组来自于
上传客户端的用户。相关控制方法也与linux类似,可以通过命令或者API指定某个用户对某个文件的读写权限。当用户没有对应的权限时,
若进行文件读写操作将会得到对应的错误提示。

HDFS高可用性机制

HDFS作为一个高可用集群,其可用性设计是非常用心的,主要体现在:

HDFS集群扩展机制

集群的动态扩展方式方便用户以动态的方式对集群进行扩容和缩容。若有新服务器加入,则后续的IO会有更多的机会被
发送到新服务器上执行,对集群中现有文件的充分分布,可以通过命令进行,但是数据重新分布将只占用少量网络IO,这样保证集群上的应用不会因为重分布而受到重大影响。同样机器下架也通过命令进行,此时集群表现出与机器宕机类似情况,会不再往其上发IO请求以及重新复制以保证副本数量。

参考文献:

  1. HDFS Design Document
  2. HDFS 原理、架构与特性介绍
推荐阅读:
  1. Hadoop 系列(七)—— HDFS Java API
  2. Hadoop 系列(六)—— HDFS 常用 Shell 命令

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

技术 成本 吞吐量

上一篇:代码审计环境搭建

下一篇:shell实现对Windows服务器的安全基线检查

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》