Hadoop将过时了?
http://www.kuqin.com/database/20120715/322528.html
Hadoop这个单词如今铺天盖地,几乎成了大数据的代名词。仅仅数年时间,Hadoop从边缘技术迅速成长为一个事实标准。如今想玩转大数据,搞企业分析或者商业智能,没有Hadoop还真不行。但Hadoop狂热的背后却酝酿着一场技术变革,Hadoop的核心技术在Google那里已经过时,因为Hadoop并不擅长处理“快数据”。
今天,Hadoop似乎已经毫无争议地成了企业大数据技术标准,看上去Hadoop将根植企业,其地位在未来十年似乎都不会动摇。但是GigaOM的专栏作家Mike Miller却发出了“不和谐”的声音:“企业真的会为一个盛极而衰的技术买单吗?”
起源:Google文件系统和Google MapReduce
为了探讨Hadoop的生命周期我们需要回溯Hadoop的灵感源泉——Google的MapReduce。为了迎接数据大爆炸的挑战,Google的工程师Jeff Dean和Sanjay Ghemawat架构了两个影响深远的系统:Google File System(GFS)和Google MapReduce(GMR)。前者是一个能在通用硬件上管理EB(Exabyte)级数据的出色的可行方案。后者则是一个同样出色的,能在通用服务器上大规模并行处理数据的模型设计实现。
GMR的出彩之处在于能够让普通的Google用户和开发者也能够进行高速、容错的大数据处理。GMR和GFS成了搜索引擎数据处理引擎的核心,该引擎抓取、分析并分级web页面,并最终为用户呈现日常搜索结果。

Hadoop生态系统
我们再回头看看Apache Hadoop的两大组成部分:Hadoop分布式文件系统和Hadoop,确实就是GFS和GMR的翻版。虽然Hadoop正在发展成为一个无所不包的数据管理和处理生态系统,但是在这个生态系统的核心,依然是MapReduce系统。所有的数据和应用最终都将降解为Map和Reduce的工作。
Google已经进化,Hadoop能否跟上?

有趣的事情是,GMR已经不再占据Google软件堆栈中的显赫位置。当企业被Hadoop解决方案锁定到MapReduce上时,Google却已经准备淘汰MapReduce技术。虽然Apache项目和Hadoop商业发行版本试图通过HBase、Hive和下一代MapReduce(亦即YARN)弥补Hadoop的短板。但笔者认为只有用全新的,非MapReduce架构的技术替代Hadoop内核(HDFS和Zookeeper)才能与谷歌的技术抗衡。(这里有一个更加技术性的阐述:gluecon-miller-horizon)
增量索引过滤器(Percolator for incremental indexing)和频繁变化数据集分析。Hadoop是一台大型“机器”,当启动并全速运转时处理数据的性能惊人,你唯一需要操心的就是硬盘的传输速度跟不上。但是每次你准备启动分析数据时,都需要把所有的数据都过一遍,当数据集越来越庞大时,这个问题将导致分析时间无限延长。
那么Google是如何解决让搜索结果返回速度越来越接近实时的呢?答案是用增量处理引擎Percolator代替GMR。通过只处理新增的、改动过的或删除的文档和使用二级指数来高效率建目录,返回查询结果。Percolator论文的作者写道:“将索引系统转换成增量系统…将文档处理延迟缩短了100倍。”这意味着索引web新内容的速度比用MapReduce快100倍!
类似大型强子对撞机产生的数据将不断变大,Twitter也是如此。这也是为什么HBase中会新增触发流程,而Twitter Storm正在成为实时处理流数据的热门技术。
用于点对点分析的Dremel。Google和Hadoop生态系统都致力于让MapReduce成为可用的点对点分析工具。从Sawzall到Pig和Hive,创建了大量的界面层,但是尽管这让Hadoop看上去更像SQL系统,但是人们忘记了一个基本事实——MapReduce(以及Hadoop)是为组织数据处理任务开发的系统,诞生于工作流内核,而不是点对点分析。
今天有大量的BI/分析查询都是点对点模式,属于互动和低延迟的分析。Hadoop的Map和Reduce工作流让很多分析师望而却步,而且工作启动和完成工作流运行的漫长周期对于很多互动性分析来说意味着糟糕的用户体验。于是,Google发明了Dremel(业界也称之为BigQuery产品)专用工具,可以让分析师数秒钟内就扫描成PB(Petabyte)的数据完成点到点查询,而且还能支持可视化。Google在Dremel的论文中声称:“Dremel能够在数秒内完成数万亿行数据的聚合查询,比MapReduce快上100倍!”
分析图数据的Pregel。Google MapReduce的设计初衷是分析世界上最大的数据图谱——互联网。但是在分析人际网络、电信设备、文档和其他一些图数据时就没有那么灵光了,例如MapReduce在计算单源最短路径(SSSP)时效率非常低下,已有的并行图算法库Parallel BGL或者CGMgraph又没有容错。
于是Google开发了Pregel,一个可以在分布式通用服务器上处理PB级别图数据的大型同步处理应用。与Hadoop经常在处理图数据时产生指数级数据放大相比,Pregel能够自然高效地处理SSSP或PageRank等图算法,所用时间要短得多,代码也简洁得多。
目前唯一能与Pregel媲美的开源选择是Giraph,这是一个早期的Apache孵化项目,调用了HDFS和Zookeeper。Githb上还有一个项目Golden Orb可用。
总结
总而言之,Hadoop是一个可以在普通通用硬件集群上进行大规模数据处理的优秀工具。但是如果你希望处理动态数据集、点对点分析或者图数据结构,那么Google已经为我们展示了大大优于MapReduce范型的技术选择。毫无疑问,Percolator、Dremel和Pregel将成为大数据的新“三巨头”,正如Google的老“三巨头”:GFS、GMR和BigTable所做的那样。
Hadoop将过时了?的更多相关文章
- Hadoop 中利用 mapreduce 读写 mysql 数据
		
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
 - 【Big Data】HADOOP集群的配置(二)
		
Hadoop集群的配置(二) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...
 - HADOOP安装指南-Ubuntu15.10和hadoop2.7.2
		
Ubuntu15.10中安装hadoop2.7.2安装手册 太初 目录 1. Hadoop单点模式... 2 1.1 安装步骤... 2 0.环境和版本... 2 1.在ubu ...
 - hadoop2.2.0伪分布式搭建3--安装Hadoop
		
3.1上传hadoop安装包 3.2解压hadoop安装包 mkdir /cloud #解压到/cloud/目录下 tar -zxvf hadoop-2.2.0.tar.gz -C /cloud/ 3 ...
 - hadoop2.7.3配置文件中过时的属性
		
过时的属性:Deprecated Properties 该列表保存于:hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\site\mar ...
 - Hadoop是什么?一句话理解
		
Hadoop(MapReduce&HDFS) 1.学习目的(前言) 在从业了六年IT生涯里,做个实施顾问.业务顾问.BA需求分析师.项目经理,现在重新定位自己,在新公司做起了开发顾问,虽然经历 ...
 - hadoop多次搭建后,完整总结(累死宝宝了,搭建了十多遍了)
		
1.安装JDK1.1上传运用软件FileZilla,将windows上的jdk压缩包放到linux的root目录下 1.2解压jdk #创建文件夹 mkdir /usr/java(不要挂在在" ...
 - hadoop搭建初步总结
		
1.安装JDK1.1上传运用软件FileZilla,将windows上的jdk压缩包放到linux的root目录下 1.2解压jdk #创建文件夹 mkdir /usr/java(不要挂在在" ...
 - windows环境下跑hadoop自带的wordcount遇到的问题
		
hadoop环境自己之前也接触过,搭建的是一个伪分布的环境,主从节点都在我自己的机子上,即127.0.0.1,当初记得步骤很多很麻烦的样子(可能自己用ubuntu还不够熟练),包括myeclipse. ...
 
随机推荐
- ASP.NET下运用Memcached
			
对于大型网站的高并发,在ASP.NET网站下的session性能并不高,所以造成人们一种印象,大型WEB项目使用JAVA的错觉,致使很多人吐槽微 软不给力,其实这好比拉不出怪地球引力,本文介绍Memc ...
 - Query 快速入门教程
			
Query 快速入门教程 http://www.365mini.com/page/jquery-quickstart.htm#what_is_jquery jquery常用方法及使用示例汇总 http ...
 - jQuery学习一:jQuery中的ready和load事件
			
//ready事件 $(document).ready(function(){ 代码........ }); //ready事件简写: $(function(){ 代码........ }); //l ...
 - 高性能CSS(一)
			
避免使用@import 有两种方式加载样式文件,一种是link元素,另一种是CSS 2.1加入@import.而在外部的CSS文件中使用@import会使得页面在加载时增加额外的延迟.虽然规则允许在样 ...
 - 判断IFeatureClass图形是否含有Z值信息,若有为IPoint赋Z值
			
判断IFeatureClass图形是否含有Z值信息 IFeatureClass featureClass = this.pLayer.FeatureClass; string shapeFieldNa ...
 - C++ sizeof操作符的用法和strlen函数的区别
			
摘要:本人首先介绍了C++中sizeof操作符的用法和注意事项,其次对比了和strlen的区别和使用,方便大家在写代码的时候查阅,和面试.笔试的时候复习. 目录: sizeof的用法: sizeof和 ...
 - jquery ListBox 左右移动
			
<head runat="server"> <title>无标题页</title> <script type="text/jav ...
 - 基础学习总结(三)--文本、SD卡数据读写
			
简单的文本数据写入文件不需要权限,读写SD卡在4.0版本前需要写权限.在4.0后需要读写权限 布局: <LinearLayout xmlns:android="http://schem ...
 - c#中const与readonly区别
			
const 的概念就是一个包含不能修改的值的变量.常数表达式是在编译时可被完全计算的表达式.因此不能从一个变量中提取的值来初始化常量.如果 const int a = b+1;b是一个变量,显然不能再 ...
 - Android 生命周期 和 onWindowFocusChanged
			
转载 http://blog.csdn.net/pi9nc/article/details/9237031 onWindowFocusChanged重要作用 Activity生命周期中,onStart ...