HDFS原理

概念

元数据

NameNode,主

DataNode,从

HDFS文件系统:单名称节点体系
一个文件分为多个数据块,分存在不同dataNode中(可冗余,默认3份,可设置)

  1. NameNode 唯一
    存储元数据,内存中,block与datanode的映射关系
  2. DataNode 多节点
    存储文件内容,磁盘中

交互

  • client --TCP-- nameNode --数据节点协议/RPC-- dataNode 特性及解决

  • nameNode (NameNode【standby】备份) 单点的备份,,容错性

  • 日志机制(SecondaryNameNode): EditLog(操作日志) --更改–> FsImage(元数据存储)

  • 多个nameNode:HDFS联邦 (2.0以后)

    吞吐量,打破元数据内存限制

    操作及读写 :java API http shell命令

如何实现分布式存储?

1.数据分片:将数据分成多个block
2.block存储到不同DataNode上,并且有备份(2个)存储在另外的DataNode上(选择上先在发起申请的DataNode上存一个,,其他两个随机)
eg.
file1 分为3个block,BlockID分别为{1,3,5}
file2 分为4个block,BlockID分别为{2,4,6,9}
NameNode 的存储:(filename, numReplicas,block_ids,…)
file1,r:3,{1,3,5}…
file2,r:4,{2,4,6,9}…

如何保证高容错性,高可用性?

  • nameNode出错
    FsImage
    EditLog
    在这里插入图片描述
    汇成新的元数据的过程交给secondaryNameNode来做:
    在这里插入图片描述

hadoop 1.0 需要停服一段时间
在这里插入图片描述
Hadoop 2.0实现了热备份

  • DataNode出错数据本身出错
    nameNode发现DataNode出错,则将此DataNode标识为宕机,,把存在此机器上的数据保存到其他DataNode(有多个副本)

  • 数据出错
    每个数据块有校验码,取时会使用校验码进行数据校验,发现传输时有错误,则会重新备份

读写操作:在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
configuration 加载两个xml得到基本配置信息
FileSystem 文件操作的通用基类 ,隐藏在里面的是DistributesFileSystem

读数据

在这里插入图片描述
写数据
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值