文章原文:
参考文献:
返回知识列表:
>>HDFS缺点:
- 低延迟数据访问
- 比如毫秒级
- 低延迟与高吞吐率
-小文件存储
- 占用NameNode大量内存。因为元数据跟文件信息相关,文件越多,则元数据越多。造成NameNode越大。元数据都是加载到内存工作的。
- 寻道时间超过读取时间
- 并发写入、文件随机修改
- 一个文件只能有一个写者。类似网盘,网盘的内容都是不允许修改的。
- 仅支持append
>>HDFS数据存储单元(block)
- 文件被切分成固定大小的数据块
- 默认数据块大小为64MB,可配置
- 若文件大小不到64MB,则单独存成一个block
- 一个文件存储方式
- 按大小被切分成若干个block,存储到不同节点上
- 默认情况下每个block都有三个副本
- Block大小和副本数通过client端上传文件时设置,文件上传成功后副本数可以变更,Block Size不可以变更
>>NameNode(NN)
- NameNode主要功能: 接受客户端的读写服务
- NameNode保存metadate 信息包括
--文件ownership和permissions
--文件包含哪些块
--Block保存在哪个DataNode(由DataNode启动时上报)
- NameNode的metadate信息在启动后会加载到内存
--metadata存储到磁盘文件名为“fsimage”
--Block的位置信息不会保存到fsimage
--edits记录对metadata的操作日志。类似于关系型数据库的事务。
>>SecondaryNameNode(SNN)
-- 它不是NN的备份(但可以做备份,所以别放到一个机器上,否则一坏都坏了),它的主要工作是帮助NN合并edits log,减少NN启动时间
-- SNN执行合并时机
- 根据配置文件设置的时间间隔 fs.checkpoint.period 默认3600秒
- 根据配置文件设置edits log大小 fs.checkpoint.size 规定edits文件的最大默认值是64MB
>>DataNode(DN)
-- 存储数据(Block)
-- 启动DN线程的时候会向NN汇报block信息
-- 通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其他DN。
>>Block的副本放置策略
-- 第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满