中国香港︱从云计算到大数据(原创)

云计算的大趋势已毋庸置疑,而正当它逐渐被企业认识甚至开始部署时,业界领袖们又将目光瞄向了下一个目标——大数据。

不同的数据广泛存在于企业的IT系统中,是企业发展的核心,一切的IT系统发展都有赖于数据。随着IT行业的发展以及企业对数据管理要求不断的进步,数据管理的“智能”趋势已经锐不可当,智能的数据管理正在成为所有企业所追求的共同发展目标。

随着人们还在追寻云计算的定义时,大量的数据因有云计算的存在,数据从以往分布式存在转变成现在的集中式存在;从以往结构化数据转变成非结构化数据,像文件、照片、视频、电子邮件或社交网络通讯。这种改变可以从大型存储系统的需求增加看出,企业信息化与IT系统的核心发生实质的转变:计算能力不再是评价的主要标准,对信息与数据的掌控是CIO最迫切的要求。

据Gartner的报告显示,2010年全球基于控制器的外置(ECB)磁盘存储收入比2008年的高位水平超出了14亿美元。2010年ECB存储收入超过194亿美元,比2009年的165亿美元高出了18.1%1。而同样基于Gartner的数据,2010年第四季度全球服务器市场出货量增长6.5%,营收增长16.4%2。自2010年开始,企业在服务器上的投资年均增幅已经开始逐渐小于在外部磁盘存储上的投资(主要是数据中心的网络存储系统),存储开始超越服务器成为IT投资主要增长点。

正因如此,有效的数据分析以及管理将会是云计算未来成功的一个关键因素。亚马逊刚刚公报正准备在数据分析项目ParAccel进行一次大手笔的投资,ParAccel是一间专门处理数据分析的公司,他们以数据列为关注对象进行大规模数据分析工作,而不是像传统关系型数据库那样以行为数据单位。单从这一点上看,这一理念与惠普、EMC 和 IBM 的 Vertica,Greenplum和Netezza在处理大规模数据时的思路很是相像。

在软件产业方面,不同的开发环境也应运而生,如Google App. Engine提供了接口和免费的运算及储存资源,让提供者开发各种web 服务。Google也开发了许多云计算的技术与架构,如MapReduce以分散或运算提供整合的运算资源以及减少运算时间、Google File System 将大量而分散的储存空间整合为一个可靠的储存媒介、BigTable提供高效率的分布式数据库。这些技术及架构都有一个特点,就是让服务开发人员不用考虑在这些分布式系统上数据要怎么放置、运算要怎么切割,只需要专注在服务的开发就可以了,而数据与运算的切割及分散就交给云计算的架构来处理,可说是大大增加了开发服务的速度。

Hadoop计划

Hadoop是Apache软件基金会 (Apache Software Foundation) 底下的开放原始码计划 (Open source project),最初是做为Nutch这个开放原始码的搜索引擎的一部份。Hadoop是以Java写成,可以提供大量资料的分布式计算环境,而且Hadoop的架构是由Google发表的BigTable及Google File System等文章提出的概念实做而成,所以跟Google内部使用的云计算架构相似。目前Yahoo!及Cloudera等公司都有开发人员投入Hadoop的开发团队,也有将近一百个公司或组织公开表示使用Hadoop做为云计算平台,Google及IBM也使用Hadoop平台为教育合作环境。

Hadoop中包括许多子计划,其中HadoopMapReduce如同Google MapReduce,提供分布式计算环境、Hadoop Distributed File System如同Google File System,提供大量储存空间、HBase是一个类似BigTable的分布式数据库,还有其他部份可用来将这三个主要部份连结在一起,方便提供整合的云端服务。

MapReduce

MapReduce是Google提出的一个分布式程序框架,用于大规模数据集(大于1TB)的并行运算。让服务开发者可以很简单的撰写程序,利用大量的运算资源,加速处理庞大的数据量,一个MapReduce的运算工作可以分成两个部份—Map(映像)和Reduce(化简),大量的数据在运算开始的时候,会被系统转换成一组组 (key, value) 的序对并自动切割成许多部份,分别传给不同的Mapper来处理,Mapper处理完成后也要将运算结果整理成一组组 (key, value) 的序对,再传给Reducer整合所有Mapper的结果,最后才能将整体的结果输出。

再更仔细地介绍流程中每一步的细节,一开始需要建立一个JobConf类别的对象,用来设定运算工作的内容,如setMapperClass/setReducerClass设定 Mapper及Reducer 的类别,setInputFormat/setOutputFormat设定输出输入数据的格式,  setOutputKeyClass / setOutputValueClass设定输出数据的类型,设定完成后,依设定内容提交运算工作。数据源会依InputFormat的设定取得,并分割转换为一组组的 (key, value) 序对,交由不同的Mapper同时进行运算,Mapper要将运算的结果输出为一组组(key, value) 序对,也称为中介数据 (intermediate),系统会将这些暂时的结果排序 (sort) 并暂存起来,等到所有Mapper的运算工作结束之后,依照不同的key值传送给不同的Reducer汇整,所有同一key值的中介数据的value值,会放在一个容器 (container) 里传给同一个Reducer处理,所以在Reducer中可以利用values.next()依序取得不同value值,快速地完成结果整理,再依OutputFormat的设定输出为档案。

进行运算的Mapper和Reducer会由系统会自动指派不同的运算节点担任,所以程序设计时完全不用做数据和运算的切割 (decomposition),运算资源会由JobTracker分配到各个运算节点上的TaskTracker,并指派不同的节点担任Mapper和Reducer。

HDFS

Hadoop Distributed File System (HDFS) 将分散的储存资源整合成一个具容错能力、高效率且超大容量的储存环境,在Hadoop系统中大量的数据和运算时产生的临时文件,都是存放在这个分布式的文件系统上。

HDFS是master/slave架构,由两种角色组成,Name node及data nodes,Name node负责文件系统中各个文件属性权限等信息 (metadata, namespace) 的管理及储存;而data node通常由数以百计的节点担任,一个资料文件会被切割成数个较小的区块 (block) 储存在不同的data node上,每一个区块还会有数份副本 (replica) 存放在不同节点,这样当其中一个节点损坏时,文件系统中的数据还能保存无缺,因此name node还需要纪录每一份档案存放的位置,当有存取档案的需求时,协调data node负责响应;而有节点损坏时,name node也会自动进行数据的搬迁和复制。

HDFS虽然没有整合进Linux kernel,只能透过Hadoop的dfs shell进行档案操作,或使用FUSE成为User space下的文件系统,但Hadoop下的系统都与HDFS整合,做为数据储存备份及分享的媒介。如前面提到的MapReduce在系统分配运算工作时,会将运算工作分配到存放有运算数据的节点上进行,减少大量数据透过网络传输的时间。

HBase

HBase是架构在HDFS上的分布式数据库,与一般关系数据库 (relational database) 不同。HBase使用列 (row) 和行 (column) 为索引存取数据值,因此查询的时候比较像在使用map容器 (container);HBase的另一个特点是每一笔数据都有一个时间戳 (timestamp),因此同一个字段可依不同时间存在多笔数据。

一个HBase的数据表 (table) 是由许多row及数个column family组成,每个列都有一个row key做为索引;一个column family就是一个column label的集合 (set),里面可有很多组label,这些label可以视需要随时新增,而不用重新设定整个数据表。在存取数据表的时候,通常就使用 (“row key”, “family:label”) 或 (“row key”, “family:label”, “timestamp”) 的组合取出需要的字段。

HBase为了方便分散数据和运算工作,又将整个数据表分为许多区(Region),一个区是由一到数个列所组成的,可以分别存放在不同HBase主机上,这些存放region的主机就是region server,另外还有master server用来纪录每一个区对应的region server;master server也会自动将不能提供服务的region server上的区重新分配到其他的region server上。

HBase也可供MapReduce的程序当作数据源或储存媒介,在HBase 0.20版之后提供了TableMapper及TableReducer的类别让程序中的Mapper及Reducer类别继承,可以把MapReuce中的 (key, value) 更方便地从HBase中取出和存入。

进入大数据时代

大数据(Big Data)与云计算的势头已经难以抵挡,大数据问题的出现,主要是我们现在所面临一个新的资料量级的来临,企业数据从TB到PB,个人数据从GB到TB、从600MB的RMVB到了现在30GB的蓝光1080P视频。据分析现在我们处理的数据,是1996年的180倍。这些都是我们对大数据处理分析的需求,如果说云计算将是我们IT的新方向,然而大数据必定是我们IT的新挑战。 

 【原创内容,版权归中云网所有,如需转载,请注明文章出处“中云网”及网址链接。】