HDFS:存储模型

写的不到位的地方,欢迎评论指出不足之处

1、文件线性按字节切割成块(block),具有 offset、id

  • 理解
    • 文件按每100字节,切割成一块,同时可拼成原样,每个块的第一个字节,块对应文件时(单一块对应所有块时),块的下标/偏移
    • 每5个字节,切割成一块
    • 如图只表明文件内是数字,若是其它会将内容切割坏,之后通过计算还原

一个文件

0.1.2.3.4

5.6.7.8.9

10.11.12.13.14

15.16.17.18.19

20.21.22.23.24

2、文件与文件的 block 大小可以不一样

    • 第一个文件按每5字节切割,第二个文件按每3字节切割
    • 可配置

3、一个文件除最后一个 block,其他 block大小一致(默认情况下)

    • 一个文件切割若干份,每一份的 block 大小都是一样的,最后一个由于是文件结尾部分,因此可于之前 block 大小不同

4、block 的大小依据硬件的 I/O 特性调整

  • 理解
    • 每个版本对支持 I/O 都有提升或是调整,但最终还是要根据计算机实际硬件的 I/O 进行调整

5、block 被分散存放在集群的节点中,具有 location

    • 一个文件被切割 50 块,分散存放 10 个集群节点中,并具有 location(位置/地址),否则数据无法还原

6、block 具有副本( replication ),没有主从概念,副本不能出现在同一个节点

  • 理解
    • 副本数可指定数量,并没有主块和备份块的概念,多个副本是同级,操作哪一个都可以,需要放在不同节点上。
    • 当一个副本所在的节点发生异常情况时,其它节点的副本仍可以正常使用

7、副本是满足可靠性和性能的关键

  • 理解
    • 可靠性:当一个副本所在的节点发生异常情况时,其它节点的副本仍可以正常使用
  • 性能
      • 10个程序,有3个程序正在处理3个节点上的副本(副本正在使用中)
      • 由于没有多余或空闲副本,剩余7个程序等待,但有空闲副本时,剩有程序再拉取节点。
      • 若增加副本,10个程序同时处理10个节点上的副本,将不需要再等待拉取,从而提高性能

8、文件上传可以指定 block 大小和副本数,上传后只能修改副本数

9、一次写入多次读取,不支持修改

    • 假设修改了某一个 block 中的数据,该 block 就会变大,从而造成之后的 block 偏移情况不准。
    • 为了解决只能将该 block 为起始,对每一个 block 都进行调整,从而修整了偏移情况。
    • 但所有的 I/O、CPU 都将进行疯狂的计算,导致设备资源用在了不该用的地方,致使其它程序运行性能的降低或崩溃
    • 当大面积出现这种情况时,称为“泛洪”
    • 所以当需要修改时,需要对整个文件进行删除/上传操作

10、支持追加数据

  • 理解
    • 一个文件切割若干 block ,可在最后一个 block 追加数据,因为只操作这一个 block 而不会影响其它的 block
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

家道消乏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值