【揭秘】腾讯大数据98.8秒完成100TB数据排序的架构和算法
上周,腾讯云大数据联合团队以98.8秒的成绩完成100TB数据排序,摘得2016 Sort Benchmark全球排序竞赛冠军。在这次竞赛中,腾讯云数智分布式计算平台分别夺得Sort Benchmark大赛GraySort和Minutesort的冠军,创造了四项世界纪录。(了解详情请点击《腾讯打破2016 Sort Benchmark 4项记录,98.8秒完成100TB数据排序》)
此次参赛的腾讯云大数据联合团队,是由腾讯云存储产品中心、腾讯数据平台部组成,团队成员在大数据技术和应用管理上都有着非常丰富的实践经验,尤其是腾讯数据平台部一直在管理的腾讯大数据集群,是世界上最大的大数据集群之一。
这样一支颇具实力的团队是如何应对这场竞赛的呢?他们遇到了哪些挑战?参赛过程中他们如何搭建分布式系统软件架构?又进行了哪些软件算法优化?
带着这些疑问,我们采访了此次冠军团队的总负责人-腾讯云副总裁、腾讯数据平台部总经理蒋杰,请他为大家讲述冠军背后的故事。
蒋杰:此次参赛还是经历了不少困难的。我们在调优的过程中,发现网络IO和磁盘IO跑不到我们理想的极限能力,其实在当时我们跑出来的成绩已经很不错,但是整个团队没有放过任何一个可以提高性能的机会,从架构到代码细节,到硬件的驱动层,大家加班加点不停的提出优化方案和尝试,最终达到了我们理想成绩。精益求精、追求极致是我们每一个技术人员都应有的态度。
另外,比赛要求的提交时间,突然宣布提前了一个月,这应该是很多参赛团队没预料到的。但这也恰恰突出了各团队在技术积累的重要性;我们团队有着多年的技术积累,平时不断苦练内功,为我们最终在全球计算奥运会上夺冠打下了坚实的基础。
蒋杰:我们拿去年冠军的硬件配备做了一个对比。在CPU、内存、网络、磁盘的配备上,腾讯云配备512个节点,每个节点配置两颗OpenPOWER处理器,512GB内存,4块华为 NVMe SSD盘,100Gb Mellanox网卡;而上届冠军厂商的配备是:3377个节点,每节点两颗至强E5-2630,96G内存,12块SATA硬盘,10G网卡。
通过比较可见,腾讯云的单机性能比去年强大许多,但整体集群的配备和上届冠军的配备差异不大。腾讯云512台机器的整体TCO成本比上届冠军3377台机器的成本低;同时从比较直观的指标如内存、网络、顺序读写IO等集群整体能力看与去年的差异不大。可以说,今年我们排序比赛成绩的提升是实实在在的,并非由硬件堆砌出来的。同时,我们在软件算法优化方面也做了很多努力。
蒋杰:在硬件和网络方面,我们采取了IBM的PowerPC和迈络思的100Gb网络技术,机器配置选型如下:
网络架构采用了三层架构,如下:
腾讯云大数据服务的实时计算平台能提供单集群上千台规模实时流式计算,在数据存储方面,支持多重数据备份,万亿数据的存储能力。在任务调度方面,支持百万级任务的毫秒级的调用。而且支持故障节点自动发现,自动剔除,业务的自动迁移,关键节点的主从热备,故障的秒级切换。
本次排序分为Partition,Shuffle和Sort三个阶段:
Partition阶段,从本地磁盘中读入分片的输入数据,然后对输入数据进行Range Partition操作将数据进行无重叠区间的分片,Range Partition结束后,输出按照Range大小排序的Range File。
Shuffle阶段,将按照Range大小排序的Range File 文件发送给对应的Sort程序。
Sort阶段,Sort任务等待所需的数据都到齐了,就启动基于基数排序的排序操作,将排序结果写入磁盘。
Partition和Sort阶段是并行执行的,待Sort完成后,输出多个排序文件,由于Shuffle的时候已经按照Range大小进行了排序,最终输出的排序文件在全局是有序的。
蒋杰:参加这次比赛,我们在软件算法上的优化主要有以下三点:
(1)更强大的调度能力。此次比赛,腾讯云参加了GraySort和MinuteSort两个大项的比赛,GraySort比拼的是完成100TB数据排序的耗时,主要评测的是系统对大规模数据的处理能力,MinuteSort比拼的是1分钟内的排序数量,主要评测的是系统的效率。为了在1分钟内完成尽可能多的数据排序,系统任务调度的开销就变得不容忽视,调度效率显得尤为关键,在系统上消耗的时间越少,越利于比赛成绩的提高,得益于平台强大的调度能力,我们在1分钟内完成了55.3TB数据的排序,是之前最好纪录的5倍。我们的调度系统曾做了大量的优化,在腾讯的内部系统上,每天调度达2亿次,在海量系统上得以验证。
(2)内存存储的最大化利用。在排序过程中的中间数据,尽量存储在内存中,当内存中数据达到一定阈值,快要占满整个内存空间的时候,才会启动向磁盘中写入数据,最大化利用内存存储。而我们的系统具备调度感知的能力,当系统内存充足的时候,会让该环节的计算任务完全在内存中完成计算,无需落地到磁盘,极大的提升了系统的处理能力。
(3)并行操作和IO优化。在Partition阶段和Sort阶段,我们都采取了多任务的并行操作。在这里我们会根据机器和网络的性能来调整机器上的并发数,来提高整个系统的运行效率。为了提升网络的传输效率,优化了整个网络传输系统。在网络的传输中,过小的分片数据会带来额外的控制信息的传输,造成网络带宽实际上并不能完全跑满。对此我们采用大数据块的传输,在发送端对小的数据片进行合并,在接收端,对收到的数据包进行聚合后再传递给上层协议栈,来提高整个系统的数据传送能力,从而榨干这些机器间的网络带宽,通过优化,集群的整体吞吐可以得到极大的提升。
蒋杰:腾讯在大数据技术的探索上可以说一直走在业界前列,在十亿级别的用户海量大数据处理中,我们已经踩过了很多坑、重写了大量底层代码,极大的提升了大数据处理的性能和稳定性,如今我们将整套业界领先的技术开放给企业和开发者,将帮助企业把大数据快速落地、转化实际价值。
腾讯云数智是一套一站式的大数据处理平台,使用数智可让技术团队可以专注于代码层的开发,而无需关注集群和组件的性能和稳定性,极大的降低了大数据的使用门槛。在数智平台上提供了业界最丰富的数据开发套件,用户可以一站式的完成从数据清洗、数据建模与分析、可视化呈现、数据治理等一系列操作,支持实时流式数据、离线数据的导入与导出。
值得一提的是数智提供的强大数据分析与挖掘探索能力,多维分析引擎可在数秒内完成在亿万级数据、万级维度的量级下的分析作业。除了数据分析引擎,数智还囊括了机器学习引擎,内置的算法库均经过腾讯海量数据的训练实操,支持图计算、高性能并行计算、深度学习等。
蒋杰: 腾讯云数智将腾讯多年的大数据处理经验首度开放,能够让社会各界享有与腾讯同级的大数据处理能力。对于企业而言,可以在大幅降低人力成本、快速将大数据平台落地的同时,享有高稳定、高性能、高安全的大数据平台。对于开发者而言,无需将时间精力投入到集群的搭建、改进社区版本稳定性等问题上,从而全力投入进业务层与代码层中。
此次的参赛结果是对腾讯多年海量大数据处理能力的认可,也见证了腾讯云在大数据领域已经走在了全球的领军位置。目前,数智大数据处理套件TBDS3.0正式版已经对外发布,数智大数据工坊也在邀测中,可见数智的产品矩阵与能力已经十分完善。同时,腾讯云大数据中的方略产品线,也已经上线了多款产品,包括用户洞察分析、热力图、位置大数据解决方案、舆情监控等等,方略将腾讯数据资产进行有效的整合与安全的利用,让用户使用腾讯云方略即可直接享受大数据资产产生的价值,让企业在信息迸发的时代抢占先机,一同纵横数智、助画方略。
蒋杰:目前许多企业都面临着收集到的图像与音频无法高效智能处理的问题,腾讯云为解决这一系列问题,已经对外开放了一系列AI产品,如万象优图、人脸识别、语音识别、智能客服等服务。优图系列产品能够快速完成对图片的鉴黄、内容识别、人脸检测;智能语音识别服务可高效地满足语音识别、语音合成、声纹识别等语音处理需求;微金小云客服通过大数据与深度学习训练,可让企业拥有自己专属的AI客服。优图的人脸识别准确率已高于人工的识别,微众银行已经将该技术运用到开户流程中,在保证安全性的前提下,极大的提升了开户效率并显著降低成本。企业和开发者可以有效的借助腾讯云开放的腾讯大数据和AI能力,来快速分析其存储的非结构化数据,提升企业的核心竞争力。