PB规模的Hadoop实战

本文深入探讨了Hadoop HDFS在PB规模下遇到的挑战,包括NameNode扩展性问题、Federation架构优化、Balancing负载转移、NameNode锁优化、Decommission改进、QoS控制及用户体验提升。通过一系列定制化改造,实现了NameNode的负载均衡、性能提升和运维便利性增强。
摘要由CSDN通过智能技术生成

NameNode负载和扩展性问题

  • 拆RPC端口以及拆NameSpace组成Federation

针对NameNode单点瓶颈,在把NameNode拆分成Client RPC端口和Service RPC端口后,推进了HDFS Federation的架构,原因是NameNode单点存在元数据量激增的问题,也存在NameNode RPC负载激增的问题。

针对Federation之间的数据迁移引入FastCopy:如下图所示
在这里插入图片描述
针对大数据量的Federation各个NameSpace之间的拷贝,比Distcp提升3倍左右的效率。

  • Balancer负载转移和搬迁优化

拆分成Federation架构之后,HDFS Balancer 操作对Active NameNode造成了很大对负载,为此我们把Balancer操作的负载转移到了standby上面,从而降低了Active NameNode的RPC负载。具体把Balancer负载转移到Standby NameNode思想和社区最新的HDFS读写分离思想是一致的,读写分离HDFS社区具体的Issue为:HDFS-12943 ,而对应的Balancer转移到了ObserverNode的patch为: HDFS-14162。而我们的版本还不支持读写分离的功能,为了快速降低负载,我们把Balancer对Active NameNode的RPC主动抛异常到了Standby NameNode,并且让Standby NameNode对Balancer放行。搬迁的时候忽略小的块,按照从大到小到顺序降序,增加搬迁的速度。具体如下图:
在这里插入图片描述

  • 拆分日志相关的NameSpace降低负载

有了HDFS Federation架构以后,日志还是会和业务的NameSpace互相产生影响,为此我们把defaultFs修改成系统单独的NameSpace。我们也向Hadoop YARN社区贡献了针对提交目录,日志聚合目录可以负载均衡到各个NameSpace的设想

  • NameNode用户的拥塞控制
    在这里插入图片描述
    社区提出了FairCallQueue ,如上图所示,原有的FIFO的RPC结构,改成了Fair的结构,来对高频率的单账户进行缓解和限制,详细issue见:HADOOP-10282。应用以后,有效的隔离了Presto等即使查询用户并发量聚集时候,对HDFS其他线上业务的影响。

目前我们使用了FairCallQueue + RPC Backoff, 能满足我们拥塞控制的需求。有效限制了异常高负载的用户对整体RPC可用性的影响。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值