您的位置首页  婴幼护理  3-6岁

一张图回顾Hadoop十年:Hadoop老矣尚能饭否?

  • 来源:互联网
  • |
  • 2017-05-18
  • |
  • 0 条评论
  • |
  • |
  • T小字 T大字

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

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

  大数据的定义聚焦在“大“。从表面上看,数据规模的增长的确为处理数据带来了很大的问题。具体来说,在同样时间内获取与以前相同价的数据变得不可为了。换言之,本题是数据的价密度变低了,数据交换速率变慢了,所以催生了很多新型数据处理技术和工具,如 Google 的 GFS 和 MapReduce,Apache Hadoop 生态系统,美国伯克利大学 AMPLab 的 Spark 等;出现了对时间程度不同的计算模式,如批式计算模式、交互式计算模式、流计算模式、实时计算模式等。计算模式的差异只是决定获取价的技术不同,取决于上层业务需求的不同。

  实际上,所谓大数据问题的本质应是数据的资产化和服务化,而挖掘数据的内在价是研究大数据的最终目标。

  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 中的。

  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 环节,讨论了为什么要做开源和怎么做开源这两个问题。回答是比较分散的,有开源是唯一选择的,有拉通产业链的,有认为开源是新业态新商业模式的,有认为开源促进技术进步的。总之,在产业链不同的环节上的机构做开源的动机和目标自然是不同的,但只有这样,产业链中不同角色都能够在生态系统中找到自己的,这样的生态系统才是健壮的有生命力的,不是吗?

  大数据领域第一个吃螃蟹的是互联网行业。这是因为大数据概念和技术都来源于互联网企业的老大哥 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 在内的众多国际著名专家到会做特邀报告。

  系统架构的专业化。从当今 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%。

  个性化服务的需求愈发强烈。个性化对应于互联网服务的长尾部分,这部分需求在传统的系统设计中因为复杂性原因是被的,但正是这部分体现出个性化服务的需求。个性化服务,即系统能够提供满足不同个体需求的差异化服务,比如个性化推荐,广告精准投放等。就拿个性化推荐技术来说,目前已经开始从简单的商品推荐复杂的内容推荐。根据用户的特性与偏好,推荐内容的特征,以及当时的上下文数据(客户端设备类型、用户所处时空数据等),向特定用户提供个性化的内容推荐服务,内容包括商品(包括电商和零售)、广告、新闻和资讯等。在移动设备和移动互联网飞速发展的时代,个性化推荐将成为用户获取信息最直接的渠道之一。

  价挖掘的理论和技术亟待发展。对数据进行浅层分析的理论和技术,主要体现在分布式系统和关系型数据库理论的结合与再创新,目前已经有较大幅度进展。但是,从数据中抽取隐含的信息或者知识,也就是价挖掘,这方面的理论和技术还比较缺乏。一是缺乏成熟的数据挖掘建模方法和工具,经验对于挖掘出有价信息的影响甚大,原始数据与隐含信息之间存在技术缺失,所以“啤酒尿布”的案例并不是天天都能产生的。二是机器学习和深度学习技术面临应用问题。与大数据相结合,已经在诸如语音识别、图像识别、广告推荐和风险控制等场景中得以初步应用,但这方面的技术和软件工具成熟度不高,还有很大提升空间。此外,机器学习和深度学习的应用场景还不够广泛,这既是机遇也是挑战。

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

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

  m0_37778126:如果把获取坐标的方法放到onCreate中调用得到的就是0,在点击事件的得到的就是正确的,能问一下为...

  fore4321:按照题目要求,需要无冗余接受连接两个字符串,同时将这两个字符串无冗余的连接起来。通过数组实现的话,满...

  fore4321:按照题目要求,需要无冗余接受连接两个字符串,同时将这两个字符串无冗余的连接起来。通过数组实现的话,满...

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186
友荐云推荐
网站推荐更多>>