来源:万方数据 更新时间:2014-06-02
日益发展的大数据研究和应用对大级别数据的存取、分析和再处理提出越来越高的要求,本文根据大数据存储的定义和特点,主要探讨了稳定可靠的传统存储管理模式在大数据应用中面临的挑战,并对传统存储管理模式能否满足大数据管理的需求进行了分析,同时介绍了业界较为知名的几个大数据存储管理系统的实际解决方案及其优缺点。
随着互联网的不断扩张和云计算技术的进一步推广,海量的数据在个人、企业、研究机构等源源不断地产生。这些数据为日常生活提供了便利,信息网站可以推送用户定制的新闻,购物网站可以预先提供用户想买的物品,人们可以随时随地分享。但是如何有效、快速、可靠地存取这些日益增长的海量数据成了关键的问题。传统的存储解决方案能提供数据的可靠性和绝对的安全性,但是面对海量的数据及其各种不同的需求,传统的解决方案日益面临越来越多的问难,比如数据量的指数级增长对不断扩容的存储空间提出要求,实时分析海量的数据对存储计算能力提出要求。一方面传统的存储解决方案正在改变,比如多级存储来不断适应大数据存储管理系统的特点和要求,另一方面全新的存储解决方案正日渐成熟,来有效满足大数据的发展需求。
1、大数据定义及其广泛应用与典型架构
越来越多的人可以通过网络获得包括架构(IAAS)、平台(PAAS)以及软件(SAAS)等服务,云计算为终端用户提供了便捷而人性化的服务,大大地降低他们的使用成本,优化了用户体验,更拓展了互联网企业自身的营收业务。例如购物网站通过记录每位访问用户在其网站上每一次的鼠标点击操作来预测用户的喜好,并由后台计算产生相关产品的购物推荐,提高了广告产品推广的针对性同时也完善了个人用户的购物体验。随着成千上万的终端用户的并行访问,仅用户行为的跟踪就会产生巨量的数据,这些数据的处理与存储对于互联网企业的传统数据仓库来说带来了新的问题和挑战,从而“大数据”的概念应运而生。所谓大数据或称巨量资料、海量资料,指的是所涉及的资料量规模巨大到无法透过目前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。
大数据自诞生以来其规模也在不断地发生改变,从开始PB(PETA-BYTE)级别正快速地发展到EB(EXA-BYTE)级别,大数据规模的不断快速扩张是因为其广泛的数据源,这些数据有的正如前面例子所提到的,是每天线上跟踪用户日常行为所产生,或者是网络中手机和传感器数据采集而来;有的则是企业自身多年以来信息积累而成,例如金融行业历史数据来引导未来的投资方向,又如最大的电子商务网站淘宝根据其历史记录推出的数据魔方服务产品来帮助商家指定营销手段;有的是服务系统日志收集而来,例如从网络服务器的工作日志或者数据库El志中提取到。这些各种各样的数据来自不同的设备或者应用,其格式也不尽相同,被实时或事后采集并保存到大数据存储管理系统中,根据不同的应用需求被大数据处理系统进行离线或实时或交互式的处理,之后可能的用途包括:(1)成为最终的数据报表反馈给应用开发人员或数据分析师;(2)成为快速查询或者计算的结果反馈给前端应用服务;(3)成为更新后的数据表格传送到数据库中以供查询;(4)被压缩成备份数据存放到大数据存储集群中。大数据的存储与处理典型架构(如图1)已经逐渐取代传统的数据仓库成为数据中心核心部件,发挥着云计算时代重要的作用,并且使得数据中心发生着巨大的变化,迎接新的挑战。
2、大数据存储与应用的特点分析
“大数据”是由数量巨大、结构复杂、类型众多数据构成的数据集合,是基于云计算的数据处理与应用模式,通过数据的整合共享,交叉复用形成的智力资源和知识服务能力。其常见特点可以概括为3V:Volume、Velocity、Variety(规模大、速度快、多样性)。
大数据具有数据规模大(Volume)且增长速度快的特性,其数据规模已经从PB级别增长到EB级别,并且仍在不断地根据实际应用的需求和企业的再发展继续扩容,飞速向着ZB(ZETA-BYTE)的规模进军。以国内最大的电子商务企业淘宝为例,根据淘宝网的数据显示,至2011年底,淘宝网最高单日独立用户访问量超过1.2亿人,比2010年同期增长120%,注册用户数量超过4亿,在线商品数量达到8亿,页面浏览量达到20亿规模,淘宝网每天产生4亿条产品信息,每天活跃数据量已经超过50TB。所以大数据的存储或者处理系统不仅能够满足当前数据规模需求,更需要有很强的可扩展性以满足快速增长的需求。
(1)大数据的存储及处理不仅在于规模之大,更加要求其传输及处理的响应速度快(Velocity)。
相对于以往较小规模的数据处理,在数据中心处理大规模数据时,需要服务集群有很高的吞吐量才能够让巨量的数据在应用开发人员“可接受“的时间内完成任务。这不仅是对于各种应用层面的计算性能要求,更加是对大数据存储管理系统的读写吞吐量的要求。例如个人用户在网站选购自己感兴趣的货物,网站则根据用户的购买或者浏览网页行为实时进行相关广告的推荐,这需要应用的实时反馈;又例如电子商务网站的数据分析师根据购物者在当季搜索较为热门的关键词,为商家提供推荐的货物关键字,面对每日上亿的访问记录要求机器学习算法在几天内给出较为准确的推荐,否则就丢失了其失效性;更或者是出租车行驶在城市的道路上,通过GPS反馈的信息及监控设备实时路况信息,大数据处理系统需要不断地给出较为便捷路径的选择。这些都要求大数据的应用层可以最快的速度,最高的带宽从存储介质中获得相关海量的数据。另外一方面,海量数据存储管理系统与传统的数据库管理系统,或者基于磁带的备份系统之间也在发生数据交换,虽然这种交换实时性不高可以离线完成,但是由于数据规模的庞大,较低的数据传输带宽也会降低数据传输的效率,而造成数据迁移瓶颈。因此大数据的存储与处理的速度或是带宽是其性能上的重要指标。
(2)大数据由于其来源的不同,具有数据多样性的特点。
所谓多样性,一是指数据结构化程度,二是指存储格式,三是存储介质多样性。对于传统的数据库,其存储的数据都是结构化数据,格式规整,相反大数据来源于日志、历史数据、用户行为记录等等,有的是结构化数据,而更多的是半结构化或者非结构化数据,这也正是传统数据库存储技术无法适应大数据存储的重要原因之一。所谓存储格式,也正是由于其数据来源不同,应用算法繁多,数据结构化程度不同,其格式也多种多样。例如有的是以文本文件格式存储,有的则是网页文件,有的是一些被序列化后的比特流文件等等。所谓存储介质多样性是指硬件的兼容,大数据应用需要满足不同的响应速度需求,因此其数据管理提倡分层管理机制,例如较为实时或者流数据的响应可以直接从内存或者Flash(SSD)中存取,而离线的批处理可以建立在带有多块磁盘的存储服务器上,有的可以存放在传统的SAN或者NAS网络存储设备上,而备份数据甚至可以存放在磁带机上。因而大数据的存储或者处理系统必须对多种数据及软硬件平台有较好的兼容性来适应各种应用算法或者数据提取转换与加载(ETL)。
3、传统存储在大数据应用中面临的挑战
作为数据存取的载体,大数据存储管理系统与传统的存储系统仍然具有许多相似的特性,例如安全性、可用性、可靠性、可扩性及高效性。
1)安全性(Security)
虽然大数据的存储访问是位于企业的数据中心内部,对于外部用户已经具有防火墙隔离功能,但是对于企业内部来说不同部门的数据也并非完全可以共享的,例如人事部门对于企业内部工资的管理,或者金融企业历史交易数据等。为每一个部门建立一个大数据的存储管理平台并不现实,较为实用的方法是类似于传统的数据库访问,所有部门共享一个大数据存储池,通过添加必要的访问控制来实现数据访问的安全性。
2)可用性(Availability)和可靠性(Reliability)
数据的准确性是作为存储管理系统最为基础的要求,对于大数据的存储来说,其准确性的要求可能没有传统数据库这么高,因为其数据规模庞大可以容忍较少量的数据错误,但是数据准确性依然是不能忽视的重要特性。传统的存储是通过冗余备份(例如磁盘阵列)、定期,强制写人磁盘、双控制器来确保数据的准确性,而在大数据存储系统中则是通过其中较为简单的多副本(即冗余备份)方式做到容错的,一般来说同一个机架上拥有两份备份在不同的节点上,不同的机架上也有相应的备份,从而达到数据丢失的自动还原功能实现数据的可用性。而为了达到数据备份的一致性,在数据备份创建的过程中也有相应的备份点及重传机制作为保障。从技术方法上来说,两者是十分相似的,甚至在大数据领域所采用的方法较之传统的存储系统技术更为简朴。
3)可扩性(Scalability)
无论是大数据存储系统还是传统的存储系统,容量规划都是一个重要的问题,容量规划一是要满足现有的存储空间和带宽的需求,更重要的是考虑到系统扩张后的容量升级。
4)高效性(Efficiency)
在存储系统中,通过对用户层透明的压缩处理来实现空间及带宽利用的有效性提升是一个普遍的做法,这个在传统的存储系统和大数据系统中都十分重要。尤其是对一些归档备份的数据,自动的压缩开启以及不同压缩算法的提供与选择就显得十分实用。
除了以上的一些共性外,由于大数据的3V特性即Volume、Velocity、Variety(规模大、速度快、多样性),传统的数据存储管理系统面临着更多的挑战,有些甚至已经完全不能满足大数据的存储计算的要求,而需要开发新的针对大数据的数据存储管理平台,如表1所示。
5)扩容方式
虽然传统存储系统和大数据存储系统都具有可扩性,但是其扩展方式是截然不同的。传统存储是纵向扩容(Scale-up)即当存储容量不够或者存储磁盘带宽不够时,在SAN或者NAS存储池中继续添加磁盘(Hard-drive)来达到增加容量和带宽的作用,但是大数据时代纵向扩容方式是无法满足其需求的。首先,大数据的数据规模目前已经是EB(EXA-BYTE)级别,将来甚至会达到ZB(ZETA-BYTE),这个数量级别的存储容量是无法通过单纯的往网络存储池添加硬盘来实现的。其次,即使可以通过纵向扩容达到更大数据规模的需求,其高额的硬件及管理软件成本也是数据存储管理中心无法承担的。因此,对于大数据存储系统来说横向扩张才能够很好的达到巨量数据规模的需求,才能够实现存储系统的按需(ON-DEMAND)动态规模增减。所谓的横向扩容是指当存储容量或者带宽不足以满足现有要求足时,添加存储节点来达到扩容的目的。在大数据的应用领域,每一个节点不需要高价的磁盘阵列(RAID),相反只需要一定数量的各种类型的硬盘以独立工作单元方式进行管理(即JBOD存储设备)。根据Google的设想,这些节点甚至可以是一些成本较为低廉的日常用机器(甚至是台式机)。横向扩容意味着数据管理软件将要统筹更多的节点,面对更大的压力。例如如果采用集中式的主节点管理,主节点的能力可能成为整个大数据存储系统的性能瓶颈,尤其是当规模的扩大到成千上万个节点时,单管理节点的模式是不可靠的;如果采用分布式主节点群管理,软件的开发成本和系统本身的复杂度相应就会提高。
6)存储模式
传统的存储系统是依赖于SAN或者NAS这样的网络存储模式,这样的存储模式存在着如上所述纵向扩容瓶颈,更重要的是它们将计算节点与存储节点分隔开,通过网络来共享一个或多个存储池,最终使得数据的存取速度被限制在网络的瓶颈上,即使通过纵向扩容其存储池容量和带宽都得到了提高,最终却受限于它们与数据处理节点之间的网络带宽上。而对于大数据的处理和存取来说,最终的速度都受制于SAN或者NAS的物理网络带宽,这是远远无法满足EB级别数据规模的需求的。因为网络存储对于大数据意味着当计算发生时,PB或者EB级别的数据需要通过SAN或者NAS的网络搬迁到计算节点上进行各种应用的处理,然后再将结果返回,而这样巨量数据的搬迁本身也许比起计算应用更加耗时。所以目前大数据存储系统普遍采用的是DAS的方式,并且将计算资源搬迁到数据的存储节点上发生,但是简单的DAS方式仍然给存储管理系统的软件层增加了许多的新问题,例如通过网络的跨节点数据访问管理,存储数据块的管理等。
7)兼容集成
对于大数据存储系统的兼容集成特性涉及到若干方面,首先正由大数据的多样性特点所决定,其存储系统需要兼容各种种类的数据,有结构化、半结构化及非结构化数据,而传统的数据库存储则是管理结构化的关系型数据,其数据的种类比较单一;其次,大数据的存储需要和各种数据源和数据存储系统整合集成系统工作,正如之前典型的架构所列举,其数据交换接口需要兼容各种数据传输机制才能够很好的服务数据中心的各种需求;再者,大数据计算要对大量的数据提供各种有效服务,例如有些批处理(Batch.style)数据分析或者机器学习算法需要处理大量的数据,有些交互式(Interactive-access)的数据访问或者查询需要快速返回;有些流式(streaming)计算的及时运算与响应,这些计算服务的数据都被存放在统一的大数据存储系统之上,因为反复的搬迁大规模的数据对于任何大数据应用来说都是降低效率的致命短板,所以基于大数据的存储系统可以支持各种上层应用的需求,提供统一或者兼容性强的读写接口;第四,大数据存储管理系统需要支持各种介质的存储设备来满足上层各种应用的需求。例如对于经常访问的热点数据,存储系统可以从磁盘读取数据的同时将数据缓存存放在内存或者Flash(SSD)中,这要求大数据的存储系统支持多级缓存操作,并且很好的兼容各种硬件存储设备。
8)故障维护
相较于传统存储系统,大数据的存储系统成本不仅仅意味着花费的多少,更多的涉及到其可用性。当数据管理系统的硬件规模达到成千上万时,每一个节点和节点的磁盘成本就会被成千上万地扩大,根据Google最初的设想,大数据的处理集群只需要采用低廉的日常用机即可(甚至可以是台式机),而低廉的存储设备加上众多节点使得故障率会高于一般的传统存储系统。因而对于大数据的存储系统来说,一是需要强大的容错软件管理能力,二是需要更加有效的运维系统来监控各种故障的发生,尤其是对于大数据存储系统可能拥有十万级别的硬盘,磁盘故障可能每天都会发生。
4、大数据存储方案简介
大数据存储方案随着大数据计算的发展也已经历时将近10年,有的已经被广泛应用,有的则是被不断的完善中,以下列举若干较为著名的大数据存储方案及其优缺点。
1)HDFS
大数据计算最为代表性的就是Google在2004年提出的MapReduce框架和相应的GFS存储系统。2008年Yahoo的工程师根据MapReduce的框架推出了开源的Hadoop[41项目,作为一个大数据处理典型开源实现,如今Hadoop项目已经被广泛应用于各大互联网企业的数据中心,并且正努力从一个开源项目走向商业化应用产品,不断得到完善。而HDFS(Hadoop Distributed File System)就是支持Hadoop计算框架的分布式大数据存储系统,它具有大数据存储系统几项重要特性,具有很高的容错性、可扩展性、高并发性,并且基于廉价存储服务器设备,是目前最为流行的大数据存储系统。但是它还有许多方面需要进一步完善,例如目前HDFS自身不能与POSIX文件系统兼容,用户需要通过其自定义的接口对数据进行读写管理,增加了各种数据存储之间交换的开发成本;又如目前HDFS为了到达高容错性,在数据中心中推荐及实际操作的副本数目设置为三,也就意味着用户的任意一份数据都会被复制三份保存在存储系统中,这样造成存储系统保存的数据量远大于实际用户需要的存储量,相比传统的RAID存储空间效率要低很多。
2)Tachyon
来自于美国加州大学伯克利分校的AMPLab的Tachyon是一个高容错的分布式文件系统,允许文件以内存的速度在集群框架中进行可靠的共享,其吞吐量要比HDFS高300多倍。Tachyon都是在内存中处理缓存文件,并且让不同的作业任务或查询语句以及分布式计算框架都能以内存的速度来访问缓存文件。由于Tachyon是建立在内存基础上的分布式大数据文件系统,所以其高吞吐量也是HDFS不能够媲美的,当然截止目前Tachyon也只是0.2 alpha发行版其稳定性和鲁棒性还有待检验。
3)其他
Quantcast File Syste(QFS)是一个商陛能、容错、分布式的开源大数据文件系统,其开发是为HDFS提供另一种选择,但是其读写性能可以高于HDFS,并能比HDFS节省50%存储空间。Ceph是基于POSIX的没有单点故障的PB级分布式文件系统,从而使得数据能容错和无缝的复制,Ceph的客户端已经合并到Linux内核2.6.34中;GlusterFS是一个可以横向扩展的支持PB级的数据量开源存储方案。GlusterFS通过TCP/IP或者InfiniBand RDMA方式将分布到不同服务器上的存储资源汇集成一个大的网络并行文件系统,使用单一全局命名空间管理数据。GIuster存储服务支持NFS、CIFS、HTTP、FTP以及Gluster自身协议,完全与POSIX标准兼容。现有应用程序不需要作任何修改或使用专用API,就可以对Gluster中的数据进行访问。
5、小结
存储管理已然成为大数据研究和应用的核心组件,各种改善人们El常生活、提高企业运营能力的实际应用都离不开数据的存取、分析和管理。本文从定义大数据开始,描述了其广泛应用和典型的架构,着重分析了大数据存储的三个主要特点(Volume规模大、Velocity速度快、Variety多样性)以及传统存储针对大数据面临的各种挑战。最后本文简单介绍了几种较为著名的大数据存储解决方案。无论是传统存储还是大数据存储,都要不断适应大数据应用的主要特点和基础架构,通过不断的改进和完善来切实有效地存取和处理El渐丰富的信息量。