缺点:
(1)数据访问有延时,做不到毫秒级别的
(2)大量小文件不能高效存储,NameNode会占用大量内存
(3) 可追加写入,不可随机修改,不支持并发写入(不支持多线程写入)
HDFS架构图
相关组件的介绍
NameNode
名称节点,HDFS的管理者。
(1)管理HDFS的名字空间,维护管理所有文件的元数据。
(2)管理DataNode上的数据块,决定文件数据块存储到哪个DataNode。
(3)处理客户端的读写请求。
(4)按用户确定的副本策略管理HDFS中数据的副本
DataNode(数据节点)
负责存储数据。
(1)存储实际的数据块,每个HDFS数据块默认大小为128MB,存储在本地文件系统的单独文件中。
(2)处理客户端的读写请求,执行数据块的读和写。
(3)向 NameNode 定期汇报数据块信息,并定时向 NameNode 发送心跳信号保持联系。
FSImage和edits文件
(1)FSImage文件存储文件的元数据,HDFS运行时会将该文件加载到内存中。
(2)edits文件记录对文件的写操作(修改)。
(3)写文件操作只会对内存中的元数据进行修改,不会对FSImage文件进行修改。
SecondaryNameNode
用于合并元数据文件FSImage。
(1)将NameNode上的FSImage和edits文件复制到本地,并将两者合并生成新的FSImage文件,再将新的FSImage文件复制回NameNode。
(2)不是NameNode的备份,但可以帮助恢复NameNode,因为其上保存了大部分的元数据信息。
SecondaryNameNode,用于合并元数据文件FSImage。
(1)将NameNode上的FSImage和edits文件复制到本地,并将两者合并生成新的FSImage文件,再将新的FSImage文件复制回NameNode。
(2)不是NameNode的备份,但可以帮助恢复NameNode,因为其上保存了大部分的元数据信息。
Client
就是客户端。
(1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传;
(2)与 NameNode 交互,获取文件的位置信息;
(3)与 DataNode 交互,读取或者写入数据;
(4) Client提供一些命令来管理 HDFS,比如 NaneNode 格式化;
(5) Client可以通过一些命令来访问 HDFS,比如对 HDFS 增删查改操作;
HDFS - 优缺点
优点:
(1)适合处理大数据:HDFS能够处理TB级甚至PB级的数据,文件数量也可达百万以上。
(2)高容错性:自动保存数据的多个副本,当某一副本丢失,可以自动重备。
(3