Ozone Datanod Container Replication复制过程

前言


在分布式存储系统中,为了保证文件数据的冗余性,系统往往会对数据进行多副本的设置保存,比如典型的HDFS三副本文件设置。在Ozone中,同样也有副本的概念,不过它的副本单位粒度比HDFS的Block要粗一些。Ozone的是以Datanode上的Container为粒度,进行Container级别的Replication。在一个Container下 ,才是实际具体的block chunk文件。因此在Replication的数据规模上来说,Ozone的Container Replication要比HDFS的Block Replication要略微复杂一些。本文笔者来聊聊Ozone的Container Replication原理内容,在Ozone Datanode基于Container提供数据存储服务以及分布式元数据管理的模式下,它是如何来做Container副本复制的。

Ozone Datanode Container Replication请求处理


说到副本的复制,首先始发点比较容易能够联系到无非是主服务发现某个副本损坏了达不到期望副本数,然后发送新的副本复制请求命令到别的机器上进行Replication的复制。在Ozone中,同样也是如此。

因此第一步,类似地,Datanode收到了SCM服务的Replication请求命令,然后此请求被dispatch到对应的CommandHandler中被处理,

以下为类ReplicateContainerCommandHandler的handle方法处理逻辑:

  @Override
  public void handle(SCMCommand command, OzoneContainer container,
      StateContext context, SCMConnectionManager connectionManager) {
   

    final ReplicateContainerCommand replicateCommand =
        (ReplicateContainerCommand) command;
    final List<DatanodeDetails> sourceDatanodes =
        replicateCommand.getSourceDatanodes();
    final long containerID = replicateCommand.getContainerID();

    Preconditions.checkArgument(sourceDatanodes.size() >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值