HDFS存取策略联系

书上关于这部分分了三个点:

1.数据存放

2.数据读取

3.数据复制

    但数据存放和数据复制都是数据写操作过程中的,“存放”体现一种思想,“复制”体现过程,整个数据写操作过程如下:

1.分块:当客户端写入一个文件时,该文件首先会被切分为若干个块(block),每个块的大小由HDFS的设定值决定。

2.块向NN发起请求:每个数据块会向NameNode发起写请求。

3.NN为块给出DN列表:NameNode会根据数据块的存放策略,选择三个DataNode组成一个列表返回给客户端。如果是集群内发起的写操作,则将发起操作的节点作为第一个DN,如果是集群外发起的,则随机一个DN。第二个DN与第一个要是不同机架,第三个DN要与第一个DN同机架不同节点。

4.DN复制:客户端在接收到这个DataNode列表后,开始使用流水线复制的方法进行数据块的复制。具体步骤如下:

  1. 客户端将数据和列表传给第一个DataNode。
  2. 第一个DataNode接收到数据后,将其写入本地存储,并同时将数据和列表传递给第二个DataNode。
  3. 第二个DataNode接收到数据后,也将其写入本地存储,并继续将数据和列表传递给第三个DataNode。

    这个过程是并行进行的,也就是在第一个DataNode在接收到数据后,会立即开始将数据写入本地存储,并且几乎同时,它也会将数据转发给下一个DataNode(即第二个DataNode)。第二个DataNode也会立即开始写入数据,并继续将数据传递给第三个DataNode。也就是第一个DataNode不需要等待自己完全写完数据后再传递给下一个DataNode;相反,它可以一边写入数据,一边将数据传递给下一个节点。这种流水线复制的方式可以显著提高数据写入的效率。

5.写毕:当最后一个DataNode完成写入后,它会沿着列表逆序发送数据写完毕信号“ACK确认包”,通知客户端和整个流水线中的数据节点,表示该数据块已成功复制到所有目标节点。

因此,可以说HDFS数据块的复制和存放是一个协同进行的过程,它们相互依赖、相互促进,共同保证了数据在HDFS中的可靠存储和高效访问。

其余补充:

1.NameNode的内存中存储了当前的元数据,而FsImage和EditLog则存储在磁盘上,用于持久化和恢复元数据

2.Region元数据:记录Region与Region服务器的映射关系,存内存

   NameNode元数据:除了目录-文件-块-DataNode的映射关系(分几块,存在哪里),还包括了文件的描述属性。(是什么)

3.hbase表的meta表和root表也是存在Region上的

4.hbase空间大小受root表大小限制(region大小)

    hdf存储空间大小受namenode内存大小限制

5.hadoop1.0对于hdfs的namenode单点失效问题采取第二名称节点方式解决

  hadoop2.0对于hdfs的namenode单点失效问题采取NN Federation方法解决

   hbase对于master单点失效问题采取zookeeper协调选取主管方式解决

6.region以行划分

   store以列族划分

7.region服务器重启:若hlog里有缓存,也就是上次关机memstore里剩余没刷新的内容,执行hlog恢复memstore,刷新,删除hlog文件

   region失效:把hlog中的操作全部重新做一次恢复memstore,与重启类似

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值