探秘淘宝 Hadoop 集群

CNW

《网络世界》记者/周源

    当下中国最大规模的单 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 会如此之火,发展前景堪称一片光明,而淘宝凭借“云梯”集群也成为该技术领域的应用先锋。当然,阿里集团一直在坚持研发“飞天”集群,并取得了阶段性的成果。因此,在阿里集团内部,其实是“飞天”和“云梯”两大分布式计算系统并立的局面。

在应用中发展

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

    淘宝对 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  技术。”

【box】淘宝对 Hadoop 的优化

  • 使用 SNN 做 checkpoint,减少集群重启时间
  • 使用更新的 JDK,采用 CMS GC 算法
  • HDFS 实现文件追加 (append) 功能,支持 Hbase
  • HDFS Namenode 代码优化,提高 RPC 的吞吐量和较少延迟
  • HDFS Raid,减少磁盘使用量
  • 改造 Jobtracker 的调度器,支持按组划分资源
  • 改造 JobHistroy,实现 Jobtracker HA
  • 支持多客户端版本,例如,HDP、CDH 等等1

产品和性能信息

open

1. 媒体文章均为第三方观点,仅供参考, 不代表英特尔官方观点。