大数据的发展与应用:Hadoop的前世今生

大数据计算我们把它理解成为一个什么事情呢?目前现在这个时代通信、网络等等这些电子信息技术发展,使数据规模得到了极大的增加。2011年整个全球产生的数据量达到1.8ZT,这样的数据量为传统的处理数据的技术提出了挑战。传统的技术处理不了这样规模大的数据量。所以现在提到了,企业里怎么样才能把数据变成价值?以前我们都说叫业务为王,现在这个时代,我认为它已经转换到了以数据为王的时代。这儿有一个例子,如果我们要处理100TB的数据,如果用一台机器处理的话,假设每秒钟扫描50兆,需要35000分钟,用1000台机器干这个事可以缩到35分钟,这说明这么大的数据只能用多机分布并行的方式处理才能够把时间大大的缩短。在应用领域,比如说数据仓库、日志分析、用户行为分析、在线行为分析,这些都属于大数据应用计算的应用领域。数据的一些具体问题这里有一些数字,去年Facebook已经有6亿用户,现在这个数字已经变成9亿了,每个月这些人上传照片10亿,每天产生300TB的数据,所以什么样的公司能承受这样的数据量?它一定有自己的办法。

国内淘宝大概有3.7亿会员,商品是8.8亿,每天交易近1000万笔,每天会产生20TB数据。从总的全球数据增长趋势看,我们现在2010年是1.8, 20年后会增大44倍。60%创造的数据会因为没有办法存储而丢失,所以整个挑战就是数据报帐对存储效率都会提出一个挑战。

第一个矛盾就是数据的增长太快了,但是想一想,我们如果想把这些东西存储下来必须要有机器,必须要盘阵等等一系列的东西。等你发现数据中心扩容中心和数据增长的速度相比较而言不匹配的时候,就会产生一个很剧烈的矛盾。我们在和Facebook做一些合作的时候,09年的时候他们出现了这样的问题,老的数据已经满了,新的数据正在建还没有建好,这样的空档期所有的数据都有可能被扔掉。大家知道互联网企业对数据价值很重视,所以我们合作的时候发明了一项新技术,使得它在原有600台机器的情况下平滑的迁移。

第二个是业务深度不断加强。但是现在处理性能和处理技术跟不上。我希望从大数据里挖掘更有价值的东西但是没有“金刚钻”,所以归结起来大家看到的矛盾就是这两方面的矛盾。

解决这个问题的思路就是先要能存下来这些数据,要尽量多的存更多的数据。第二个思路就是怎么能够加快海量数据计算的速度和性能。举一个例子 Facebook的09年的例子,(PPT)红框里是核心业务,最核心的是Hadoop,这是一个很大规模的集群,09年的时候大概是600到1000台的规模,现在规模更大了。Hadoop就是把所有的数据全部存到这个集群里,这个集群不光是存储,它是一台一台的机器,利用每台机器硬盘存储空间存储数据。这些数据包括哪些?第一用户的信息、前端服务器和用户信息服务器和所有的日志就是用户在上面点击产生的数据都会放到Hadoop集群里。放到这里干什 么用呢?就是要挖掘关联关系,分析用户行为。比如说举一个简单的例子,我通过用户日志的分析能够判别你的偏好,你喜欢哪些方面的内容?或者说你本人是什么 性别、年龄段,都可以通过这种方式分析。所以可想而知,这些数据对于像Facebook这样的互联网公司是多么的重要。这些数据除了直接可以在上面做分析 以外,还可以给BI工具提供一个输入。这是09年的架构。这个架构到现在为止应该有一些变化,但是Hadoop核心定位是没有变的。包括国内一些大的很著 名的互联网公司都借鉴了这样的架构。所以可想而知Hadoop在互联网公司的作用是多么的重要。

下面讲一下Hadoop的来源。Hadoop 是Doug做的这么一个软件,02年他打算做一个网页检索软件,没有任何思路。03年Google发表了两篇论文,他受到这两篇论文的启发,把这两篇论文主要的思想借鉴过来,形成了现在的Hadoop的雏形。06年的时候他命名这套软件是Hadoop,这套软件最早开始的是06年开始的。08年的时候 Hadoop软件成为了Apache的基金项目,雅虎在后面支撑这个软件的开发。Hadoop它有一些特点,是全部用JAVA来写的,它可以跑在我们常见的商用的高故障率的服务器上甚至PC上。

雅虎内部人说Hadoop是继Linux以来最成功的开源软件。Hadoop组成部分,包括克隆了Google的GISI系统,包括克隆了 并行计算框架,上面有很多不同的组成部分。它上面有MapReduce它可以提供一个接口,DBA可以利用这个接口写数据处理。此外还有多其他的组成部 分,整个这样一套东西叫Hadoop。目前现在看起来这些所有上的东西都一个一个逐渐的变成了一些Apache的顶级项目了,但是我们通常把这一套叫 Hadoop。

Hadoop HDFS体系结构:

它是多集群处理,利用每个机器硬盘处理。它的数据分成块,这些块是有副本的,这些副本是存在不同的机器上的。为什么要这么做呢?就是因为硬件有可能出故障,如果硬件出故障以后存储在机器上的这个块不可用了,但是因为也副本,所以其他机器上可以把相应的块拿出来用,所以整个系统可靠性非常高。

第二个就是处理流程。处理流程是两个计算过程。第一个计算过程相当于分配任务,我可以把任务分几百万分,分到很多机器上去算,计算完了以后有一个归约过程,把中间结果再归约处理,最后得出结果。这种处理方向很适合做文本处理。再讲一下我们做的实际工作:

我们做的工作是跟Facebook的合作,就是叫行列混合式数据存储技术,英文是RCFile。大家知道关系数据是一张表,这个表怎么存到硬盘上? 有很多种不同的格式,我们选取的格式希望有利于节省存储空间。比他们先进的地方就在于,我们用的是行列混合式,既不是行式,也不是列式,是混合在一起。这 样比纯粹行存储节省20%的空间。比如他们原来600台机器存不下了,用这个模式就存下了。比纯粹列式要节省23%。

第二个技术是CCIndex技术,这个技术是希望在数据模型中间取一个折中,让数据库有查询的能力。它最终的效果就是,我们比它最传统的二级索引快10倍。

总结:大数据计算技术的发展趋势就是三个字“大、快、准”,我们目前处在的阶段是“快”阶段,“准”这个事目前还没有太好的技术能够出现。

第二个就是数据计算模式是有变化的,以前是以计算为中心,以机器为中心,现在以数据为中心。在这样的变化前提下,很多新的技术涌现出来,比如说Hadoop。出现了这些新的技术,新的市场也会出现。目前看起来一些大的软件厂商,比如说Oracle,它直接在它的Big Data里内嵌了一个Hadoop做大数据处理。这些厂商也在关注Hadoop软件。

第三,数据规模对传统的关系型数据库的技术提出了挑战。关系型数据库技术也在经历一些变革。NoSQL技术是对关系数据库的一个有利补充,这是实际 需求导致的结果。实际需求就是量太大了,但是功能并不像SQL那么全,我只需要一个子集,这样技术可以简化,NoSQL技术比关系数据库技术要简单,但是 它的价值取向是快,是可以扩展的,性能要好。