作为Hadoop的分布式文件系统的HDFS,是Hadoop框架学习当中的重点内容,HDFS的设计初衷,是致力于存储超大文件,能够通过构建在普通PC设备上的集群环境,以较低成本完成大规模数据存储任务。今天的大数据入门分享,我们就主要来讲讲HDFS数据读写机制。 HDFS在数据存储上,具备高可靠性,提供容错机制,为整个Hadoop框架的数据处理提供了更稳固的底层支持。这其中,HDFS数据读写机制是发挥着重要的作用的。 HDFS相关的基本概念 块(block) 这是HDFS的基本思想,把大的文件分成块,每块64M。 备份(replicas) 热备份:b是a的热备份,如果a坏掉。那么b马上运行代替a的工作。 冷备份:b是a的冷备份,如果a坏掉。那么b不能马上代替a工作。但是b上存储a的一些信息,减少a坏掉之后的损失。 机架(rack) 由几个DataNode组成的部件称为机架。 MetaData 描述我们要存储数据的数据结构。 HDFSnamespace 这个命名空间指的是文件的目录结构,与我们单个电脑的文件的结构树相似。 EditLog 记录文件系统的metadata变化的事务日志,是HDFS的核心数据结构。例如,写入一个文件或修改复制因子都会向EditLog中写入一条record。 FsImage 整个文件系统的命名空间,包括block到文件的映射,文件系统的属性(大小,被分为几个block,只读,权限等信息),都被存储在一个文件中,这个文件就是FsImage。 HDFSnamespace,EditLog,FsImage都存储在NameNode上。 HeartBeat NameNode和DataNode通过HeartBeat进行通信,每隔一定时间,DataNode就会向NameNode发送心跳信号,以此报告给NameNode,说我还活着,这样NameNode在接到读写任务时,会发命令给它。 HDFS如何分解文件 HDFS默认会将文件分割成block,64M为1个block,然后将block按键值对存储在HDFS上,并将键值对的映射存到内存中。每个文件默认会保存3份。 HDFS的基本架构,按照Master和Slave的结构,主要的组件包括:NameNode、SecondaryNameNode、DataNode。 NameNode:是Master节点,处理客户端的读、写请求;管理数据块映射;管理HDFS的名称空间;配置副本策略; SecondaryNameNode:合并fsimage和fsedits,然后再发给namenode,尽量不要与NameNode部署在同一个host上,这样避免内存的过多消耗;NameNode的冷备份; DataNode:Slave节点,干活的。负责存储client发来的数据块block,执行数据块的读写操作。HDFS读写机制 1、数据写入 客户端访问NameNode请求上传文件; NameNode检查目标文件和目录是否已经存在; NameNode响应客户端是否可以上传; 客户端请求NameNode文件块Block01上传服务位置; NameNode响应返回3个DataNode节点; 客户端通过输入流建立DataNode01传输通道; DataNode01调用DataNode02,DataNode02调用DataNode03,通信管道建立完成; DataNode01、DataNode02、DataNode03逐级应答客户端。 客户端向DataNode01上传第一个文件块Block; DataNode01接收后传给DataNode02,DataNode02传给DataNode03; Block01传输完成之后,客户端再次请求NameNode上传第二个文件块。 2、数据读取 客户端通过向NameNode请求下载文件; NameNode查询获取文件元数据并返回; 客户端通过元数据信息获取文件DataNode地址; 就近原则选择一台DataNode服务器,请求读取数据; DataNode传输数据返回给客户端; 客户端以本地处理目标文件。 关于大数据入门,HDFS数据读写机制,以上就为大家做了简单的介绍了。在Hadoop框架当中,HDFS作为分布式文件系统,地位十分关键,而想要把HDFS学好学懂,还是需要多下功夫的。