Hadoop的辉煌还能延续多久?
摘要:Hadoop已经成为大数据的代名词。短短几年间,Hadoop从一种边缘技术成为事实上的标准。而另一方面,MapReduce在谷歌已不再显赫。当企业瞩目MapReduce的时候,谷歌好像早已进入到了下一个时代。

Hadoop技术已经无处不在。不管是好是坏,Hadoop已经成为大数据的代名词。短短几年间,Hadoop从一种边缘技术成为事实上的标准。看来,不仅现在Hadoop是企业大数据的标准,而且在未来,它的地位似乎一时难以动摇。
谷歌文件系统与MapReduce
我们先来探讨一下Hadoop的灵魂——MapReduce。面对数据的爆炸性增长,谷歌的工程师Jeff Dean和Sanjay Ghemawat架构并发布了两个开创性的系统:谷歌文件系统(GFS)和谷歌MapReduce(GMR)。前者是一个出色而实用的解决方案-使用常规的硬件扩展并管理数据,后者同样辉煌,造就了一个适用于大规模并行处理的计算框架。
谷歌MapReduce(GMR)为普通开发者/用户进行大数据处理提供了简易的方式,并使之快速、具备容错性。谷歌文件系统(GFS)和谷歌MapReduce(GMR)也为谷歌搜索引擎对网页进行抓取、分析提供了核心动力。
再回头看看开源世界中的Hadoop,Apache Hadoop的分布式文件系统(HDFS)和Hadoop MapReduce完全是谷歌文件系统(GFS)和谷歌MapReduce(GMR)的开源实现。Hadoop项目已经发展成为一个生态系统,并触及了大数据领域的方方面面。但从根本上,它的核心是MapReduce。
Hadoop是否可以赶超谷歌?
一个有趣的现象是,MapReduce在谷歌已不再显赫。当企业瞩目MapReduce的时候,谷歌好像早已进入到了下一个时代。事实上,我们谈论的这些技术早就不是新技术了,MapReduce也不例外。
我希望在后Hadoop时代下面这些技术能够更具竞争性。尽管许多Apache社区的项目和商业化Hadoop项目都非常活跃,并以来自HBase、Hive和下一代MapReduce(YARN)的技术不断完善着Hadoop体系,我依然认为,Hadoop核心(HDFS和Zookeeper)需要脱离MapReduce并以全新的架构增强自己的竞争力,真正与谷歌技术一较高下。
过滤不断增长的索引,分析不断变化的数据集。Hadoop的伟大之处在于,它一旦开始运行,就会飞速地分析你的数据。尽管如此,在每次分析数据之前,即添加、更改或删除数据之后,我们都必须将整个数据集进行流式处理。这意味着,随着数据集的膨胀,分析时间也会随之增加,且不可预期。
那么,谷歌又是怎么做到搜索结果越来越实时呈现呢?一个名为Percolator的增量处理引擎取代了谷歌MapReduce(GMR)。通过对新建、更改和已删除文档的处理,并使用二级索引进行高效的分类、查询,谷歌能够显著地降低实现其目标的时间。
Percolator的作者写道:“将索引系统转化为一个增量系统……文档平均处理延迟的因子降低到了现在的100。”这句话的意思是,索引Web上新内容的速度比之前MapReduce系统快了100倍。
谷歌Dremel即时数据分析解决方案
谷歌和Hadoop社区曾致力于构建基于MapReduce的易用性即时数据分析工具,如谷歌的并行处理语言Sawzall,Apache Pig和Hive。但对熟知SQL的人们而言,他们忽略了一个基本事实-构建MapReduce的目标就在于管理数据处理工作。它的核心能力在于工作流管理,而不是即时数据分析。
与之形成鲜明对比的是,很多BI或数据分析查询基本上都要求即时、交互和低延迟。这意味着,使用Hadoop不仅需要规划流程图,而且需要为许多查询分析裁减不必要的工作流。即便如此,我们也要花费数分钟等待工作开始,然后花费数小时等待工作流完成,并且这个过程也非常不利于交互式体验。因此,谷歌研发了Dremel予以应对。Dremel是Google 的“交互式”数据分析系统,可以在几秒钟内处理PB级别的数据,并能轻松应对即时查询。
Google Dremel的设计特点:
Dremel是一个可扩展的大型系统。在一个PB级别的数据集上面,将任务缩短到秒级,无疑需要大量的并发。磁盘的顺序读速度在100MB/S上下,那么在1S内处理1TB数据,意味着至少需要有1万个磁盘的并发读! Google一向是用廉价机器办大事的好手。但是机器越多,出问题概率越大,如此大的集群规模,需要有足够的容错考虑,保证整个分析的速度不被集群中的个别节点影响。
Dremel是MapReduce的补充。和MapReduce一样,Dremel也需要GFS这样的文件系统作为存储层。在设计之初,Dremel并非是MapReduce的替代品,它只是可以执行非常快的分析,在使用的时候,常常用它来处理MapReduce的结果集或者用来建立分析原型。
Dremel的数据模型是嵌套的。互联网数据常常是非关系型的。Dremel还需要有一个灵活的数据模型,这个数据模型至关重要。Dremel支持一个嵌套的数据模型,类似于JSON。而传统的关系模型,由于不可避免的有大量的JOIN操作,在处理如此大规模的数据的时候,往往是有心无力的。
Dremel中的数据是采用列式存储的。使用列式存储,分析的时候,可以只扫描需要的那部分数据的时候,减少CPU和磁盘的访问量。同时列式存储是压缩友好的,使用压缩,可以综合CPU和磁盘,发挥最大的效能。
Dremel结合了Web搜索和并行DBMS的技术。Dremel借鉴了Web搜索中的“查询树”的概念,将一个相对巨大复杂的查询,分割成较小较简单的查询。大事化小,小事化了,能并发的在大量节点上跑。另外,和并行DBMS类似,Dremel可以提供了一个SQL-like的接口,就像Hive和Pig那样。
谷歌的图数据计算框架Pregel
谷歌MapReduce是专门为抓取、分析世界上最庞大的图形架构-internet而设计的,但针对大规模图算法(如图遍历(BFS)、PageRank,最短路径(SSSP)等)的计算则显得效率低下。因此,谷歌构建了Pregel。
Pregel给人的印象非常深刻。Pregel不仅能高效执行SSSP或PageRank算法,更令人惊讶的是,公布的数据显示Pregel处理一个有着几十亿节点、上万亿条边的图,只需数分钟即可完成,其执行时间随着图的大小呈线性增长。
Pregel基于BSP模型,就是“计算”-“通信”-“同步”的模式:
- 输入输出为有向图
- 分成超步
- 以节点为中心计算,超步内每个节点执行自己的任务,执行节点的顺序不确定
- 两个超步之间是通信阶段
在Pregel中,以节点为中心计算。Step 0时每节点都活动着,每个节点主动“给停止投票”进入不活动状态。如果接收到消息,则激活。没有活动节点和消息时,整个算法结束。容错是通过检查点来做的。在每个超步开始的时候,对主从节点分别备份。
总结
尽管当前大数据技术的核心依然是Hadoop,但谷歌却已经为我们展现了许多更先进的大数据技术。谷歌开发这些技术的本意并不是要立刻抛弃掉MapReduce,但毫无疑问这是未来大数据技术的趋势。尽管已经出现了上述大数据技术的开源实现,但我们不禁要问,Hadoop的辉煌还能延续多久?(张志平/编译)
Hadoop的辉煌还能延续多久?的更多相关文章
- Amazon及其亏本诱饵策略还能坚持多久?
Amazon 刚刚公布了最新的财报,亏损 4100 万美元.这是这家电子商务巨头连续 5 个季度以来的第 3 次亏损.但是华尔街似乎却一片叫好声,当日 Amazon 的股价也涨了近 8 个点达 359 ...
- Android 还可以走多久?
最近,有位知识星球的球友问我这么一个问题: 我做 Android 开发五年多时间了,但是最近总是很焦虑,看着人工智能越来越火,很担心 Android 要不行了,想问下,我现在要转行么?Android ...
- 小黄车ofo法人被限制出境,它究竟还能撑多久?
因为季节的原因,现在正是骑车的好时候,而且北京也开通了一条自行车的专用路.但就是在这么好的时候,我们发现,路边的小黄车却越来越少了,而且它的麻烦还不断! ofo法人被限制出境 6月12日消息,据上海市 ...
- “三巨头”有变化,BAT还能走多久?
在腾讯市值超越阿里巴巴后,市场分析多数认为,当年的BAT“三巨头”时代已经彻底结束,进入了“双寡头”时代了 从对外投资来看,BAT不同的投资逻辑可以推测其战略方向 撰文/梁云风 时评员,关注财经与互联 ...
- CDR X6低价还能持续多久?官方回应18年元旦过后要涨价
目前,CDR X6特价活动,从双十二的到18年的元旦,火热程度一直屡刷新高,究其原因,其实不是大家不需要,只是这个平面设计软件价格实在太高(CDR X8/8200:CDR 2017/9500一套),尤 ...
- JAVA未来前景还能持续多久
有很多人一直在说JAVA现在已经饱和了,已经没有必要学Java,程序员已经是严重过剩,行业人才竞争状况更是恶性的之类的云云.现实真是这样嘛? Java目前现状 首先,Java的应用可以说是无处不在,从 ...
- 谷歌Dremel即时数据分析解决方案
Hadoop技术已经无处不在.不管是好是坏,Hadoop已经成为大数据的代名词.短短几年间,Hadoop从一种边缘技术成为事实上的标准.看来,不仅现在Hadoop是企业大数据的标准,而且在未来,它的地 ...
- 张忠谋:3nm制程会出来 2nm后很难(摩尔定律还可维持10年)
集微网消息,台积电董事长张忠谋表示,摩尔定律可能还可再延续10年,3nm制程应该会出来,2nm则有不确定性,2nm之后就很难了. 张忠谋表示,1998年英特尔总裁贝瑞特来台时,两人曾针对摩尔定律还可延 ...
- 3.android下Makefile编写规范
随着移动互联网的发展,移动开发也越来越吃香了,目前最火的莫过于android,android是什么就不用说了,android自从开源以来,就受到很多人的追捧.当然,一部人追捧它是因为它是Google开 ...
随机推荐
- shell编程的一些例子3
数值处理 1.let 命令 bash 的内部命令let可以用来计算算术表达式的值.如果表达式中有空格或者特殊字符,则应将表达式括在双引号中. let的语法命令:let express-list 如果最 ...
- POJ 2531 Network Saboteur 位运算子集枚举
题目: http://poj.org/problem?id=2531 这个题虽然是个最大割问题,但是分到dfs里了,因为节点数较少.. 我试着位运算枚举了一下,开始超时了,剪了下枝,1079MS过了. ...
- Leaflet学习笔记-Leaflet.awesome-markers
基础篇传送门 http://www.cnblogs.com/CoffeeEddy/p/4919987.html 效果图 是不是感觉很美观啊 为什么选择awesome 地图上面需要各种各样的Mark,难 ...
- Tekla Structures 使用类库概览
Tekla Structures 2016 已经发布了,使用了 Ribbon 的全新 UI 风格,比以前要漂亮许多. 不过功能方面貌似没啥大的改进,感觉天宝的主要精力都投入到了混凝土模块上,忙着和别人 ...
- [问题]编译报错:clang: error: linker command failed with exit code 1及duplicate symbol xxxx in错误解决方法之一
今天添加了一个新类(包括m,h,xib文件),还没有调用,-编译遇到如下错误,根据错误提示, duplicate symbol param1 in: /Users/xxxx/Library/Devel ...
- PS字体工具字体显示不出来
显示一个小点:搜索了各种答案,扩大字号(最大72)更改前景色和背景色,最正确的解释就是分辨率太低,我发现分辨率是1,一般的设置成300,1分辨率情况下可以在图层那选择文字图层,然后按ctrl+t,拉大 ...
- Spring factorybean
自定义FactoryBean 需要实现FactoryBean接口 通过FacotryBean来配置bean的实例. class: 指向FactoryBean的全类名 property:配置Factor ...
- 解决MySQL服务启动时报1067错误
工具/原料 MySQL_5.6.24_win32 方法/步骤 当我们安装完Mysql时,如果在服务当中(可以在“运行”-->"service.msc"打开并查看)无法看到My ...
- Cocos2d-x 坑之一:Xcode文件真实目录与工程视图目录
Cocos2d-x一定要保证 Xcode文件真实目录与工程视图目录 的一致性,不然,会出现文件读取不了,或include不了的情况. 如果出现此类情况,优先查看真实目录的结构.
- Java程序员从笨鸟到菜鸟全部博客目录
本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 大学上了一年半,接触java也一年半了,虽然中间也有其他东西的学习,但是还是以java为主 ...