大数据随笔(三):分布式文件系统HDFS

HDFS简介

分布式文件系统HDFS(Hadoop Distributed File System)
文件系统结构
在这里插入图片描述
HDFS优势:

  • 兼容廉价的硬件设备
  • 实现流数据读写(全部或大部分数据读写,不会读写指定数据)
  • 支持大数据集
  • 支持简单的文件模型
  • 强大的跨平台兼容性(java语言写的)

HDFS自身的局限性:

  • 不适合低延迟数据访问,实时性不高(HBase可以)
  • 无法高效储存大量小文件(寻址耗时)
  • 不支持多用户写入及任意修改文件

HDSF基本概念

块 chunk

  • 分摊磁盘读写开销,分摊寻址开销;
  • 默认64MB,可设置为128MB)
  • 太小寻址开销大,太大MapReduce并行度降低

好处:

  • 支持大规模文件存储,将文件切割成块,块可以分布地存储在不同机器上,突破单机存储容量的上限
  • 简化系统设计,块的大小是固定的
  • 适合数据备份

HDFS两大组件:名称节点(NameNode)和数据节点(DataNode)

NameNode

整个HDFS集群的管家,存储元数据,相当于数据目录
元数据包含:

  • 文件是什么
  • 文件被分成多少块
  • 每个块和文件的映射关系
  • 每个块被存储在哪个服务器上面

NameNode包含两个核心数据结构:

  • FsImage:保存系统文件树
    文件的复制等级、修改和访问时间、访问权限、块大小以及组成文件的块
  • EditLog:记录对数据进行的诸如创建、删除、重命名等操作
  • 块的位置信息不由FsImage保存,而是在DataNode与NameNode不断的交流中更新在内存里

NameNode运作方式:

  • 先加载FsImage和EditLog到内存里,根据EditLog的历史操作和FsImage的信息合并更新元数据,生成新的FsImage,创建新的EditLog
    在这里插入图片描述
  • EditLog体积会不断变大,这时需要Secondary Namenode来辅助:Primary Namenode先生成一个新的edits.new文件,用来保存Secondary Namenode操作期间新提交的操作。然后Secondary Namenode通过http get获取edits和fsimage,合并得到fsimage.ckpt文件,通过http put传递给Primary Namenode,再和edits合并得到新的文件。
    在这里插入图片描述

Secondary Namenode

  • 解决EditLog不断增大的问题
  • 可以当做名称节点的冷备份

DataNode:存取实际数据
HDFS中数据以块的方式冗余存储,一般冗余因子是3,好处:

  • 加快数据传输速度(多用户同时访问)
  • 容易检查数据错误(冗余数据可以用来对照)
  • 保证数据可靠性

错误应对机制
Namenode:冷备份,热备份
Datanode:心跳信息探知是否出错,冗余恢复
数据:校验码检测错误,冗余恢复

参考资料:https://blog.csdn.net/zjlamp/article/details/82778617

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值