1、HDFS的6大特性
(1)分布式存储数据
(2)高并发访问
(3)高可靠性,安全性
(4)文件顺序访问
(5)数据块存储数据
(6)一次写入,多次读取简单的模型,HDFS一般不支持修改,但是支持追加
2、HDFS的工作的基本框架与几个重要的概念
NameNode的作用:
(1)主要是存储于管理整个分布式文件系统目录结构
(2)接收用户的请求,并且快速的响应
(3)记录文件对应的数据块
(4)记录数据块所在的DataNode地址
DataNode的作用:
(1)真正的存储数据,以块的形式存储数据。DataNode通过心跳机制,将自己块的信息告诉NameNode。
(2)与用户的应用程序进行数据交换
HDFS的整体的工作流程分为三个步骤:
(1)用户通过客户端向NameNode发起请求,发起索要访问的文件(主要使用Client协议)
(2)NameNode通过自己的目录结构,找到文件对应的数据块,然后在通过心跳机制,找到相应的DataNode的地址,返回给客户端(使用DataNode协议)
(3)客户端与DataNode进行实际的数据传输,传输结束后,会向NameNode发送消息。(使用RPC协议)
数据块大小的选择:
我们一般选择64M,128M,
如果数据块太大,则在文件进行传输的时候,如果失败,就会造成时间的浪费
如果数据块太小,则NameNode中会记录大量的元数据信息,造成NameNode的瓶颈。
3、HDFS的可靠性的设计
主要使用数据块多个副本的,这样有以下几个好处:
(1)在数据块读取的时候,可以充分利用带宽,加快文件的传输
(2)在文件写入到HDFS是,多个数据块,可以保证数据块的准确性
(3)如果DataNode节点失效,则数据不会失效
什么样的机制保证HDFS的靠靠性的呢?
(1)每次系统启动的时候,都会进入安全模式,如果每个数据块没有达到系统的要求,则进行副本的复制,然后离开安全模式
(2)使用SecondaryNameNode,主要当客户端进行文件上传或者修改的时候,该组件负责文件镜像和日志文件的记录,降低NameNode的压力,同时也相当于
给NameNode做一个副本
(3)心跳机制
保证DataNode在失效的时候,NameNode可以知道,然后做相应块的复制
(4)租约机制
当一个用户写一个数据块的时候,NameNode会发放一个写的租约,这样保证不会多个用户向一个文件中写数据
4、用户从HDFS写数据与读数据的过程
读过程: