Google的三种大数据处理系统

Google 在搜索引擎上所获得的巨大成功,很大程度上是由于采用了先进的大数据管理和处理技术。Google 的搜索引擎是针对搜索引擎所面临的日益膨胀的海量数据存储问题,以及在此之上的海量数据处理问题而设计的。

众所周知,Google 存储着世界上最庞大的信息量(数千亿个网页、数百亿张图片)。但是,Google 并未拥有任何超级计算机来处理各种数据和搜索,也未使用 EMC 磁盘阵列等高端存储设备来保存大量的数据。

2006 年,Google 大约有 45 万台服务器,到 2010 年增加到了 100 万台,截至 2018 年,据说已经达到上千万台,并且还在不断增长中。不过这些数量巨大的服务器都不是什么昂贵的高端专业服务器,而是非常普通的 PC 级服务器,并且采用的是 PC 级主板而非昂贵的服务器专用主板。

Google 提出了一整套基于分布式并行集群方式的基础架构技术,该技术利用软件的能力来处理集群中经常发生的结点失效问题。

Google 使用的大数据平台主要包括 3 个相互独立又紧密结合在一起的系统:Google 文件系统(Google File System,GFS),针对 Google 应用程序的特点提出的 MapReduce 编程模式,以及大规模分布式数据库 BigTable。

GFS

一般的数据检索都是用数据库系统,但是 Google 拥有全球上百亿个 Web 文档,如果用常规数据库系统检索,数据量达到 TB 量级后速度就非常慢了。正是为了解决这个问题,Google 构建出了 GFS。

GFS 是一个大型的分布式文件系统,为 Google 大数据处理系统提供海量存储,并且与 MapReduce 和 BigTable 等技术结合得十分紧密,处于系统的底层。它的设计受到 Google 特殊的应用负载和技术环境的影响。相对于传统的分布式文件系统,为了达到成本、可靠性和性能的最佳平衡,GFS 从多个方面进行了简化。

GFS 使用廉价的商用机器构建分布式文件系统,将容错的任务交由文件系统来完成,利用软件的方法解决系统可靠性问题,这样可以使得存储的成本成倍下降。

由于 GFS 中服务器数目众多,在 GFS 中,服务器死机现象经常发生,甚至都不应当将其视为异常现象。所以,如何在频繁的故障中确保数据存储的安全,保证提供不间断的数据存储服务是 GFS 最核心的问题。

GFS 的独特之处在于它采用了多种方法,从多个角度,使用不同的容错措施来确保整个系统的可靠性。

GFS 的系统架构如图 1 所示,主要由一个 Master Server(主服务器)和多个 Chunk Server(数据块服务器)组成。

Master Server 主要负责维护系统中的名字空间,访问控制信息,从文件到块的映射及块的当前位置等元数据,并与 Chunk Server 通信。

Chunk Server 负责具体的存储工作。数据以文件的形式存储在 Chunk Server 上。Client 是应用程序访问 GFS 的接口。

图 1  CFS 的系统架构

Master Server 的所有信息都存储在内存里,启动时信息从 Chunk Server 中获取。这样不但提高了 Master Server 的性能和吞吐量,也有利于 Master Server 宕机后把后备服务器切换成 Master Server。

GFS 的系统架构设计有两大优势。

Client 和 Master Server 之间只有控制流,没有数据流,因此降低了 Master Server 的负载。

由于 Client 与 Chunk Server 之间直接传输数据流,并且文件被分成多个 Chunk 进行分布式存储,因此 Client 可以同时并行访问多个 Chunk Server,从而让系统的 I/O 并行度提高。

Google 通过减少 Client 与 Master Server 的交互来解决 Master Server 的性能瓶颈冋题。Client 直接与 Chunk Server 进行通信,Master Server 仅提供查询数据块所在的 Chunk Server 的详细位置的功能。

数据块设计成 64MB,也是为了让客户端和 Master Server 的交互减少,让主要数据流量在客户端程序和 Chunk Server 之间直接交互。总之,GFS 具有以下特点。

1)采用中心服务器模式,带来以下优势。

可以方便地增加 Chunk Server。

Master Server可以掌握系统内所有 Chunk Server 的情况,方便进行负载均衡。

不存在元数据的一致性问题。

2)不缓存数据,具有以下优势。

文件操作大部分是流式读/写,不存在大量重复的读/写,因此即使使用缓存对系统性能的提高也不大。

Chunk Server 上的数据存储在本地文件系统上,即使真的出现频繁存取的情况,本地文件系统的缓存也可以支持。

若建立系统缓存,那么缓存中的数据与 Chunk Server 中的数据的一致性很难保证。

Chunk Server 在硬盘上存储实际数据。Google 把每个 chunk 数据块的大小设计成 64MB,每个 chunk 被复制成 3 个副本放到不同的 Chunk Server 中,以创建冗余来避免服务器崩溃。如果某个 Chunk Server 发生故障,Master Server 便把数据备份到一个新的地方。

MapReduce

GFS 解决了 Google 海量数据的存储问题,MapReduce 则是为了解决如何从这些海量数据中快速计算并获取期望结果的问题。

MapReduce 是由 Google 开发的一个针对大规模群组中的海量数据处理的分布式编程模型。

MapReduce 实现了 Map 和 Reduce 两个功能。Map 把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集,而 Reduce 是把两个或更多个 Map 通过多个线程、进程或者独立系统进行并行执行处理得到的结果集进行分类和归纳。

用户只需要提供自己的 Map 函数及 Reduce 函数就可以在集群上进行大规模的分布式数据处理。这一编程环境能够使程序设计人员编写大规模的并行应用程序时不用考虑集群的并发性、分布性、可靠性和可扩展性等问题。应用程序编写人员只需要将精力放在应用程序本身,关于集群的处理问题则交由平台来完成。

与传统的分布式程序设计相比,MapReduce 封装了并行处理、容错处理、本地化计算、负载均衡等细节,具有简单而强大的接口。正是由于 MapReduce 具有函数式编程语言和矢量编程语言的共性,使得这种编程模式特别适合于非结构化和结构化的海量数据的搜索、挖掘、分析等应用。

很多初学者,对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入大数据学习企鹅群:458345782,有大量干货(零基础以及进阶的经典实战)分享给大家,并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系

BigTable

BigTable 是 Google 设计的分布式数据存储系统,是用来处理海量数据的一种非关系型数据库。BigTable 是一个稀疏的、分布式的、持久化存储的多维度排序的映射表。

BigTable 的设计目的是能够可靠地处理 PB 级别的数据,并且能够部署到上千台机器上。Google 设计 BigTable 的动机主要有以下 3 个方面。

1)需要存储的数据种类繁多。

Google 目前向公众开放的服务很多,需要处理的数据类型也非常多,包括 URL、网页内容和用户的个性化设置等数据。

2)海量的服务请求。

Google 运行着目前世界上最繁忙的系统,它每时每刻处理的客户服务请求数量是普通的系统根本无法承受的。

3)商用数据库无法满足 Google 的需求。

一方面,传统的商用数据库的设计着眼点在于通用性,Google 的苛刻服务要求根本无法满足,而且在数量庞大的服务器上根本无法成功部署传统的商用数据库。另一方面,对于底层系统的完全掌控会给后期的系统维护和升级带来极大的便利。

在仔细考察了 Google 的日常需求后,BigTable 开发团队确定了 BigTable 设计所需达到的几个基本目标。

1)广泛的适用性

需要满足一系列 Google 产品而并非特定产品的存储要求。

2)很强的可扩展性

根据需要随时可以加入或撤销服务器。

3)高可用性

确保几乎所有的情况下系统都可用。对于客户来说,有时候即使短暂的服务中断也是不能忍受的。

4)简单性

底层系统的简单性既可以减少系统出错的概率,也为上层应用的开发带来了便利。

BigTable 完全实现了上述目标,已经在超过 60 个 Google 的产品和项目上得到了应用,包括 Google Analytics、GoogleFinance、Orkut、Personalized Search、Writely 和 GoogleEarth等。

以上这些产品对 Bigtable 提出了迥异的需求,有的需要高吞吐量的批处理,有的则需要及时响应,快速返回数据给最终用户。它们使用的 BigTable 集群的配置也有很大的差异,有的集群只需要几台服务器,而有的则需要上千台服务器。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,198评论 6 514
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,334评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,643评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,495评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,502评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,156评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,743评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,659评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,200评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,282评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,424评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,107评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,789评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,264评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,390评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,798评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,435评论 2 359

推荐阅读更多精彩内容

  • 分布式文件系统的主要功能有两个:一个是存储文档、图像、视频之类的Blob类型数据;另外一个是作为分布式表格系统的持...
    olostin阅读 3,170评论 1 5
  • 本博客在http://doc001.com/同步更新。 本文主要内容翻译自MySQL开发者Ulf Wendel在P...
    doc001阅读 2,086评论 0 3
  • 摘要:GFS在设计上有很多值得学习的地方,最近重读了一下GFS的设计论文,试图从架构设计的角度对GFS进行剖析,希...
    架构禅话阅读 4,414评论 0 2
  • 今天去老家走亲戚,想起很多小时候的人和事,原本以为遥远得已几近忘记,却发现样样清晰,如同刚刚发生在昨天。 看到姨,...
    醉如泥阅读 614评论 12 21
  • W3C简介 万维网联盟(World Wide Web Consortium,W3C),又称W3C理事会. 万维网的...
    wdsea阅读 251评论 0 0