HDFS原理入门

序言

本篇旨在较为全面的介绍hdfs工作原理。hdfs是Hadoop生态的文件存储系统,相比于其它分布式文件系统,hdfs可以更好的支持大数据计算。
本文会介绍hdfs架构模型,以及主从分布式系统可能遇到的问题及解决方案。本文会以提问->解答的方式阐述,建议读者在阅读的同时思考一下,如果由自己来设计文件系统应该如何实现,遇到了相应问题应该如何解决。本文面向初学者,不要求过多知识储备。
如果有哪里描述不清楚,或者描述错误,欢迎评论区探讨指正。


HDFS存储模型是什么?

要想存储大数据,最直观的想法就是将数据切片分开保存,hdfs也确实是这么做的。此外我们还需要知道某条数据存在了哪个分片的节点,这就需要我们保存一个总的“目录”,通过这个目录对数据进行寻址。hdfs称这个目录为:“元数据”,元数据不仅含有位置信息,还有数据的其它属性。这些元数据都保存在“NameNode”节点。任何大数据文件都会按字节切分开,分成若干的“block”,然后保存在“DataNode”节点。NameNode默认是唯一的,客户端通过NameNode的信息来访问DataNode。

什么是节点?
节点是一个抽象的概念,就是指某个提供服务的点。具体表现为某个启动的Java进程,NameNode和DataNode都可以称为节点。NameNode就是主节点,负责存放目录,告诉客户端去哪里拿数据,DataNode可以有很多,负责自己区域的数据读写。

block是怎么切割的?
block是按照字节切割后分别存在DataNode节点中的,需要注意:

  1. block大小可以不一样,尾部的block剩下多少是多少。
  2. 存数据时可以指定block的大小,这需要开发者根据硬件IO来自己调整。
  3. block会严格按照字节切分,可能将一条完整数据拆散存,不过不必担心,hdfs在分布式计算时会解决这个问题。
  4. block可以指定副本个数,这是hdfs容灾性的体现,后续还会聊到。

HDFS可以增删改查吗?

HDFS只能增不能删,因为每个block都是要记录偏移量的(也就是记录block头在原文件的哪个字节),一旦对原文件某个位置删除,其后的所有block偏移量都要修改,不同节点需要互相通信。这种泛洪操作与大数据思想相悖,如果实在需要修改可以通过上层应用将原先位置标记为不可用,再追加新的数据。


HDFS架构设计是什么样的?

一主多从的设计,NameNode是主,DataNode是从。NameNode维护元数据,与客户端交互。DataNode负责读写数据,并且维持和NameNode心跳,汇报自己的block信息。

NameNode中元数据是什么样子的
NameNode会将元数据维护成目录树结构,类似于Linux的虚拟路径。(区别于Windows系统的盘符,并不会像Windows一样将数据指定在c盘或者某个盘下,Linux文件系统是通过挂载机制分区的,可以将不存在的路径随时创建出来)
需要注意的是:元数据是常驻内存,内存往往不稳定,需要通过某些机制来持久化。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值