hdfs全称Hadoop Distributed File System(hadoop分布式文件系统)
HDFS优缺点:
hdfs优点 | hdfs缺点 |
- 高容错性
- 适合批处理
- 适合大数据处理
- 可构建在廉价机器上
|
- 低延迟数据访问
- 小文件存取
- 占用NameNode大量内存
- 寻道时间超过读取时间
- 并发写入、文件随机修改
|
HDFS运行机制:
- 一个NameNode和多个DataNode
- 数据复制(冗余机制)
--存放的位置(机架感知策略) - 故障检测
--DataNode
心跳包(检测是否宕机)
块报告(安全模式下检测)
数据完整性检测(校验和比较)
--NameNode(日志文件和镜像文件)
- 空间回收机制
|
HDFS存储单元block
- 文件被切分成固定大小的数据块
--默认数据块大小为64MB,可配置
--如果文件大小不足64MB,则单独存成一个block
- 文件的存储方式
--按照大小被切分成若干个block,存储到不同的节点
--默认情况下每个block都有三个副本
- Block大小和副本数量通过Client端上传文件时设置,文件上传成功后副本数可以变更,但Block-Size不可变更
|
Block副本放置策略
- 第一个副本:放置在上传文件的DataNode;如果是集群外提交,则随即选择一台磁盘不太满,CPU不太忙的节点
- 第二个副本:放置在与第一个副本不同机架的节点上
- 第三个副本:放置在与第二个副本相同机架的节点上
- 更过副本:随机节点
|  |
NameNode、DataNode和SecondaryNameNode
NameNode(NN) | DataNode(DN) | SecondaryNameNode(SNN) |
- 主要功能:接受客户端的读写服务
--文件的owership和permissions
--文件包含哪些Block
--Block保存在哪些DN上(由DN启动时上报) - 保存metadata信息
- NN的metadata信息启动时会加载到内存
--metadata储存到磁盘文件名为fsimage
--Block的位置信息不会保存到fsimage
--edits记录对metadata的操作日志
|
- 存储数据(Block)
- 启动DN线程时会想NN回报Block信息
- 通过向NN发送心跳保持联系,如果NN10分钟没有受到DN的心跳,则认为i其已经lost
|
- SNN不是NN的备份,主要工作是帮助NN合并editslog,减少NN启动时间
- SNN执行合并时机
--根据配置文件设置的时间间隔fs.checkpoint.period默认3600秒
--根据配置文件设置的editslog大小fs.checkpoint.size规定edits文件的最大默认值是64MB
|
SNN合并过程:

HDFS读流程:

HDFS写流程:

*上文图片均来自bjsxt肖斌Hadoop课程视频