淘宝“云梯”的前世今生

当下中国超大规模的单Master节点Hadoop集群在哪里?在淘宝。

    据悉,淘宝Hadoop集群拥有2860个节点,清一色基于英特尔处理器的x86服务器,其总存储容量50PB,实际使用容量超过40PB,日均作业数高达15万,为淘宝网的日常运营做出了关键支撑。对了,它还有一个很美丽的名字:“云梯”。

近日,《网络世界》记者有幸采访到了阿里集团技术共享平台核心系统研发部海量数据技术专家罗李。作为淘宝“云梯”集群元老级创建者,以及目前的负责人,他详细讲解了Hadoop在淘宝的应用与发展。

    “在2008年之前,淘宝内部一些业务团队,纷纷搭建了自己的Hadoop集群,但规模都很小,出了问题也都各自解决。”罗李说,“考虑到淘宝的业务确实对分布式计算系统有需要,再加上这种分散模式小集群的资源利用率不高,整个集团就决定建立一个统一的、大的分布式计算集群,为各业务线服务。”

    至于为什么选择Hadoop,罗李表示,当时能够达到商用水准的分布式计算技术也只有Hadoop。不过,他说:“当时整个淘宝并没有一个对Hadoop内核真正了解的人,后来是抽调了雅虎中国的核心技术人员,在2008年10月成立了专门团队。”

    “2008年我也是刚进淘宝,就直接被分配到这个团队,那时整个团队包括我才四个人。到2009年,我们的‘云梯’集群刚搭起来的时候,才300台规模。”罗李告诉记者。

    短短不过四年时间,“云梯”集群已经扩张到近2900台规模,成为中国规模最大的单Master节点Hadoop集群。而伴随“云梯”集群成长的罗李,也成为了中国当下为数不多的、真正精通Hadoop的高级技术人才。

Hadoop在淘宝的发展

    谈起“云梯”集群名字的由来,这竟是一个有几分“无心插柳柳成行”意味的故事。原来,出于安全性等多重考虑,当时阿里集团高层是决心自主研发一套有独立自主知识产权的分布式计算系统,即后来代号为“飞天”的大规模分布式计算系统。而罗李他们研发的这个基于开源Hadoop技术的集群,最初只是被定位成一个临时的、有过渡性质的系统,目的是让淘宝的业务人员提前熟悉和使用分布式计算系统,待“飞天”成熟后再将业务移植过来。

    “我们一开始就知道我们是为他们(‘飞天’系统)铺路的,所以,既然他们叫‘飞天’,那我们就叫‘云梯’好了,隐含奉献的意思。”罗李说。

    只是,世事难料,大家都没有想到,四年后的今天大数据和Hadoop会如此之火,发展前景堪称一片光明,而淘宝凭借“云梯”集群也成为该技术领域的应用先锋。当然,阿里集团一直在坚持研发“飞天”集群,并取得了阶段性的成果。因此,在阿里集团内部,其实是“飞天”和“云梯”两大分布式计算系统并立的局面。

    在应用中发展

    从2009年的300台发展到目前2860台,这绝不只是一个机器简单堆叠的过程,而是耗费了淘宝研发人员无数的智慧与汗水。Hadoop技术本身在淘宝也获得了长足的发展。

淘宝“云梯”的前世今生_第1张图片

    淘宝对Hadoop进行深度重构的最重要一次实践,当属该公司根据自身的业务需求,开发了自己的Hadoop分支——ADFS。

    据介绍,ADFS主要解决的是HDFS NameNode在设计上存在单点故障、内存瓶颈(因为所有的数据都是存入内存,长期以往,NameNode必将遭遇内存扩展瓶颈),以及集群重启时间过长,期间无法对集群进行写操作等问题。

    而ADFS原理简单地说就是将非热点数据存入“数据库”,而非NameNode的内存。罗李说:“由于数据存放在数据库里,只要数据库‘不挂’就没有问题,NameNode的单点故障问题由此解决,同时也一并解决了内存瓶颈。系统升级不需要再停机,重启时间也由原来的一两个小时缩短到5分钟之内。总之,ADFS能提供10亿文件/目录的管理能力,其稳定性、性能和可维护性不输于甚至优于现有系统。”此外,值得一提的是,淘宝已经将ADFS开源在GitHub之上。

    另一大改进,就是为减少磁盘使用量而实施了HDFS Raid技术。

    “HDFS出于可靠性考虑,都是将一份数据存成三份,这意味着1GB的数据占用了3GB的存储容量,可靠性是有了,但经济性并不好。HDFS Raid就相当于Raid 10,原来1GB的数据所需要的空间从原来的3GB降到2.4GB,对我们来讲,就是上百万资金的节省,而可靠性却并没有丧失。”罗李说。

    不过,罗李表示,HDFS Raid技术来源于Facebook,他们是在Facebook提供的版本上做了些改进。

    此外,还一个无法被描述成“项目”的改进就是持续不断地“优化”。“虽然Hadoop的优势之一就是不够了就可以加机器,但加机器意味着更大的存储容量、更大的计算需求和更大的网络流量,对主节点都会带来新的压力,因此,每次在扩展之前,我们都要对系统进行评估,都需要优化代码。”罗李说。

    罗李颇为骄傲地告诉记者,由于不断地对Hadoop内核进行优化,淘宝版本的Hadoop在性能上“比一些社区的Hadoop版本高出30%~50%”。

    “毕竟,我们这么大的规模作支撑。因为系统的性能瓶颈只有在一定规模下才能暴露,而我们甚至将Java内核的漏洞都跑出来了。”罗李说。

    不过,罗李坦承,自从今年七月份新的“云梯”版本上线之后,他们发现通过优化代码提高系统性能的空间越来越小了。“所以,我们开始和运维团队一起合作,打算去从硬件层面下手,例如购买更高性能的CPU、闪存、万兆网卡等。事实上,我们现在最紧缺的资源就是CPU和磁盘。”他说。

    同时,罗李指出,对很多公司而言,在规模不是特别大的情况下,通过购买更强劲的硬件来提高集群性能也是一个好办法,而且其成本不一定比维持一支技术团队要高。而硬件产业链的上游厂商英特尔则公开表示,英特尔未来首要任务之一,就是要打造适用于大数据应用的“芯”,该公司今年三月发布的全新至强处理器E5产品家族,就能为分布式计算带来更优性能、能效、可扩展性和可管理性。同时,英特尔还将帮助合作伙伴打造可承载大数据应用的基础设施。

    关于“云梯”集群未来的发展方向,罗李表示,短期内是存储结构和技术进行优化部署ADFS,并且开发HDFS NameNode HA技术,而长期来说,“云梯”将演变成多Master节点Hadoop集群。

    如今,Hadoop之火有目共睹,那什么样的公司适合采尝试这一新兴技术?罗李回答道:“还应该是从业务角度出发。有海量数据需要处理,并且计算模型并不太复杂,对数据进行处理的过程可以分成一个个小的步骤去完成,就可以尝试Hadoop 技术。”

Ref: http://www.cstor.cn/textdetail.asp?id=2226

你可能感兴趣的:(淘宝“云梯”的前世今生)