HDFS首先是用来存储文件,存储数据的一个大数据最底层的一个服务,其次是一个分布式的文件系统。
HDFS具有哪些核心特性呢:
- 主从架构(master|slaves),主角色:namenode是维护和管理元数据的即文件,大小,副本位置信息等。从角色:DataNode,存储数据的地方。
- 分块存储:即物理上将文件分开存储,一个文件根据大小划分为不同的块,每个块存储在不同的机器上,来确保数据的安全。
- 副本机制:默认情况下是3副本,根据实际情况和需要可以更改副本数量。
- metadata:元数据,也就是记录数据的数据,对于HDFS来说,目录结构及文件块为止信息叫做元数据。
- 一次写入多次读取:HDFS的模式是一次写入多次读取,没有随机修改编辑的操作,只能对既有的数据进行追加。
HDFS写文件流程:
- 客户端和namenode建立联系。
- namenode判断需要写入的文件是否存在以及是否有权限。
- 判断成功可以支持写入,将文件块拆分成包进行传递,默认三副本,即需要三台机器。
- 文件在机器传输中通过pipeline进行连接,并传输完成后通过ack应答,确保传输正确。
- 所有文件传输完成后关闭连接。
HDFS读流程:
- 客户端与namenode建立连接,获取块的位置信息。
- 根据获取的位置信息读取数据,并进行校验,数据缺失从新找另一台机器进行读取。
- 读取完所有的数据后将关闭连接。
HDFS工作机制,namenode和DataNode的通信机制,首先DataNode启动时会向namenode进行注册,并汇报自己持有的数据块信息,DataNode每隔3秒向namenode进行心跳报活,每隔6小时向namenode进行数据块的汇报。