今天是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月发布了《促进大数据发展行动纲要》。纲要明确提出将全面推进我国大数据发展和应用,加快建设数据强国。在这样的背景下,希望本文有助于读者理解大数据概念及其技术发展历史,并促进大数据技术的推广和应用。

大数据技术的回顾与展望 ——写在Hadoop十周年纪念相关推荐

  1. 阿里巴巴大数据技术关键进展及展望

    摘要:2019杭州云栖大会大数据技术专场,由阿里云通用计算平台负责人关涛带来以 "阿里巴巴大数据技术关键进展及展望" 为主题的演讲.本文首先讲解了从阿里巴巴的角度看待大数据领域的客 ...

  2. 大数据技术原理与应用(第八章 Hadoop再探讨)

    目录 8.1 Hadoop的优化与发展 Hadoop1.0的局限与不足 Hadoop进行的改进的提升 Hadoop模块的自身改进:从1.0到2.0 Hadoop生态系统2.0新增组件 8.2 HDFS ...

  3. 笔记:分布式大数据技术原理(二)构建在 Hadoop 框架之上的 Hive 与 Impala

    """ 有了 MapReduce,Tez 和 Spark 之后,程序员发现,MapReduce 的程序写起来真麻烦.他们希望简化这个过程.这就好比你有了汇编语言,虽然你几 ...

  4. 学完大数据基础,可以按照我写的顺序学下去

    首先给大家介绍什么叫大数据,大数据最早是在2006年谷歌提出来的,百度给他的定义为巨量数据集合,辅相成在今天大数据技术任然随着互联网的发展,更加迅速的成长,小到个人,企业,达到国家安全,大数据的作用可 ...

  5. 大数据技术之Canal入门篇

    大数据技术之Canal入门篇 文章目录 大数据技术之Canal入门篇 写在前面 第 1 章 Canal 入门 1.1 什么是 Canal 1.2 MySQL 的Binlog 1.2.1 什么是 Bin ...

  6. 大数据技术学习路线指南

    大数据技术作为决策神器,日益在社会治理和企业管理中起到不容忽视的作用,美国,欧盟都已经将大数据研究和使用列入国家发展的战略,类似谷歌,微软,百度,亚马逊等巨型企业也同样把大数据技术视为生命线以及未来发 ...

  7. 01大数据技术之大数据概论

    01大数据技术之大数据概论(老师:尚硅谷) 文章目录 01大数据技术之大数据概论(老师:尚硅谷) 第1章 大数据概念 第2章 大数据特点(4V) 第3章 大数据应用场景 第4章 大数据发展前景(202 ...

  8. 限时早鸟票 | 2019 中国大数据技术大会(BDTC)超豪华盛宴抢先看!

    2019 年12月5-7 日,由中国计算机学会主办,CCF 大数据专家委员会承办,CSDN.中科天玑数据科技股份有限公司协办的 2019 中国大数据技术大会,将于北京长城饭店隆重举行.届时,超过百位技 ...

  9. BDTC 2017 | 中国大数据技术大会全日程和讲师曝光

    2017年12月7-9日,中国大数据技术大会(Big Data Technology Conference 2017,BDTC 2017)将在北京新云南皇冠假日酒店隆重举行. 2008年,作为中国大数 ...

最新文章

  1. self attentin Q K V心得
  2. windows编程,消息函数中拦截消息的问题
  3. LVS入门篇(五)之LVS+Keepalived实战
  4. 微服务 松耦合_超值干货:微服务架构下如何解耦,对于已经紧耦合下如何重构?...
  5. 继扫楼推广后,P图病历也可发起筹款,水滴筹回应...
  6. python中的作用域_python 模块的作用域
  7. Linux中的pipe(管道)与named pipe(FIFO 命名管道)
  8. PHP大文件分割上传(分片上传)
  9. Atitit 防止迟到与防止打卡打不上解决方案 attilax总结
  10. 网络安全课第三节 SQL 注入的检测与防御
  11. linux gz解压 指定目,linux解压tar.gz到指定文件夹或目录
  12. Xcode 5设置Deployment Target
  13. 计算机常用的英语单词及缩写,常见计算机英语缩写及单词
  14. linux mantis安装 yum,CentOS 安装和配置 Mantis
  15. html 滑动刻度尺,js实现移动端H5页面手指滑动刻度尺功能
  16. Unity篇——Minimap小地图
  17. 有效预防xss_预防XSS攻击的一些方法整理
  18. yolo模型转换:pytorch -> onnx -> caffe
  19. 微信小程序IOS sticky 兼容写法
  20. rabbitmq添加插件和配置文件的添加

热门文章

  1. 比亚迪秦Pro修改默认导航为高德地图
  2. SPI总线协议及SPI时序图详解
  3. 涂抹果酱_2015年全球游戏果酱
  4. js中终止forEach循环的方法
  5. 一个c程序的执行是从哪里开始到哪里结束
  6. 这个春天,有忧伤拂面
  7. 虚拟机启动后网卡不见了
  8. component-kv设计与实现
  9. BDE, dbGo, dbExpress的抉擇
  10. 黑客代码cmd集合/幻隐网络科技