Hadoop Ozone如何巧妙利用Multi-Raft机制优化数据节点吞吐量

本文介绍了Hadoop Ozone如何利用Multi-Raft机制优化数据节点吞吐量,解决了Ozone写入性能瓶颈。在Multi-Raft的方案下,数据节点可以参与多个Pipeline,提高磁盘使用率,降低了写入时延,提升了集群性能。此优化已回馈给Apache Ozone社区。
摘要由CSDN通过智能技术生成

背景

作为近期Hadoop社区的明星项目,Hadoop Ozone吸引了社区广泛的关注。它脱胎于HDFS,不仅同时支持文件系统和对象语义,能原生对接HDFS和S3两种访问模式,也将集群的读写性能和吞吐量视为重中之重。2019年年中,腾讯大数据团队开始上线Ozone集群承接大数据存储业务,数据湖小组也全力投入了Hadoop Ozone的开源项目中。在与Hadoop Ozone社区和Cloudera深度合作后,数据湖小组凭借在开源界多年的深耕和数据平台的业务对接实战经验,逐渐发现Ozone写入性能显现出了一定的波动和瓶颈,针对性设计了重点的新特性和优化来解决这些问题,同时也将这些特性回馈给了社区。此次介绍的Multi-Raft特性就是其中的重头戏。

Ozone的结构中保留了原先HDFS中的 DataNode数据节点,不过将管理元数据的NameNode分拆成了Ozone Manager(处理用户请求和响应)和Storage Container Manager(管理数据pipeline,container等资源)。数据节点上从原先的Block管理数据转变成了Container管理,同时也采用了更为轻量的Raft协议管理元数据和数据的一致性。Ozone Manager和Storage Container Manager放在了性能更好的RocksDB内管理,大大增加了集群Scale Out的能力,在架构上突破了原先HDFS元数据瓶颈的限制,同时也通过Raft增加了元数据管理节点standBy的个数,增强了集群可用性。

元数据管理的增强也意味着数据节点可以被更好地利用,于是,在HDFS上为人津津乐道的数据节点DataNode的吞吐量优化问题,在Ozone集群上也成了焦点问题。互联网各大厂对于HDFS DataNode数据吞吐量的优化各有十八般武艺:某大厂利用C++重写了一套HDFS,不仅扩展了DataNode吞吐量,也让一个NameNode可以管理超过7万个DataNode;还有大厂选择优化Linux的cache排队机制,优化Linux底层分配内存时page allocation的效率,达到增大写盘带宽的效果,从而增大DataNode的吞吐量。

但这些方案都仅限于公司内部高度定制化的方案,无论是后期维护,还是合入开源社区新的改动升级等方面都造成了新的障碍。腾讯作为大面积使用Hadoop Ozone的第一家大厂,在选择Ozone的优化方案时优先考虑了社区友好的策略。

Ozone利用了Raft协议作为集群一致性协议,写数据时通过DataNode Raft Leader同步到Follower的方式确保多副本写入,读数据时只需要读到任意副本都可以返回结果,从而达到强一致的读写语义。在考虑调优DataNode性能时,我们把目光集中到了Raft Pipeline上,在一系列的测试后,我们发现之前Ozone对数据Pipeline和Raft的使用并没有使得磁盘处于高效运转的状态,于是设计了Multi-Raft的功能,可以让单个数据节点上承载尽量多个Raft Pipeline,达到用带宽换时延的目的。

本文将重点分享Ozone如何高效利用Multi-Raft的方案调优数据节点的吞吐量,从而达到写性能优化。Multi-Raft的方案和实习也是Ozone社区在最近一次0.5.0版本发布中重要的特性,笔者同时也在开源社区大厂Cloudera的官方Blog上发布了一篇英文版的技术分享:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腾讯大数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值