编者按
今天是 Hadoop 十岁生日。于 2006 年 1 月 28 日诞生的它改变了企业对数据的存储、处理和分析的过程,加速了大数据的发展,形成了自己的极其火爆的技术生态圈,并受到非常广泛的应用。InfoQ 策划了一系列文章,为大家梳理 Hadoop 这十年的变化,以及技术生态圈状况,本文是第一篇。
1. 引子
什么是大数据?麦肯锡公司的报告《大数据:创新、竞争和生产力的下一个前沿领域》中给出的大数据定义是:大数据指的是规模超过现有数据库工具获取、存储、管理和分析能力的数据集,并同时强调并不是超过某个特定数量级的数据集才是大数据。
国际数据公司(IDC)用四个维度的特征来定义大数据,即数据集的规模(Volume)、数据流动的速度(Velocity)、数据类型的多少(Variety)和数据价值的大小(Value)。
亚马逊的大数据科学家 John Rauser 的定义比较直接:“超过单台计算机处理能力的数据量则为大数据”。
最后我们来看看维基百科上的大数据定义:“Big data is the term for a collection of data sets so large and complex that it becomes difficult to process using on-hand database management tools or traditional data processing applications. ”翻译成中文的意思是:大数据指的是数据规模庞大和复杂到难以通过现有的数据库管理工具或者传统的数据处理应用程序进行处理的数据集合。
上述大数据的概念中无一例外都突出了“大”字。从表面上看,数据规模的增长的确为处理数据带来了很大的问题。具体来说,在同样时间内获取与以前相同价值的数据变得不可为了。换言之,本质问题是数据的价值密度变低了,数据交换速率变慢了,所以催生了很多新型数据处理技术和工具,如 Google 的 GFS 和 MapReduce,Apache Hadoop 生态系统,美国伯克利大学 AMPLab 的 Spark 等;出现了对时间敏感程度不同的计算模式,如批式计算模式、交互式计算模式、流计算模式、实时计算模式等。计算模式的差异只是决定获取价值的技术不同,取决于上层业务需求的不同。实际上,所谓大数据问题的本质应是数据的资产化和服务化,而挖掘数据的内在价值是研究大数据的最终目标。
2. 大数据技术源起 Google
Google 在搜索引擎上所获得的巨大成功,很大程度上是由于采用了先进的大数据管理和处理技术,是针对搜索引擎所面临的日益膨胀的海量数据存储问题以及在此之上的海量数据处理问题而设计的。
Google 提出了一整套基于分布式并行集群方式的基础架构技术,利用软件的能力来处理集群中经常发生的节点失效问题。Google 使用的大数据平台主要包括五个相互独立又紧密结合在一起的系统:分布式资源管理系统 Borg,Google 文件系统(GFS),针对 Google 应用程序的特点提出的 MapReduce 编程模式,分布式的锁机制 Chubby 以及大规模分布式数据库 BigTable。
Borg 是这五个系统中最为神秘的一个,直到 2015 年 Google 才在 EuroSys 2015 上发表了题为“Large-scale cluster management at Google with Borg”的论文。称 Google 内部不仅像计算型的应用,比如 MapReduce、Pregel 等运行在 Borg 上,存储类的应用,比如 GFS,BigTable 和 Megastore 等也运行在上面,真正做到了批处理作业和长周期服务的混合部署和资源动态调度。得益于此项技术,可以使平均资源利用率达到 30%~75% 以上,大大高于业界平均水平的 6%~12%。
GFS 是一个大型的分布式文件系统,它为 Google 云计算提供海量存储,并且与 Chubby、MapReduce 和 BigTable 等技术结合得十分紧密,处于系统的底层。它的设计受到 Google 特殊的应用负载和技术环境的影响。相对于传统的分布式文件系统,为了达到成本、可靠性和性能的最佳平衡,GFS 从多个方面进行了简化。
MapReduce 是处理海量数据的并行编程模式,用于大规模数据集的并行运算。MapReduce 通过“Map(映射)”和“Reduce(化简)”这样两个简单的概念来参加运算。用户只需要提供自己的 Map 函数以及 Reduce 函数就可以在集群上进行大规模的分布式数据处理。这一编程环境能够使程序设计人员编写大规模的并行应用程序时不用考虑集群的可靠性、可扩展性等问题。应用程序编写人员只需要将精力放在应用程序本身,关于集群的处理问题则交由平台来完成。与传统的分布式程序设计相比,MapReduce 封装了并行处理、容错处理、本地化计算、负载均衡等细节,具有简单而强大的接口。正是由于 MapReduce 具有函数式编程语言和矢量编程语言的共性,使得这种编程模式特别适合于非结构化和结构化的海量数据的搜索、挖掘、分析等应用。
Chubby 是提供粗粒度锁服务的一个文件系统,它基于松耦合分布式文件系统,解决了分布式系统的一致性问题。这种锁只是一个建议性的锁而不是强制性的锁。通过使用 Chubby 的锁服务,用户可以确保数据操作过程中的一致性。GFS 使用 Chubby 来选取一个 GFS 主服务器,BigTable 使用 Chubby 指定一个主服务器并发现、控制与其相关的子表服务器。
大规模分布式数据库 BigTable 是基于 GFS 和 Chubby 开发的分布式存储系统。很多应用程序对于数据的组织是非常有规则的。一般来说,数据库对于处理格式化的数据还是非常方便的。但是由于关系数据库要求很强的一致性,很难将其扩展到很大的规模。为了处理 Google 内部大量的格式化以及半格式化数据,Google 构建了弱一致性要求的大规模数据库系统 BigTable。BigTablede 在很多方面和数据库类似,但它并不是真正意义上的数据库。Google 包括 Web 索引、卫星图像数据等在内的很多海量结构化和半结构化数据都是存储在 BigTable 中的。
3. Hadoop 开启了大数据时代的大门
Google 的技术虽好但不开源。如果没有 Doug Cutting 和他的 Hadoop 开源软件,我们就看不到如今大数据技术和应用的飞速发展。Doug Cutting 主导的 Apache Nutch 项目是 Hadoop 软件的源头,该项目始于 2002 年,是 Apache Lucene 的子项目之一。当时的系统架构尚无法扩展到存储并处理拥有数十亿网页的网络化数据。Google 在 2003 年于 SOSP 上公开了描述其分布式文件系统的论文“The Google File System”,为 Nutch 提供了及时的帮助。2004 年,Nutch 的分布式文件系统 (NDFS) 开始开发。同年,Google 在 OSDI 上发表了题为“MapReduce: Simplified Data Processing on Large Clusters”的论文,受到启发的 Doug Cutting 等人开始实现 MapReduce 计算框架并与 NDFS(Nutch Distributed File System)结合起来,共同支持 Nutch 的主要算法。至 2006 年,它逐渐成为一套完整而独立的软件,已经到 Yahoo! 工作的 Doug Cutting 将这套大数据处理软件命名为 Hadoop。2008 年初,Hadoop 成为 Apache 的顶级项目,除 Yahoo! 之外在众多互联网企业中得到应用。
早期的 Hadoop,包括 Hadoop v1 以及更早之前的版本,主要由两个核心组件构成:HDFS 和 MapReduce,其中 HDFS 是 Google GFS 的开源版本,MapReduce 计算框架实现了由 Google 工程师提出的 MapReduce 编程模型。还有一些围绕在 Hadoop 周围的开源项目,为完善大数据处理的全生命周期提供了必要的配套和补充。这些软件常用的有 ZooKeeper、Hive、Pig、HBase、Storm、Kafka、Flume、Sqoop、Oozie、Mahout 等。2012 年 5 月,Hadoop v2 的 alpha 版本发布,其中最重要的变化是在 Hadoop 核心组件中增加了 YARN(Yet Another Resource Negotiator)。YARN 的出现是为了把计算框架与资源管理彻底分离开,解决 Hadoop v1 由此带来的扩展性差、单点故障和不能同时支持多种计算框架的问题。YARN 对标的恰好就是 Google 的 Borg 系统。至此,Hadoop 方才能够与 Google 的大数据平台比肩。
一个好的、有生命力的开源生态系统要有一个核心,这个核心要是差异化和非平凡的,还要有广泛的应用和活跃的社区。Hadoop 恰好具备这三个特征,以 Hadoop 为核心的大数据开源生态系统逐渐形成,Hadoop 也成为自 Linux 以来最成功的开源软件,没有之一。受人民大学信息学院院长杜小勇老师的委托,我在 CNCC 2015 上组织了一个名为“大数据开源生态系统”的论坛。论坛邀请了来自互联网企业、硬件厂商、系统集成商以及学术界的同行分享在大数据开源方面的工作和体会。在最后的 Panel 环节,讨论了为什么要做开源和怎么做开源这两个问题。回答是比较分散的,有开源是唯一选择的,有拉通产业链的,有认为开源是新业态新商业模式的,有认为开源促进技术进步的。总之,在产业链不同的环节上的机构做开源的动机和目标自然是不同的,但只有这样,产业链中不同角色都能够在生态系统中找到自己的位置,这样的生态系统才是健壮的有生命力的,不是吗?
4. Hadoop 的发展历史和应用之路
大数据领域第一个吃螃蟹的是互联网行业。这是因为大数据概念和技术都来源于互联网企业的老大哥 Google 的原因。以 Hadoop 投入实际应用来看:
从 2006 年到 2008 年是 Hadoop 的诞生阶段。只有国外少数几个互联网巨头在尝试,国内互联网行业在学习这项新技术。2006 年,Yahoo! 构建 100 节点规模的 Hadoop 机群用于 Webmap 业务。2007 年,Yahoo! 构建 1000 节点规模的 Hadoop 机群。2008 年,Yahoo! 的 Hadoop 机群扩展到 2000 节点规模,Facebook 贡献 Hive 项目到开源社区。
从 2008 年到 2010 年是 Hadoop 的少年阶段。在互联网行业已经开始投入实际应用,应用集中在网页存储检索,日志处理和用户行为分析等方面。2009 年,Yahoo! 使用 4000 节点的机群运行 Hadoop,支持广告系统和 Web 搜索的研究;Facebook 使用 600 节点的机群运行 Hadoop,存储内部日志数据,支持其上的数据分析和机器学习;百度用 Hadoop 处理每周 200TB 的数据,进行搜索日志分析和网页数据挖掘工作。2010 年,Facebook 的 Hadoop 机群扩展到 1000 节点;百度用 Hadoop 每天可处理 1PB 的数据;中国移动通信研究院基于 Hadoop 开发了“大云”(BigCloud)系统,不但用于相关数据分析,还对外提供服务;淘宝的 Hadoop 系统达到千台规模,用于存储并处理电子商务的交易相关数据。
从 2010 年到 2015 年是 Hadoop 的青年阶段。在互联网行业无不将 Hadoop 作为大数据计算的标准配置,且应用形式趋于多样化;企业计算领域开始实践基于 Hadoop 的大数据应用;在追求大数据处理能力的同时,也开始思考系统适配性和效率问题。互联网行业出现了大量数据分析类应用,比如支付宝的交易数据离线分析系统等;用 Hadoop 与生态系统中的其他软件一起构成更为复杂的应用系统,比如腾讯的广点通精准广告投放系统,电信运营商的基于用户画像的精准营销系统等。除互联网行业外,出现了网络通讯大数据、金融大数据、交通旅游大数据、工业制造大数据、医疗健康大数据、社会治理大数据、教育大数据等,大数据理念和技术已经融入各行各业。Hadoop 源于互联网行业,在应用于企业计算时,需要进行适配,原因在于互联网应用和企业计算应用在需求、服务、研发和运维体系方面有本质的不同。互联网应用业务逻辑简单、服务于海量用户、非固定使用人群、系统的用户体验至上、持续交付、能够快速响应的专业运维;而企业计算应用业务逻辑复杂、有限数量用户、固定使用人群、系统更强调稳定可靠、版本交付、层级式的技术支持。一时间市面上出现了很多面向企业用户的 Hadoop 发行版,以易部署、好配置,以及使用和管理方便为切入点,吸引着企业用户的眼球。
5. Hadoop in China- 国内最早的 Hadoop 交流平台
2008 年 11 月 23 日第一次 Hadoop 技术沙龙合影
技术推广是需要平台的,而好的交流平台对新技术的落地起到极其重要的作用。2008 年,我所在的研究小组想在分布式数据存储方面做一些研究工作,前期调研阶段接触到 Hadoop,其新颖的设计思想得到大家的一致认同,但总是有很多问题和很多想法没有同道中人一起探讨,Hadoop in China 大会正是在这样的形势下自然形成的,其前身是 Hadoop 技术沙龙。第一次举办沙龙是在 2008 年 11 月 23 日,目的是为了让更多的 Hadoop 技术爱好者能够互相认识,并能够在一起交流学术和技术心得。会议邀请了 Yahoo!、Facebook、百度等互联网企业的资深技术人员到场讲解了 Hadoop 技术的原理、应用和很多内部技术细节,与会者均认为受益颇丰。现已广泛使用的 RCFile 技术研究的最初想法就是在这次沙龙上与原 Facebook 工程师邵铮的交流和探讨中确定的。我们又于 2009 年 5 月和 2009 年 11 月分别举办了第二次技术沙龙和第一届 Hadoop in China 大会,后者约有 300 人到会交流讨论 Hadoop 技术。参会人数在 2011 年更是突破千人。经过努力,Hadoop in China 大会逐渐成为集技术研讨、交流和成果展示为一身的综合性技术交流平台,为 Hadoop 技术在国内落地和推广起到非常重要的作用。
Hadoop in China 2011 会场
2012 年,中国计算机学会(CCF)于 10 月正式成立了大数据专家委员会,意在探讨大数据的核心科学与技术问题,推动大数据学科方向的建设与发展,同时构建面向大数据产学研用的学术交流、技术合作与数据共享平台。2013 年,大会正式更名为“中国大数据技术大会 (Big Data Technology Conference,BDTC)”。至此,Hadoop in China 从 60 人规模的小型沙龙发展到国内大数据领域一年一度最重要的技术会议之一。大会曾邀请到包括 Hadoop 创始人 Doug Cutting,Spark 创始人 Ion Stoica 在内的众多国际著名专家到会做特邀报告。
6. 大数据技术的发展趋势
系统架构的专业化。从当今 IT 技术的发展角度看,提出系统结构上的解决方案是“应用驱动的大数据架构与技术”。也就是说根据具体类型应用的需求,在系统架构和关键技术上进行创新。为了降低成本并获得更好的能效,大数据应用系统越来越趋向扁平化、专用化的系统架构和数据处理技术,逐渐摆脱了传统的通用技术体系。比如并行数据库更鲜明的分化为面向事务处理的 OLTP 类数据库和面向分析的 OLAP 类数据库等。传统的应用服务器、数据库服务器和存储服务器这样的典型三层架构受到极大的冲击。应用开发人员更深入的理解计算机系统结构,“程序” = “算法” + “数据结构”将逐渐演变成“程序” = “算法” + “数据结构” + “系统结构”。
大数据生态系统范围扩大。克隆了 Google 的 GFS 和 MapReduce 的 Apache Hadoop 自 2008 年以来逐渐为互联网企业接纳,并成为大数据处理领域的事实标准。但 2013 年出现的 Spark 作为一匹黑马可以说终结了这一神话,大数据技术不再一家独大。由于应用不同导致 Hadoop 一套软件系统不可能满足所有需求,在全面兼容 Hadoop 的基础上,Spark 通过更多的利用内存处理大幅提高系统性能。此外,Scribe、Flume、Kafka、Storm、Drill、Impala、TEZ/Stinger、Presto、Spark/Spark SQL 等的出现并不是取代 Hadoop,而是扩大了大数据技术生态环境,促使生态环境向良性和完整发展。今后在非易失存储层次、网络通信层次、易失存储层次和计算框架层次还会出现更多、更好和更专用化的软件系统。
系统整体效能更为用户重视。在全球互联网企业的努力下,Hadoop 已经可以处理百 PB 级的数据,在不考虑时间维度的前提下,价值密度低的数据可以处理了。在解决了传统关系型数据库技术无法处理如此量级的数据之后,业界正在向系统能效要价值。能效问题一方面体现在系统性能上。互联网服务强调用户体验,原本做不到实时的应用在向实时化靠拢,比如前端系统及业务日志从产生到收集入库的延迟从 1 到 2 天时间进化到 10 秒以内。传统企业无法忍受关系数据库动辄几十分钟的查询分析性能,纷纷求助于性价比更好的技术和产品。这些需求使大数据交互式查询分析、流式计算、内存计算成为业界研发和应用的新方向。能效问题的另一方面体现在系统功耗和成本上。中科院计算所陈云霁研究员领导研究的专用神经网络处理器技术,可大幅加速机器学习负载,与通用芯片和 GPU 相比,计算速度提高几十倍,功耗只有十分之一,整体能效提高 450 倍。百度云存储万台定制 ARM 服务器可节电约 25%,存储密度提升 70%,每瓦特计算能力提升 34 倍(用 GPU 取代 CPU 计算),每 GB 存储成本降低 50%。
个性化服务的需求愈发强烈。个性化对应于互联网服务的长尾部分,这部分需求在传统的系统设计中因为复杂性原因是被舍弃的,但正是这部分体现出个性化服务的需求。个性化服务,即系统能够提供满足不同个体需求的差异化服务,比如个性化推荐,广告精准投放等。就拿个性化推荐技术来说,目前已经开始从简单的商品推荐走向复杂的内容推荐。根据用户的特性与偏好,推荐内容的特征,以及当时的上下文数据(客户端设备类型、用户所处时空数据等),向特定用户提供个性化的内容推荐服务,内容包括商品(包括电商和零售)、广告、新闻和资讯等。在移动设备和移动互联网飞速发展的时代,个性化推荐将成为用户获取信息最直接的渠道之一。
价值挖掘的理论和技术亟待发展。对数据进行浅层分析的理论和技术,主要体现在分布式系统和关系型数据库理论的结合与再创新,目前已经有较大幅度进展。但是,从数据中抽取隐含的信息或者知识,也就是价值挖掘,这方面的理论和技术还比较缺乏。一是缺乏成熟的数据挖掘建模方法和工具,经验对于挖掘出有价值信息的影响甚大,原始数据与隐含信息之间存在技术缺失,所以“啤酒 + 尿布”的案例并不是天天都能产生的。二是机器学习和深度学习技术面临应用问题。与大数据相结合,已经在诸如语音识别、图像识别、广告推荐和风险控制等场景中得以初步应用,但这方面的技术和软件工具成熟度不高,还有很大提升空间。此外,机器学习和深度学习的应用场景还不够广泛,这既是机遇也是挑战。
7. 结语
Hadoop 开源软件自 2006 年起至今已经走过十个年头,这对于任何软件来说生命周期不可谓不长。但是,Hadoop 也在经历来自其他开源黑马的冲击。Spark 在早期发展阶段通过全面兼容 Hadoop 而借力于后者成熟的生态系统。时至今日,Spark 正在挑战 Hadoop 的权威,因为 Spark 已经将发展目标定位在取代 Hadoop。Hadoop 老矣,尚能饭否? Hadoop 的近 100 位 Committer 在积极的为 Hadoop 谋划未来,让我们拭目以待吧!我们已经步入数据化全覆盖的时代,社会生活、各行各业都在因数据而发生巨变。近年来,大数据已成为国家层面的基础性战略资源,正日益对全球生产、流通、分配、消费活动以及经济运行机制、社会生活方式和国家治理能力产生重要影响。推动大数据发展已成为国际社会的行动共识。国务院于 2015 年 8 月发布了《促进大数据发展行动纲要》。纲要明确提出将全面推进我国大数据发展和应用,加快建设数据强国。在这样的背景下,希望本文有助于读者理解大数据概念及其技术发展历史,并促进大数据技术的推广和应用。
作者简介
查礼,2003 年博士毕业以来一直从事分布式系统的研发工作,现为中国科学院计算技术研究所副研究员,CCF 大数据专家委员会委员。自 2008 年起与 Apache Hadoop、Hive 以及 HBase 等开源社区密切合作,相关大数据技术研究成果通过软件开源在业界得到广泛应用。是中国大数据技术大会(原 Hadoop in China)发起人和组织者,该会议目前已成为专注于大数据技术的国内最具影响力的技术大会之一。曾获 2007 及 2012 年度国家科技进步二等奖。
评论