海量数据处理与存储调研

海量数据处理与存储调研

1        Hadoop发展现状[[1]]

ApacheNutch 是 Hadoop 的源头,该项目始于 2002年, 是Apache Lucene的子项目之一。 至 2004年,Google在OSDI上公开发表了题为 “MapReduce: simplified data processing on large clusters”的论文,受到启发的 Doug C 等人 开 始实 现 MapReduce 计算 框 架 并 与 NDFS (Nutch distributed file system) 结合支持 Nutch 的主要算法 。 至2006 年逐渐成为一套完整而独立的软件 ,起名为 Hadoop。2008 年初,Hadoop 成为 Apache 的顶级项目,应用到除Yahoo! 以外的很多互联网公司。

Hadoop技术已经在互联网领域得以广泛的应用 , 同时也得到研究界的普遍关注。如 Yahoo! 使用 4 000 节点的机群运行 Hadoop,支持广告系统和 Web 搜索的研究;Facebook 使用 1 000 节点的机群运行 Hadoop,存储日志数据,支持其上的数据分析和机器学习;IBM 的蓝云产品也直接将 Hadoop 软件集成到自己本身的云计算平台上;百度用 Hadoop 处理每周 200 TB 的数据,进行搜索日志分析和网页数据挖掘工作;中移动研究院基于 Hadoop 开发了“大云 ”(big cloud)系统 ,不但用于相关数据分析,还对外提供服务;淘宝的 Hadoop 系统用于存储并处理的交易相关数据。 国内的高校和科研院所基于 Hadoop 在数据存储、资源管理、作业调度、性能优化、系统高可用性和安全性方面进行研究,相关研究成果多以开源形式贡献给 Hadoop 社区。Cloudera 公司推出了首个 Hadoop 商业版本,一个能够存储千兆位容量信息的服务器产品。公司发言人表示“hadoop 应用于 Google、Yahoo、Facebook 等公司, 已经是一个成功的产品,发布该产品的商业版本,几乎是理所当然的事情 ”。 Cloudera 的 Hadoop 是免 费 的 , 并将 分 配 在Apache 2 软件许可下 。

2        淘宝网-集群存储架构

淘宝网部署了一个1.5PB的华为赛门铁克Oceanspace N8000Cluster NAS存储系统,以及一个包含赛门铁克FileStore软件的解决方案,该集群NAS存储系统方案能够对备份和恢复、动态存储分层(DST)和数据快照进行整合管理。第二台华为赛门铁克Oceanspace N8000部署在一个“active-active”系统中,从而让淘宝网的服务器能够访问复制的常用数据库,以便进行故障切换。

该团队还部署了Veritas NetBackup,以进行集中的数据保护。通过将NetBackup与N8000和FileStore相集成,可以实现更快速、更便捷的备份。

组合的解决方案具有高度可伸缩性,这是部署过程中的主要考虑因素之一。冯江解释说:“对于淘宝网来说,很难制定一个超过一年的完善计划,因为业务发展的速度太快了。因此集中管理和出色的可伸缩性对我们来说至关重要。内置了赛门铁克FileStore的华为赛门铁克N8000可以扩展到15PB,完全能够满足淘宝网一段时间内的需求。”

赛门铁克FileStore中的一项重要功能是动态存储分层 (DST),动态存储分层能够将数据动态移动到不同的存储层,以快速响应淘宝网不断变化的业务需求。经常使用的数据可以存储在第一层存储上,而不常用的数据则可以驻留在第二层或第三层存储上。[[2]]

OceanspaceN8000 Cluster NAS具体的架构可以参见[2]。

图表 1淘宝存储架构图[[3]]

3        淘宝海量数据产品技术架构[[4]][[5]]

图表 2总体架构

MyFox是分布式MySQL集群中间层,管理集群。

1.       关系型数据库仍然是王道

有成熟稳定的开源产品,SQL有较强的表达能力,只存储中间状态的数据,查询时过滤、计算、排序。分库分表、冷热分离

2.       NoSQL是SQL的有益补充

用冗余避免网络传输和随机读

3.       用中间层隔离前后端

         异构数据源的整合

4.       缓存是系统化的工程

         数据一致性、穿透与雪崩

 

4        淘宝286亿海量图片存储与处理架构,淘宝文件系统(已开源)[[6]]

淘宝网商铺中的商品照片,尤其是热门商品,图片的访问流量其实是非常大的。而且对于卖家来说,图片远胜于文字描述,因此卖家也格外看重图片的显示质量、上传时间、访问速度等等问题。根据淘宝网的流量分析,整个淘宝网流量中,图片的访问流量会占到90%以上,而主站的网页则占到不到10%。

淘宝整体图片存储系统容量1800TB(1.8PB),已经占用空间990TB(约1PB)。保存的图片文件数量达到286亿多个,这些图片文件包括根据原图生成的缩略图。平均图片大小是17.45K;8K以下图片占图片数总量的61%,占存储容量的11%。

这就给淘宝网的系统带来了一个巨大的挑战,众所周知,对于大多数系统来说,最头疼的就是大规模的小文件存储与读取,因为磁头需要频繁的寻道和换道,因此在读取上容易带来较长的延时。在大量高并发访问量的情况下,简直就是系统的噩梦。

到2007年6月,TFS(淘宝文件系统,Taobao FileSystem)正式上线运营。在生产环境中应用的集群规模达到了200台PC Server(146G*6 SAS 15K Raid5),文件数量达到上亿级别;系统部署存储容量: 140 TB;实际使用存储容量: 50 TB;单台支持随机IOPS 200+,流量3MBps。

•        每个Data Server运行在一台普通的Linux主机上

•        以block文件的形式存放数据文件(一般64M一个block)

•        block存多份保证数据安全

•        利用ext3文件系统存放数据文件

•        磁盘raid5做数据冗余

•        文件名内置元数据信息,用户自己保存TFS文件名与实际文件的对照关系–使得元数据量特别小。

到2009年6月,TFS 1.3版本上线,集群规模大大扩展,部署到淘宝的图片生产系统上,整个系统已经从原有200台PC服务器扩增至440台PC Server(300G*12 SAS15K RPM) + 30台PC Server (600G*12 SAS15K RPM)。支持文件数量也扩容至百亿级别;系统部署存储容量:1800TB(1.8PB);当前实际存储容量:995TB;单台Data Server支持随机IOPS 900+,流量15MB+;目前Name Server运行的物理内存是217MB(服务器使用千兆网卡)。

5        Facebook[[7]]

Facebook一开始就是建立在开源代码技术的基础上的。但Facebook对开源代码的使用远远超出了LAMP堆栈(或甚至超出了LAMP堆栈加Memcached)的范围。Facebook曾开发并发布了几个开源项目,而且也深入参与了另一些项目的开发,其中最出名的也许就是Hadoop了。

下面就是Facebook的几个开源工具,它们大大提高了Facebook处理海量数据的能力:

5.1  Cassandra

Cassandra现在已经是Apache软件基金会(ApacheSoftwareFoundation)的一个顶级项目。Cassandra是由很多数据库节点共同构成的分布式存储系统,可以支持比较丰富的数据结构,是一种非关系型(NoSQL)数据库解决方案。设计Cassandra的最初目的是解决Facebook收件箱搜索的存储需要。

5.2  Hive

Hive是基于Hadoop的数据仓库平台,它的查询语言HiveQL类似于SQL,因此熟悉SQL的人可以使用较丰富的查询方式来分析存储在Hadoop中的数据。Hive也是Apache软件基金会的项目。

5.3  HipHop

为了节省服务器资源,Facebook开发了HipHop,它可以把PHP源代码转变成高度优化的C++。HipHop在今年早些时候开源。

5.4  Scribe

  Facebook的日志数据每天约为25万亿比特,其他工具难以处理如此大量的数据,所以Facebook开发了Scribe,以便从大量服务器上实时收集日志数据。

5.5  Thrift

Thrift是一个可伸缩的跨语言的服务开发框架,它目前是Apache的一个孵化器项目。

6        Hadoop在Facebook的应用[8]

Facebook主要将Hadoop平台用于日志处理推荐系统数据仓库等方面。

Facebook将数据存储在利用Hadoop/Hive搭建的数据仓库上,这个数据仓库拥有4800个内核,具有5.5PB的存储量,每个节点可存储12TB大小的数据,同时,它还具有两层网络拓扑,如图表 3所示。Facebook中的MapReduce集群是动态变化的,它基于负载情况和集群节点之间的配置信息可动态移动。

 

图表 3 集群的网络拓扑

 

7        YahooS4SimpleScalable Streaming System)分布式流计算平台

流计算来自于一个信念:数据的价值随着时间的流逝而降低,所以事件出现后必须尽快地对它们进行处理,最好数据出现时便立刻对其进行处理,发生一个事件进行一次处理,而不是缓存起来成一批处理。实时搜索、高频率交易、社交网络等需要可扩展性好、能处理高频数据和大规模数据的流计算解决方案。S4是一个通用的、可扩展性良好、具有部分容错能力、支持插件的分布式流计算平台,在该平台上程序员可以很方便地开发处理流数据的应用。

MapReduce模型主要针对批处理(batch processing)应用,可以预先调度和控制作业的执行。流计算面向的是不可控的事件(load shedding问题)。hadoop不满足通用分布式流计算软件的需要。

8        Google的高可扩展架构与海量数据处理[[9]][[10]]

Google需要处理数据真正可以称得上海量,这依赖于其分布式的高扩展架构,否则,再强的小型机大型机也扛不住互联网每天产生的信息垃圾

一、底层架构

负载并行分配到多个硬件机器上
软件必须采用容错处理,不依赖具体的某一个台机器运行
大量采用刀片服务器和PC Server,低端存储和网络设备
机器追求性价比而不是盲目的高性能
基于Linux

二、分布式系统

调度系统:Scheduling System
调度系统是一个底层支撑系统,负责调度监控Cluster资源

文件存储:GFS
Master
节点负责管理文件系统元数据
Chunkserver
存放具体数据,以64MB为单元分布
客户端通过master查找文件
客户端直接从chunkserver获得需要的数据
目前运行超过200GFS群集
超过5000台机器
超过5PB数据
10000台以上客户端提供服务

数据存储:BigTable
采用多维稀疏映射图模型,每一个数据单元Cell可以存储不同时间截的数据
将表按行分隔成Tablet,分布到不同服务器上存储
底层存储架构采用GFS
Master
节点处理元数据和负载均衡
Tablet
服务器存储数据
锁服务器(Lock Service)控制数据访问的一致性
超过500个数据单元
最大的单元存储超过6000TB的数据,使用了超过3000台机器
最忙的单元支撑了500000次以上的操作

数据处理:MapReduce
MapRedule
Google的批量数据处理工具,分为两大功能

· 映射(Map):根据输入生成(key,value)键值对

· 简化(Reduce):合并存储(key,value)键值对

MapReduce用于Google的大多数产品中,包括Google Earth,News,Analytics,Search Quality,Indexing等等

目前,调度系统/GFS/BigTable/MapReduce可以在同一个群集内协同工作

三、未来的发展方向

跨越数据中心的分布式系统
更高的自动化程度

9        百度[[11]]

201216日中国非结构化数据管理高峰论坛。

陈尚义发言:

百度业务对数据存储和处理提出极高要求。要求数据高可用、高可靠、高通量、高时效、高并发、高可扩展(简称“六高”),要求百度的数据存储能力和处理能力必须以非常简单的方式获得扩容,以降低维护升级的代价。

面对这些特点和要求,百度必须开发自己的大数据存储系统。在百度最早上线数据存储系统时,类似Hadoop和HDFS等开源系统还没有发布,而且还由于开源系统的性能受限、无法充分利用机器的各种资源尤其是新硬件(flash/SSD)资源、无法为特定的访问模式做优化、缺乏满足工业界的稳定性等诸多原因,百度不能使用开源系统。不仅开源的用不上,而且市场上也无现成商业化产品可供百度使用,因为任何一个厂商都没有如此海量、如此复杂的数据。

百度一开始就自主开发了大数据存储系统,用于存储网页和超链、客户信息和用户产品、系统日志等海量数据,支持Table、Pipe、File和KV等数据类型,满足百度业务的流式和触发式计算、文件存储和访问、低延迟、高并发的需求。在此基础之上,百度还面向广大网民推出云存储系统,在前不久发布的百度易手机上,每个用户可拥有100G的免费存储空间。

陈尚义介绍说,为了应对上百PB的数据,满足诸多近乎苛刻的要求,百度作出了巨大努力。

第一,开发了网页更新模型,将对磁盘的随机写转化为批量的顺序写,大大提高了数据的写入速度,缩短了网页数据的更新周期,提高了搜索引擎等产品的时效果性。

第二,对涉及数据存储和访问的各个方面进行了全局优化。包括:针对访问模式采用数据索引、缓存热点数据、外存预读、IO缓存等技术手段,降低在线访问的延迟,提高系统的吞吐量;针对各种存储资源的特点,细粒度地发挥各种资源的优势;对单机硬件进行合理调配,优化CPU、内存、硬盘、SSD容量的配比;与CDN结合,将最常被访问的、相对静态的大数据自动缓存到距离用户最近的数据中心。

第三,定制Flash,使存储系统直接对Flash的多通道(Multiple Chanel)编程,既提高了并发性,又提高了存储资源的容量。

第四.采取多副本存储,以提高系统的可靠性和可用性。

第五,创造性地开发了自主知识产权的复制协议(ReplicationProtocol)。这个协议和TCP类似,TCP是基于连接的可靠性传输协议,而ReplicationProtocol是跨节点、跨连接的可靠传输协议。

第六,采取数据分治策略,保证数据存储的各个部件可以水平扩展,即通过简单地增加服务器就可以达到扩展的目的。

第七,采用拆片存储技术,避免单机存储热点记录或大记录所带来的性能瓶颈。

第八,运用局部更新大记录的策略,对于大记录分块存储,只有修改了的块才被更新,而不是对整个大文件都重写。这样极大地节约数据更新的成本。

第九,采用三层数据存储模型,将热点数据存放于内存,较热的数据存放于flash, “冷”数据存放于磁盘,针对数据访问的特性充分利用各种资源的优势。


10    参考文献



[[1]] 基于 Hadoop 的海量数据处理平台研究.kdh

[[2]]http://www.enet.com.cn/article/2010/0630/A20100630677361.shtml

[[3]] Oceanspace N8000集群NAS存储系统解决方案汇报.pdf

[[4]]淘宝海量数据产品技术架构.pptx

[[5]]淘宝数据魔方技术架构解析,http://www.programmer.com.cn/7578/

[[6]]揭秘淘宝286亿海量图片存储与处理架构,http://tech.163.com/digi/10/0901/06/6FFOOTN7001618JK.html

[[7]]Facebook如何利用开源代码进行扩张?http://www.8844.com/html/a/2010/09-01/269481.html

[[8]]Hadoop在Facebook的应用,http://book.51cto.com/art/201110/298609.htm

[[9]]Google的高可扩展架构与海量数据处理, http://www.ningoo.net/html/tag/gfs

[[10]] Handling Large Datasetsat Google.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值