Hadoop思想之源:Google
面对数据和计算难题
- 大量的网页怎么存储
- 搜索算法
带给我们的关键技术和思想
- GFS (HDFS)
- Map-Reduce
- Bigtable (Hbase)
分布式存储系统HDFS(Hadoop Distributed File System)
- 分布式存储系统
- 提供了高可靠性、高扩展性和高吞吐率的数据存储服务
分布式计算框架(MapReduce)
- 分布式计算框架
- 具有易于编程、高可靠性和高扩展性等优点
HDFS优点
- 高容错性
1.数据自动保存多个副本
2.副本丢失后自动恢复
- 适合批处理
1.移动计算而非数据
2.数据位置暴露给计算框架
- 适合大数据处理
1.GB、TB 甚至PB级数据
2.百万规模以上的文件数量
3.10K+节点
- 可构建在廉价机器上
1.通过副本提高可靠性
2.提供了容错和恢复机制
HDFS缺点
- 低延迟数据访问
1.比如毫秒级
2.低延迟与高吞吐率
- 小文件存取
1.占用NameNode大量内存(NameNode会为每个文件保存元数据信息,小文件过多会导致要保存的元数据信息过多。)
2.寻道时间超过读取时间(元数据信息过多导致寻址时间长)
- 并发写入,文件随机修改(修改文件会同时修改文件副本,消耗极大)
1.一个文件只能有一个写者
2.仅支持append
HDFS存储单元(block)
- 文件被切分成固定大小的数据块
1.默认数据块大小为64MB(hadoop1.x)/128MB(hadoop2.x),可配置
2.若文件大小不到64MB/128MB,则单独存成一个block
- 一个文件储存方式
1.按大小被切分成若干个block,存储到不同节点上
2.默认情况下每个block都有三个副本
- block大小和副本数量通过Client端上传文件时设置,文件上传成功后,副本数可以变更, block size不可变更
NameNode(NN)
- NameNode主要功能:接受客户端读写服务
- NameNode保存metadata信息包括
1.文件owership和permissions
2.文件包含哪些块
3.block保存在哪个DataNode (由DataNode启动时上报)
- NameNode的metadata信息在启动后会加载到内存
1.metadata储存到磁盘文件名为“fsimage“
2.block的位置信息不会保存到fsimage
3.edits记录对metadata的操作日志
SecondaryNameNode(SNN)
- 它不是NN的备份(但可以做备份),它的作用是帮助NN合并edits log 减少NN启动时间
- SNN执行合并时机
1.根据配置文件设置的时间间隔fs.checkpoint.period 默认3600秒
2.根据配置文件设置edits log大小fs.checkpoint.size规定edits文件的最大值,默认是64MB
SNN合并流程如下图:
SNN会从NN获取fsimage和edits文件,并把两个文件合并为一个新的fsimage.ckpt文件传回给NN,NN接收到文件后替换原有的fsimage文件。过程中Client产生的任何新log都存入edits.new中,当fsimage完成合并时替换edtis文件。所以,SNN并不持有NN的全部备份(edits.new)。
网友评论