Google大数据技术栈

Google大数据技术栈

1.数据存储层

GFS[GGL03]:Google文件系统(Google File System)是一个分布式文件系统,具有良好的容错性、扩展性和可用性,尤其是容错性表现突出,这使得GFS可构建在大量普通廉价机器上,进而容易进行”scale out“(横向扩展),相比于传统的”scale up“(向上扩展)方案中采用的大型机或小型机等,大大降低了成本。

BigTable[CDG+06]:构建在GFS之上的分布式数据库本质上是一个稀疏的、分布式的、持久化存储的多维度排序映射表。BigTable支持插入和更新等操作,且行数和列数可以无限扩展,这在很大程度上弥补了传统关系型数据库在schema上的不灵活。

MegaStore[BBC+11]:MegaStore是构建在BigTable之上,支持ACID特性的分布式数据库。它是一个具有高扩展性并可进行高密度交互的可用存储服务,其在Google的基础系统之中,起初主要解决APP Engine的数据存储问题。能够在广域网中同步复制文件写操作,在可接受的延迟下,支持跨数据中心的故障迁移。

Spanner[CDE+13]:Spanner是一个可扩展的、多版本、全球分布式、支持同步复制的数据库。它是第一个把数据分布在全球范围内的系统,并且支持外部一致性的分布式事务。Google官方认为,Spanner是下一代BigTable,也是MegaStore的继任者。

2.资源管理与服务协调层

Borg[VPK+15]:一个集群资源管理和调度系统,它负责集群的资源管理和统一调度,并对应用程序进行接收、启动、停止、重启和监控。Borg的目的是让开发者能够不必操心资源管理的问题,让他们专注于应用程序相关开发工作,并且做到跨多个数据中心的资源利用率最大化。

Omega[SKA+13]:Google下一代集群资源管理和调度系统,采用了共享状态下的架构,这使得应用程序调度器拥有整个集群的权限,可以自由获取资源,同时采用了基于多版本的并发访问控制方式(又称乐观锁,全称为MVCC,即Multi-Version Concurrency Control),解决潜在的资源冲突访问问题。

Chubby[Bur06]:该系统旨在为松散耦合的分布式系统提供粗粒度的锁以及可靠存储(低容量),它提供了一个非常类似于分布式文件系统的接口,能够很容易的实现leader选举、分布式锁、服务命名等分布式问题,它设计的侧重点在可用性及可靠性而不是高性能。

3.计算引擎层

MapReduce[DG08]:MapReduce是一个批处理计算框架,它采用”分而治之“的思想,将对大规模数据集的操作,分解成Map和Reduce两个阶段,Map阶段并行处理输入数据集,产生中间结果,Reduce阶段则通过整合各个节点的中间结果,得到最终结果。简单的说,MapReduce就是”任务的分解与结果的汇总“。MapReduce具有高吞吐率、良好的容错性、扩展性以及易于编程等特点,被广泛应用于构建索引、数据挖掘、机器学习等应用中。

Dremel[MGL+10]:Dremel是一个分布式OLAP(OnLine Analytical Processing)系统,通过引入列式存储、树状架构等技术,能够帮助数据分析师在秒级处理PB级数据。Dremel在一定程度上弥补了类MapReduce系统在交互式查询方面的不足。

Pregel[MAB+10]:Pregel是一个分布式图计算框架,专门用来解决网页链接分析、社交数据挖掘等实际应用中涉及的大规模分布式图计算问题,Pregel采用了BSP(Bulk Synchronous Parallel Computing Model)模型,即”计算->通信->同步“模型,通过消息传递的方式,实现高效的迭代计算。

Precolator[PD10]:Precolator是一个基于BiaTable构建的大数据集增量更新系统。其目标是在海量的数据集上提供增量更新的能力,并通过支持分布式事务来确保增量处理过程的数据一致性和整体系统的可扩展性。Precolator最初是为了解决网页库增量更新而提出的,用来弥补MapReduce无法逐个处理小规模更新的缺陷。

MillWheel[ABB+13]:MillWheel是一个分布式流式实时处理框架,它允许用户自定义一些处理单元,并按照一定的拓扑结构连接在一起形成一个有向图,从而形成一个流式处理数据线。MillWheel具有低延迟、自动处理乱序、数据严格一次投递(exactly-once delivery)等优点,在Google被广泛应用于构建低延迟数据处理应用。

4.数据分析层

FlumeJava[CRP+10]:FlumeJava是一个建立在MapReduce之上的java编程库,提供了一层高级原语以简化复杂的MapReduce应用程序开发,非常适合构建复杂的数据流水线。FlumeJava内置优化器,会自动优化应用程序的执行计划,并基于底层的原语来执行优化后的操作。

Tenzing[CLL+11]:建立在MapReduce之上的SQL查询执行引擎,它可以将用户编写的SQL语句优化为MapReduce程序,并提交到集群中分布式并行执行。

注:摘抄于《大数据技术体系详解 原理、架构与实践》董西成著

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值