那些年Google公开的大数据领域论文

2023-11-14

Mikio L. Braun柏林工业大学机器学习学博士后,TWIMPACT联合创始人兼首席数据科学家。在其个人博客上总结了Google近几年大数据领域的论文,并发表了自己的见解。

以下为译文:

主流的大数据基本都是MapReduce的衍生,然而把目光聚焦到实时上就会发现:MapReuce的局限性已经渐渐浮现。下面将讨论一下自大数据开始,Google公布的大数据相关技术,以及这些技术的现状。

MapReuce、Google File System以及Bigtable:大数据算法的起源

按时间算第一篇的论文应该2003年公布的 Google File System,这是一个分布式文件系统。从根本上说:文件被分割成很多块,使用冗余的方式储存于商用机器集群上;这里不得不说基本上Google每篇论文都是关于“商用机型”。

紧随其后的就是2004年被公布的 MapReduce,而今MapReuce基本上已经代表了大数据。传说中,Google使用它计算他们的搜索索引。而Mikio L. Braun认为其工作模式应该是:Google把所有抓取的页面都放置于他们的集群上,并且每天都使用MapReduce来重算。

Bigtable发布于2006年,启发了无数的NoSQL数据库,比如:Cassandra、HBase等等。Cassandra架构中有一半是模仿Bigtable,包括了数据模型、SSTables以及提前写日志(另一半是模仿Amazon的Dynamo数据库,使用点对点集群模式)。

Percolator:处理个体修改

Google并没有止步于MapReduce。事实上,随着Internet的指数增长,从零开始重算所有搜索索引变得不切实际。取而代之,Google开发了一个更有价值的系统,同样支持分布式计算。

这也是其有趣的地方,特别是在对比常见的主流大数据之后。举个例子,Percolator引入了事务,而一些NoSQL数据库仍然在强调得到高扩展性的同时你必须牺牲(或者不再需要)事务处理。

在2010年这篇 Percolator的论文中,Google展示了其网络搜索是如何保持着与时俱进。Percolator建立于已存类似Bigtable的技术,但是加入了事务以及行和表上的锁和表变化的通知。这些通知之后会被用于触发不同阶段的计算。通过这样的方式,个体的更新就可以“渗透”整个数据库。

这种方法会让人联想到类似Storm(或者是Yahoo的S4)的流处理框架(SPF),然而Percolator内在是以数据作为基础。SPF使用的一般是消息传递而不是数据共享,这样的话更容易推测出究竟是发生了什么。然而问题也随之产生:除非你手动的在某个终端上储存,否则你将无法访问计算的结果。

Pregel:可扩展的图计算

最终Google还需要挖掘图数据,比如在线社交网络的社交图谱;所以他们开发了 Pregel,并在2010年公布其论文。

Pregel内在的计算模型比MapReduce复杂的多:基本上每个节点都拥有一个工作者线程,并且对众多工作者线程进行迭代并行。在每一个所谓的“superstep”中,每一个工作者线程都可以从节点的“收件夹”中读取消息和把消息发送给其它节点,设置和读取节点相关值以及边界,或者投票停止。线程会一直运行,直到所有的节点都被投票停止。此外,还拥有Aggregator和Combiner做全局统计。

论文陈述了许多算法的实现,比如Google的PageRank、最短路径、二分图匹配等。Mikio L. Braun认为,对比MapReduce或SPF,Pregel需要更多实现的再思考。

Dremel:在线可视化

在2010年,Google还公布了 Dremel论文。一个为结构化数据设计,并拥有类SQL语言的交互式数据库。然而取代SQL数据库使用字段填补的表格,Dremel中使用的是类JSON格式数据(更准确的说,使用Google Protocol buffer格式,这将加强对允许字段的限制)。内部,数据被使用特殊格式储存,可以让数据扫描工作来的更高效。查询被送往服务器,而优秀的格式可以最大性能的输出结果。

Spanner:全球分布

最后 Spanner—— 全球分布式数据库;Google在2009年提出了Spanner远景计划,并在2012年对外公布Spanner论文。Spanner的公布可以说是Google向大数据技术中添的又一把火,Spanner具有高扩展性、多版本、全球级分布以及同步复制等特性。

跨数据中心的高扩展性及全球分布会对一致性保障提出苛刻的需求 —— 读写的外部一致性和基于时间戳的全局读一致性。为了保障这一点,Google引入了TrueTime API。TureTime API可以同步全球的时间,拥有一个TT.now()的方法,将获得一个绝对时间,同时还能得到时间误差。为了保证万无一失,TrueTime API具有GPS和原子钟双保险。也只有这样的机制才能让全球范围内的并发处理得到保障。

大数据超越MapReduce

Google并没有止步于MapReduce,他们在MapReduce不适用的地方开发新方法;当然,对于大数据领域来说这是个福音。MapReduce不是万能的;当然,你可以更深入一步,比如说将磁盘数据移入内存,然而同样还存在一些任务的内部结构并不是MapReduce可以扩展的。

在Google思路以及论文的启发下,同样涌现出一些开源项目,比如:Apache Drill、Apache Giraph、斯坦福GPS等等。

Google近年来每篇论文都有着深远的影响,同时大数据领域内有很多人必然在翘首以盼Google的下一篇论文。

原文链接: Big Data beyond MapReduce: Google's Big Data papers (编译/仲浩 审校/王旭东)

欢迎 @CSDN云计算 微博参与讨论,了解更多云信息。

本文为CSDN编译整理,未经允许不得转载。如需转载请联系market@csdn.net

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

那些年Google公开的大数据领域论文 的相关文章

  • dynamoDB 如何存储数据?

    由于Dynamodb以键值对的形式存储数据 其中键是主键的类型 值是与其关联的数据 我想知道dynamo db是否真正理解值 json 我所说的值是指json与键关联的对象 RDBMS 中的一行 dynamo db 是否理解有一些属性以及它
  • NoSQL:如何根据经纬度检索“房子”?

    我有一个用于存储房地产的 NoSQL 系统 我在每栋房子的键值存储中拥有的一条信息是longitude and latitude 如果我想检索地理纬度 经度框中的所有房屋 如下面的 SQL SELECT from houses WHERE
  • 将多个前缀行过滤器设置为扫描仪 hbase java

    我想创建一台扫描仪 它可以为我提供带有 2 个前缀过滤器的结果例如 我想要其键以字符串 x 开头或以字符串 y 开头的所有行 目前我知道只能使用一个前缀 方法如下 scan setRowPrefixFilter prefixFiltet 在
  • 是否有 NoSQL 解决方案的比较(在某些情况下哪个更好?)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当我在 Linux PHP 架构中构建基于密钥的归档应用程序时 我正在尝试了解有关 NoSQL 的更多信息 谁能解释一下主要解决方案
  • 设计 Cassandra 数据模型的最佳实践是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 以及需要避免哪些陷阱 您有任何交易中断吗 例如 我听说导出 导入 Cassandra 数据非常困难 这让我想知道这是否会妨碍将生产数据
  • 使用 Cassandra 进行单元版本控制

    我的应用程序使用 AbstractFactory 作为 DAO 层 因此一旦实现了 HBase DAO 系列 创建 Cassandra DAO 系列并从多个角度查看差异对我来说将是非常好的 不管怎样 试图做到这一点 我看到 Cassandr
  • MongoDB 支持浮点类型吗?

    我正在将 mysql 数据库迁移到 mongodb 但我读过 MongoDb 数据类型 然后没有引用浮点类型 如 float double decimal 我如何在 mysql 模式中拥有一些带有十进制类型的字段 我该怎么做或我能做什么 M
  • Cassandra - 使用 ORDER BY 和 UPDATE 集群键的替代方法

    我的架构是 CREATE TABLE friends userId timeuuid friendId timeuuid status varchar ts timeuuid PRIMARY KEY userId friendId CREA
  • 无法从 HBase 导出表

    我无法将表从 HBase 导出到 HDFS 下面是错误跟踪 它的尺寸相当大 还有其他方法可以导出吗 我使用下面的命令来导出 我增加了 rpc 超时但作业仍然失败 sudo u hdfs hbase Dhbase rpc timeout 10
  • Firestore从集合中获取文档ID

    我正在尝试使用 id 检索我的文档 但无法弄清楚 目前我像这样检索我的文档 const racesCollection AngularFirestoreCollection
  • 如何使用 HBASE Shell 创建具有预分割和压缩或其他选项的表

    在 HBase shell 中 帮助文件向我们展示了几种允许的创建表的语法 create tableName NAME gt colFamily VERSIONS gt 5 create tableName NAME gt cf1 NAME
  • 如何使用对 Azure 表存储的单个查询检索多种类型的实体?

    我试图了解 Azure 表存储如何创建 facebook 风格的提要 但我陷入了如何检索条目的困境 我的问题几乎和https stackoverflow com questions 6843689 retrieve multiple typ
  • 国外收藏的查找和排序

    所以我有一个收藏users 并且此集合中的每个文档以及其他属性都有另一个集合中文档的 id 数组 workouts 集合中的每个文档workouts有一个名为date 这就是我想要得到的 对于特定用户 我想要获取属于该用户的锻炼的 work
  • HBase:返回不存在字段的记录

    我在 HBase 中有一个人员表 如下所示 ROW KEY COLUMN CELL dinesh column details code value dr 01 dinesh column status is error value fal
  • 连接到在 Docker 中运行的 HBase

    我无法连接到 Windows 上 Docker 中运行的 HBase banno hbase 独立 https registry hub docker com u banno hbase standalone 图像 但是 我可以连接到本地安
  • MongoDb聚合

    如何使用 mongoDb 聚合编写模拟查询 select count as ccount from a group by a someField order by ccount desc limit 1 使用 mongoDb 中的 grou
  • 为什么 NoSQL 比 RDBMS 更擅长“横向扩展”?

    我在a中读过以下文字技术博客 http tekedia com 12083 nosql database advantages and disadvantages 讨论NoSQL的优缺点 多年来 为了提高数据库服务器的性能 数据库管理员不得
  • Elasticsearch 聚合过滤器

    因为我在谷歌上找不到任何东西 是否可以在elasticsearch中过滤聚合 我正在考虑这样的事情 获取 SOME object X gt 100 的所有对象 提前致谢 编辑 样本数据 我有以下文档结构 docKey 1 value 2 d
  • 什么时候不应该使用 Cassandra? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 相关话题已经有很多讨论了卡桑德拉 http cassandra apache org lately Twitter Digg Facebook
  • Mongodump之后,调用MongoRestore挂起

    我们正在尝试在相对较小的数据库上做一个简单的 MongoDump 我们的步骤很简单 export 从目标机器上删除现有数据库 在目标机器上导入 MongoDump 完美执行 mongodump out root mongo prod DB

随机推荐