a.高容错性
.数据保存多个副本
.数据丢的失后自动恢复
b.适合批处理
.移动计算而非移动数据
.数据位置暴露给计算框架
c.适合大数据处理
.GB、TB、甚至PB级的数据处理
.百万规模以上的文件数据
.10000+的节点
d.可构建在廉价的机器上
.通过多副本存储,提高可靠性
.提供了容错和恢复机制
a.低延迟数据访问处理较弱
.毫秒级别的访问响应较慢
.低延迟和高吞吐率的请求处理较弱
b.大量小文件存取处理较弱
.会占用大量NameNode的内存
.寻道时间超过读取时间
c.并发写入、文件随机修改
.一个文件仅有一个写者
.仅支持Append写入
如上图所示,HDFS也是按照Master和Slave的结构。分NameNode、SecondaryNameNode、DataNode这几个角色。
NameNode:是Master节点,是大领导。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间;
SecondaryNameNode:是一个小弟,分担大哥namenode的一部分工作量;是NameNode的冷备份;合并fsimage和fsedits然后再发给namenode。
DataNode:Slave节点,奴隶,干活的。负责存储client发来的数据块block;执行数据块的读写操作。
热备份:b是a的热备份,如果a坏掉。那么b马上运行代替a的工作。
冷备份:b是a的冷备份,如果a坏掉。那么b不能马上代替a工作。但是b上存储a的一些信息,减少a坏掉之后的损失。
fsimage:米数据镜像文件(文件系统的目录树。)
edits:米数据的操作日志(针对文件系统做的修改操作记录)
namenode内存中存储的是=fsimage+edits。
SecondaryNameNode负责定时默认1小时,从namenode上,获取fsimage和edits来进行合并,然后再发送给namenode。减少namenode的工作量。