热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

海量数据处理与存储调研

海量数据处理与存储调研1Hadoop发展现状[[1]]ApacheNutch是Hadoop的源头,该项目始于2002年,是ApacheLucene的子项目之一。至200

海量数据处理与存储调研

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

[[11]]http://www.china.com.cn/news/tech/2012-01/08/content_24351488.htm


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 如何使用代理服务器进行网页抓取?
    本文介绍了如何使用代理服务器进行网页抓取,并探讨了数据驱动对竞争优势的重要性。通过网页抓取,企业可以快速获取并分析大量与需求相关的数据,从而制定营销战略。同时,网页抓取还可以帮助电子商务公司在竞争对手的网站上下载数百页的有用数据,提高销售增长和毛利率。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • Hadoop源码解析1Hadoop工程包架构解析
    1 Hadoop中各工程包依赖简述   Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。   GoogleCluster:ht ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
author-avatar
小HuLkfz_264
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有