Hadoop HDFS原理

来源:互联网 发布:sqlserver true false 编辑:程序博客网 时间:2024/05/18 22:15
一、HDFS介绍
     HDFS 包括 块、NameNode、DataNode,适用于一次写多次读,不支持并发写。具有通透性、容错性。
     HDFS中文件被分成块进行存储,其块默认大小为64M,块是文件存储处理的逻辑单元。用户通过网络访问文件。
     NameNode 为管理节点,存放文件元数据。其包括文件与数据块的映射表、数据块与数据节点的映射表(文件名、文件有的块,以及块所在的DataNode)

     用户请求访问文件时,先向NameNode请求文件的信息,然后访问具体的DataNode获取块数据,并进行拼接。Secondary NameNode为NameNode的备份,防止发生单点故障,导致文件不可访问,NameNode存储的文件信息在内存中。EditLog为更改的操作,通过EditLog和FsImage可生成最新的文件信息,其中EditLog和FsImage存储在磁盘上。
     DataNode主要用于存放数据块,一般对文件进行3份副本。分布在两个机架的三个节点上,DataNode定期向NameNode发送心跳消息,网络故障、或者宕机。
二、文件读写
     1.文件读操作

     (1)客户端向NameNode发出文件读取请求(文件名)
     (2)NameNode向客户端返回数据元信息(文件名、文件有的块,以及块所在的DataNodes )
     (3)客户端访问DataNode并读取Blocks,将Blocks进行组装。
     2.文件写操作

     (1)将文件拆分为固定大小的块
     (2)通知NameNode,NameNode查询可用的、在线、有足够磁盘空间的DataNodes返回给客户端。
     (3)客户端根据返回的信息,将Block写入具体的DataNode
     (4)DataNode间通过复制管道进行流水线复制,将Block写入另一个DataNode
     (5)复制完成后更新元数据,通知NameNode已完成创建一个新的数据块。Client写完一个Block后再写下一个Block
三、HDFS文件系统特点
     1.数据冗余、硬盘容错(3份备份,多个机架)
     2.流式的数据访问(一次写入、多次读取,顺序读写)
     3.存储大文件(小文件将增加NameNode的压力)
     适合数据批量读写,吞吐量高,不适合交互式应用(数据库),很难满足低延迟,不支持多个用户并发写相同文件
四、HDFS应用
     通过hadoop fs -(put、get、ls、cd、rm、mkdir等等)
0 0
原创粉丝点击