hadoop原理巧用到异地机房双活

为什么要考虑hadoop集群异地双活?因为我们一般集群的建设基本上都是部署在同一个地方,为了保证公司业务24小时不间断服务,所以必须要考虑集群的高可用,而我们常见的高可用一般是给A集群搞个灾备集群B集群,A、B集群不会再同一个机房,A、B集群的数据同步依赖于hadoop自身提供的工具distcp,那么discp有什么缺点呢。

1. 长时间占用yarn资源

2. 一般只同步重要的部分数据(这一点其实没毛病)

3. 两个集群必须所有节点必须网络畅通

4. 天级别数据延迟,因为我们可能一天24小时都在同步数据,一般是一天做一次数据同步,也就意味着数据存在天级别丢失的风险

为了解决这个问题,我们来研究下hadoop原来,看看有没有什么搞头

这个图大家一看应该很容易明白,网上也很多人讲这个,我想要说的下面几点

1. NameNode只记录元数据

2. NameNode不关心数据到底在哪个节点存放

3. DataNode自动汇报block信息给两个NameNode

4. 元数据的流转是Active NameNode -> Journal Nodes -> StandBy NameNode

认真理解一下上面的四点,我现在说下面这个结论你看看能不能理解

如果我要把A集群迁移到B集群,我只需要把A集群的NameNode 和journal Node(一个)的元数据拷贝到B集群,然后从A集群DataNode拷贝blcok到 B集群,这个时候B集群就可以启动起来。

什么意思呢,假设现在A集群部署了50个节点,运行了半年时间,有2TB的数据,现在搭建了一个B集群,B集群只有30个节点,现在没有数据,现在我要把A集群的数据完全迁移到B集群,并且我要保证B集群的数据和A集群一模一样,怎么做最快呢,最快的方式是哪一个U盘吧A集群的元数据拷贝到B集群,然后把A集群的 数据盘 拔了直接插到B集群的服务器上,然后重启B集群,B集群能启动起来吗,看起来比较疯狂,其实我可以很负责的说,这个肯定起的起来。

比较可惜的是,这里没有实验截图~

如果是实时同步

元数据同步:

block同步

block同步这里特别注意

这里用到了hadoop的一个特性:机架感知

所以在同步之前需要将A集群编排成3个机架,然后我们只需要同步其中一个机架上的数据过去就可以了,同步到B集群之后,B集群同样是运用机架感知的功能,会自动降数据复制成3分。

其他:块的存储

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值