解密华为云FusionInsight MRS单集群2万节点优化实践

举报
沙漏 发表于 2020/07/16 14:43:51 2020/07/16
【摘要】 近期,华为云FusionInsight MRS成功突破单集群2万+节点,刷新业内记录。超大规模单集群彻底解决了多系统烟囱林立的局面,消除数据孤岛,减少数据冗余,还能为数据分析的时效性提供保障,加速数据价值变现。

【导读】

7月9日,中国信通院在大数据产业峰会·成果发布会上公布了本次大数据产品能力评估的结果。不难看出,随着5G、互联网、IoT的发展,大数据技术在分布式批处理平台的基础能力方面进一步加强,针对大规模单集群的能力尤为看重,其中华为云FusionInsight MRS成功突破单集群2万+节点,刷新业内记录。

数据分析技术加速大规模单集群落地

众所周知,企业最早的分析系统是Share Everything单机形态,为了满足不断增加的数据分析诉求,后续催生了小型机市场与Shared Disk,架构思路依然是在单系统或者共享存储Disk上不断的增强单系统的处理能力。为了突破单机的瓶颈,有开拓者通过Shared Nothing架构进行创新,即各个处理单元都有自己私有的CPU、内存、硬盘等,不存在共享资源,从而实现大规模的并行分析。此时的创新都是基于专有硬件进行,系统建设成本高,导致部分企业通过定期删除系统里的数据来避免扩容,极大压抑了企业数据分析的诉求。

为了解决海量数据分析诉求和降低系统建设成本,两种全新的架构系统应运而生,一种是基于通用服务器的Share Nothing架构,最典型的代表是基于数据库发展的MPP系统;另一种是海量数据分析的Hadoop大数据分析系统。

MPP系统受限于单点瓶颈的架构设计,扩展性不足,导致其进行海量数据时能力不足;而原生的Hadoop系统由于一开始就瞄准PB/EB级的数据,在TB级的小数据交互式分析中存在不足,虽然解决了海量数据分析问题,但是并不能帮助客户减少原有烟囱投资的系统,导致企业各种分析系统烟囱林立,形成数据孤岛。

时至今日,5G、互联网、IoT迅猛发展,数据的规模量级与种类都在极速增长,对大数据平台的数据分析能力提出了更高的要求,如何实现统一的基础数据供各个业务分析系统使用,面向海量租户如何提供隔离的、高并发的交互式分析引擎,避免数据搬迁、减少数据冗余、消除数据孤岛等成为大数据平台急需解决的问题。

为此,一个具备全量数据统一分析的融合大数据平台才是企业的心之所向,既要实现全量数据的统一分析,又要支持批、流、交互式融合分析的不断演进,还要满足面向未来发展可无限扩展的可能,支持平滑扩展和演进。超大规模单集群在大数据平台中的重要性显而易见,既免去了多集群数据间的重复拷贝搬迁,减少了数据冗余,有效消除数据孤岛,又为数据分析的时效性提供了保障,加速数据价值变现。

超大规模集群的技术痛点

对于一个分布式系统来说,当集群规模由小变大以后,简单的问题都会变得异常复杂。归结起来,超大规模集群主要面临以下3大技术挑战:

1.     如何实现面向多租户场景的批、流、交互式混合负载的高效调度

数据的集中存储可以通过超大集群来有效解决,而数据价值则需大量的分析来释放。超大规模集群应该实现数据T+0实时数据入湖、全量数据批量分析、数据分析师的交互式探索分析等能力,加速数据价值变现,确保平台的价值最大化,这些都是调度系统需要解决的重要问题。

2.     如何面对存储、计算、管理方面的新挑战,突破多个组件的瓶颈限制

计算方面:随着集群规模变大,YARN的ResourceManager可调度资源和可并行任务随之增多,这对中心调度进程提出了更高的要求,如果调度速度跟不上,作业任务会在集群入口处堆积,导致集群的计算资源无法有效利用。

存储方面:随着存储容量的增加,HDFS在大规模集群上需要管理的文件对象增多,HDFS NameNode与Hive的元数据量也会相应增加。虽然开源社区提供了NameNode联邦机制,但需要应用层感知不同NameNode的命名空间,使用和维护都会变得异常复杂,还容易出现各命名空间之间映射的数据量不均衡的问题。同时,Hive元数据量增加会对元数据库形成极大压力,极易导致SQL语句堆积在元数据查询环节造成阻塞。

运维管理方面:随着集群规模变大,平台的运维管理也会遇到瓶颈问题。如系统的监控系统,当节点从5000变为20000的时候,每秒处理的监控指标会从每秒60万增加到200多万条。

3.     如何提升大规模集群的可靠性和运维能力,确保集群不停服

平台的可靠性一直是平台运维部门最关注的点,当集群承担了全集团的全量数据统一加工分析之后,就意味着集群必须24小时永远在线,但是技术会不断发展,平台必须要确保系统可以支持后续的更新与升级,以确保集群可面相未来持续演进、发展。

另外,随着集群规模的增加,机房空间不足的问题将凸显出来。如果简单地将一个大集群跨机房部署,在带宽负载和可靠性上,都会面临比较大的挑战。如何做到机房级的可靠性,对一个超大规模的集群也至关重要。

解密FusionInsight MRS超大规模集群优化实践

针对以上各方面的挑战,华为云FusionInsight MRS 2万+规模的单集群又是如何实现的呢?下面一起来看看:

自研Superior超级调度器,解决超大规模调度效率和面向多租户场景的混合负载问题

FusionInsight MRS引入数据虚拟化引擎,在统一大集群上提供交互式查询能力,解决面向分析师的查询效率问题;通过自研Superior调度器为租户同时分配保留资源与共享资源,满足多样化的负载,对于更重要的业务,可将一批固定的机器分配给租户实现绑定固定资源池,做到物理上的隔离;通过计算引擎和调度引擎的协同,做到了数据不出湖,实现了在一个大平台上的业务闭环。

在多租户能力方面,通过以下三种方式加强细粒度的隔离,避免租户间相互争抢资源:

  • 标签存储:给承载存储资源的DataNode打标签,在文件写入时指定标签,实现了最大程度的存储资源隔离。该特性可以有效应用于冷热数据存储和硬件资源异构的场景。

  • 多服务:在同一个集群中的不同主机资源上,部署多个同种服务,不同的应用可根据需求,使用各自的服务资源,并且相互之间互不干扰。

  • 多实例:在同一个集群中的同一台主机资源上,独立部署同种服务的多个实例资源,以达到主机资源的充分利用,不与其它服务实例共享。

技术攻坚,突破计算、存储、管理等各方面的瓶颈

在计算任务的调度效率方面,通过专利调度算法进行优化,将一维的调度转换为二维调度,实现了相对开源调度器在效率上数倍提升。在实测表现中, Superior相对开源Capacity性能在同步调度情况下快30倍,在异步调度情况下快2倍。

同时通过进一步优化, Superior实现了35万/s个Container的调度速率,并且集群资源利用率达到98%以上,为大规模集群的平稳商用奠定了坚实的基础。

下图是分别在Superior和Capacity下关于“资源利用率”的监控视图。


Superior资源利用率接近100%


Capacity资源利用率不足

在存储方面,Hadoop社区为解决HDFS在文件对象管理上的瓶颈,推出了联邦解决方案。但是大量不同命名空间的引入,直接导致上层业务在开发、管理、维护上复杂度上升。随后,社区又推出了Router Based Federation特性,由于在NameNode之上加了一层Router进行交互,导致性能下降。

为此,华为云FusionInsight MRS做了针对性优化:

  • 通过在大集群生产环境中识别关键瓶颈,利用合并单次读写流程中的交互次数、使用改良的数据通信压缩算法等技术方案,将性能下降控制在4%以内。

  • 为解决不同命名空间之间数据不均衡的问题,利用DataMovementTool自动均衡不同命名空间之间的数据,降低了集群维护成本。

虽然Hive的社区推出了Metastore Cache来解决Hive元数据面对表/分区的问题,但伴随数据量的增多,多个Metastore之间的缓存一致性问题并未有效解决。华为云FusionInsight MRS通过引入分布式缓存Redis作为替代方案,结合分布式锁、缓存黑白名单机制、缓存生命周期管理等技术手段增强了Metastore Cache的可用性。

在运维管理面方面,当集群规模增长到2万节点后,运维压力陡然增加:

  • 系统需要采集的监控指标数量也从原来的每秒采集60万+条数据,增长到200万+条

  • 告警并发处理从原来的200条/s增长到1000条/s

  • 配置管理的总条目数从50万增长到200多万

华为云FusionInsight MRS结合新版本特性,利用Flink、HBase、Hadoop、Elasticsearch等成熟的分布式组件技术,将原来的集约主从模式调整成了可弹性伸缩的分布式模式,成功解决了运维管理面临的难题。

通过滚动升级/补丁、任务级“断点续传”、跨AZ高可用等部署能力,保障平台持续稳定运行

滚动升级/补丁:为了实现实现平台升级/补丁等操作的业务无感知,滚动升级功能是必不可少的。但社区能力却不支持滚动升级,如Hadoop2到Hadoop3的大版本升级,这意味着很多超大集群无法使用得到最新技术的加持,极大限制了业务的发展。华为云FusionInsight MRS通过对社区接口的兼容性处理,成功实现了Hadoop大版本间的滚动升极,并在1万+节点集群规模的滚动升级中有了成功案例。

任务级“断点续传”:在大规模集群上,持续运行着一些超大任务,动辄包含几十万个Container,这类任务往往运行时间长,中间一旦出现个别故障,有可能导致任务需重新执行,造成大量的计算资源白白浪费。

华为云FusionInsight MRS提供了多种机制保障任务的可靠运行,例如:

  • 当Hive beeline断连、Hive Server重启、MapReduce JobHistory无响应等都会导致Hive任务失败,从而只能重跑任务。华为云FusionInsight MRS推出了Hive不中断业务的能力,将beeline提交的任务与Yarn上运行的任务进行关联,并实时刷新任务执行状态,当beeline或者Hive Server发生异常时,不再中断正在执行的Yarn任务,任务得以继续运行直至成功。并且将JobHistory的状态进行解耦,去除JobHistory异常对任务的影响。

  • Yarn中的Application      Master故障后,虽然能够立即被其它的节点拉起,但之前已执行的计算任务只能从头开始重新执行。为解决这一问题,华为云FusionInsight MRS提供了Application Master的断点续传能力,记录任务的执行状态,区分任务执行进度,待Application Master因故障重新被拉起后,依然可以按照之前记录的状态继续执行。

跨AZ高可用:2万节点的大规模集群,由于受限机房空间规划限制,单集群跨AZ部署成为一个不二选择。但不同的AZ之间毕竟无法像同一个机房一样提供充足的带宽,为此华为云FusionInsight MRS分别在计算、存储两方面提供了消减优化措施:

  • 存储上提供感知AZ的文件存储策略,将文件自身及其副本分别放置在不同的AZ上,用户发起读写操作时,优先在本AZ内寻找资源,只有在AZ故障的极端场景下,才会出现跨AZ的网络读写流量。

  • 计算上提供感知AZ的任务调度机制,将用户提交的任务充分分配在同一个AZ内完成,避免同一个任务的不同计算单元之间消耗网络资源。

通过以上的存储块放置策略和计算任务的本地化调度,还可实现单集群跨AZ的高可用,单AZ故障的时候,核心数据和计算任务不受影响。

【结束语】

先进技术推动产业发展,华为云FusionInsight MRS单集群突破2万+节点,加速了政企客户数字化转型。相信大集群技术会持续前行,不断满足企业大数据应用多场景融合的核心述求。

未来,在大集群技术基础上进一步实现存算分离,通过统一的元数据和安全管理,实现数算分离(数据+元数据和计算分离),从而实现数据在更大范围的共享,进而实现一份数据,多个计算集群的灵活部署和弹性伸缩,通过平滑扩展的架构,达到10万级、百万级别的集群规模。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。