于 2006 年 1 月 28 日诞生的它改变了企业对数据的存储、处理和分析的过程,加速了大数据的发展,形成了自己的极其火爆的技术生态圈,并受到非常广泛的应用。在此为大家梳理 Hadoop 这十年的变化,以及技术圈的生态状况,为 Hadoop“庆生”。

  1、引子什么是大数据?

  大数据指的是规模超过现有数据库工具获取、存储、管理和分析能力的数据集,并同时强调并不是超过某个特定数量级的数据集才是大数据。

  ——by 麦肯锡《大数据:创新、竞争和生产力的下一个前沿领域》

  大数据的定义聚焦在“大“。从表面上看,数据规模的增长的确为处理数据带来了很大的问题。具体来说,在同样时间内获取与以前相同价值的数据变得不可为了。换言之,本质问题是数据的价值密度变低了,数据交换速率变慢了,所以催生了很多新型数据处理技术和工具,如 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 年,我所在的研究小组想在分布式数据存储方面做一些研究工作,前期调研阶段接触到 Hadoop,其新颖的设计思想得到大家的一致认同,2008 年 11 月 Hadoop 技术沙龙顺势成立,后来发展成 Hadoop in China 大会。

  2012 年,中国计算机学会(CCF)于 10 月正式成立了大数据专家委员会。2013 年,大会正式更名为“中国大数据技术大会(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 老矣,尚能饭否?

  Hadoop 开源软件自 2006 年起至今已经走过十个年头,这对于任何软件来说生命周期不可谓不长。但是,Hadoop 也在经历来自其他开源黑马的冲击。Spark 在早期发展阶段通过全面兼容 Hadoop 而借力于后者成熟的生态系统。时至今日,Spark 正在挑战 Hadoop 的权威,因为 Spark 已经将发展目标定位在取代 Hadoop。Hadoop 老矣,尚能饭否?Hadoop 的近 100 位 Committer 在积极的为 Hadoop 谋划未来,让我们拭目以待吧!

  作者简介:

  查礼,2003 年博士毕业以来一直从事分布式系统的研发工作,现为中国科学院计算技术研究所副研究员,CCF 大数据专家委员会委员。自 2008 年起与 Apache Hadoop、Hive 以及 HBase 等开源社区密切合作,相关大数据技术研究成果通过软件开源在业界得到广泛应用。是中国大数据技术大会(原 Hadoop in China)发起人和组织者。

3
0
 
 
来自: InfoQ
 

Hadoop十年的更多相关文章

  1. 常见的Hadoop十大应用误解

    常见的Hadoop十大应用误解 1.        (误解) Hadoop什么都可以做 (正解) 当一个新技术出来时,我们都会去思考它在各个不同产业的应用,而对于平台的新技术来说,我们思考之后常会出现 ...

  2. Hadoop十年解读与发展预测

    编者按:Hadoop于2006年1月28日诞生,至今已有10年,它改变了企业对数据的存储.处理和分析的过程,加速了大数据的发展,形成了自己的极其火爆的技术生态圈,并受到非常广泛的应用.在2016年Ha ...

  3. 【征文】Hadoop十周年特别策划——我与Hadoop不得不说的故事

    2016年是Hadoop的十周年生日,在今年,CSDN将以技术和实战为主题与大家共同为Hadoop庆生.其主要内容包含Hadoop专业词典.系列视频技术解析.Hadoop行业实践.线上问答.线下沙龙. ...

  4. hadoop(十)hdfs上传删除文件(完全分布式七)|12

    集群测试 上传小文件到集群,随便选择一个小文件上传到hdfs的根目录 [shaozhiqi@hadoop102 hadoop-3.1.2]$ bin/hdfs dfs -put wcinput/wc. ...

  5. 一篇文看懂Hadoop:风雨十年,未来何去何从

    本文分为技术篇.产业篇.应用篇.展望篇四部分 技术篇 2006年项目成立的一开始,“Hadoop”这个单词只代表了两个组件——HDFS和MapReduce.到现在的10个年头,这个单词代表的是“核心” ...

  6. Hadoop! | 大数据百科 | 数据观 | 中国大数据产业观察_大数据门户

        你正在使用过时的浏览器,Amaze UI 暂不支持. 请 升级浏览器 以获得更好的体验! 深度好文丨读完此文,就知道Hadoop了! 来源:BiThink 时间:2016-04-12 15:1 ...

  7. bigdata_一篇文看懂Hadoop

    本文转载:暂未找到原出处,如需署名 请联系 我们很荣幸能够见证Hadoop十年从无到有,再到称王.感动于技术的日新月异时,希望通过这篇内容深入解读Hadoop的昨天.今天和明天,憧憬下一个十年. 本文 ...

  8. 【Hadoop 10周年】我与Hadoop不得不说的故事

    什么是Hadoop        今年是2016年,是hadoop十岁的生日,穿越时间和空间,跟她说一声生日快乐,二千零八年一月二十八号,是一个特别的日子,hadoop带着第一声啼哭,来到了这个世界, ...

  9. centos7配置hadoop集群

    一:测试环境搭建规划: 主机名称 IP 用户 HDFS YARN hadoop11 192.168.1.101 hadoop NameNode,DataNode NodeManager hadoop1 ...

随机推荐

  1. iOS使用正则匹配限制输入密码格式

    1.代码实现"密码至少为9位,并需包含大写字母.小写字母.数字或特殊字符等三种" 返回0.1.2为格式不正确,返回4为密码格式正确 -(int)checkIsHaveNumAndL ...

  2. Delphi 7里Messages.pas里所有104种重定义消息种类,180种不同的消息名称

    Delphi 7里Messages.pas里所有消息.经统计,共104种重定义消息种类,方便使用,180种不同的消息名称.省得像VC里一样,处处自己解析wParam和LParam参数进行分析.有空我要 ...

  3. Java语言实现简单FTP软件------>上传下载管理模块的实现(十一)

    1.上传本地文件或文件夹到远程FTP服务器端的功能. 当用户在本地文件列表中选择想要上传的文件后,点击上传按钮,将本机上指定的文件上传到FTP服务器当前展现的目录,下图为上传子模块流程图 选择好要上传 ...

  4. 教你管理SQL数据库系列(1-4)

    原文 教你管理 SQL Server 数据库(1)数据库的结构  http://bbs.51cto.com/thread-1084951-1.html教你管理 SQL Server 数据库(2)系统数 ...

  5. Symfony 没有找到数据库驱动An exception occured in driver: could not find driver

    如果一直报这个错误, 第一,你本地没有相关的数据库驱动(mysql:-->pdo_myql,postgresql-->pdo_pgsql等); 需要执行 php -m|grep -i pd ...

  6. java面向对象入门之方法参数的传递

    /* Name : Power by :Stuart Date:2015.4.25 */ class PassOn{ //创建show方法,把i传入,输出i+1的结果 public void show ...

  7. Mysql——JDBC编程 简单的例子

    第一类连接Mysql方法见下图: 第二类连接Mysql方法:(跟第一类差不多,并提供查询操作) 首先在Mysql中建立testjdbc数据库,在该数据库下面建立Student表: 参考代码: CREA ...

  8. java-从这里开始认识

    <java是什么:>Programming language 程序语言Development environment 开发环境Application environment 应用环境Dep ...

  9. 性能强劲的Tokyo Cabinet 和 Tokyo Tyrant

    Tokyo Cabinet Tokyo Cabinet (简称TC)是Mikio Hirabayashi开发的一种DBM的开发库,其数据文件只有一个,里面存放多个<key,value>的数 ...

  10. 为UniDBEdit添加拖拽属性

    不知是作者Fashard的疏忽还是有意,UniDBEdit的拖拽属性居然没有发布出来(其他组件都已发布).加上其实也很简单. 打开source目录下的uniDBEdit.pas单元,在TUniDBEd ...