解密谷歌的大数据技术
毫不夸张的说,google就是大数据时代的开拓者,google的大数据技术架构一直都是全球互联网企业争相学习和研究的重点,也为行业大数据技术的架构树立起了标杆。
下面就为大家解密google大数据技术架构:
一、谷歌的数据中心
谷歌目前建设了世界上最快最大的数据中心,这八个数据中心都距离加州的总部很远。而且还在中国香港、*以及新加坡也有数据中心。
二、谷歌新一代搜索引擎平台和大数据分析技术
谷歌是GFS MapReduce BigTable的缔造者,但是谷歌在新一代的搜索引擎这一块的领域计算机能力加强,替换了原来的系统,新一代的搜索引擎的核心系统:
1.基于Percolator的增量处理索引系统来取代MapReduce批处理索引系统,这个索引系统被称作Caffeine,它比MapReduce批处理索引系统搜索更快。
2.专为BigTable设计的分布式存储Colossus,也被称为GFS2(二代Google文件系统),它专为建立Caffeine搜索索引系统而用。
3.列存储数据库BigTable,但为了更好地支持大数据集的互动分析,Google推出了Dremel和PowerDrill。Dremel被设计用来管理非常大量的大数据集(指数据集的数量和每数据集的规模都大),而PowerDrill则设计用来分析少量的大数据集(指数据集的规模大,但数据集的数量不多)时提供更强大的分析性能。
4.为Google Instant提供服务的实时搜索引擎存储和分析架构。
5.Pregel,这是谷歌更快捷的网络和图算法。
在谷歌新一代搜索引擎平台上,每月40亿小时的视频,4.25亿Gmail用户,150,000,000 GB Web索引,却能实现0.25秒搜索出结果。
三、谷歌云服务
基于Colossus,谷歌为不但为用户提供了可以计算、存储以及应用的云服务。计算服务包括了计算的引擎以及应用的APP引擎;存储服务是利用了云存储、云SQL以及云数据的存储、永久磁盘等服务;云应用服务包括BigQuery、云终端(Cloud Endpoints)、缓冲、队列等。
四、谷歌大数据的智能应用服务
谷歌所提供的大数据分析智能主要是应用客户的情绪分析、交易上风险、产品推荐、
消息路由、诊断、客户流失预测、法律文案分类、电子邮件内容过滤、政治倾向预测、物种鉴定等多个方面。据称,大数据已经给Google每天带来2300万美元的收入。例如,一些典型应用如下:
(1)基于Map Reduce,Google的传统应用包括数据存储、数据分析、日志分析、搜索质量以及其他数据分析应用。
(2)基于Dremel系统, Google推出其强大的数据分析软件和服务 — BigQuery,它也是Google自己使用的互联网检索服务的一部分。Google已经开始销售在线数据分析服务,试图与市场上类似亚马逊网络服务(Amazon Web Services)这样的企业云计算服务竞争。这个服务,能帮助企业用户在数秒内完成万亿字节的扫描。
(3)基于搜索统计算法,Google推出搜索引擎的输写纠错、统计型机器翻译等服务。
(4)Google的趋势图应用。通过用户对于搜索词的关注度,很快的理解社会上的热点是什么。对广告主来说,它的商业价值就是很快的知道现在用户在关心什么,他们应该在什么地方投入一个广告。据此, Google公司也开发了一些大数据产品,如“Brand Lift in Adwords”、“Active GRP”等,以帮助广告客户分析和评估其广告活动的效率。
(5)Google Instant。输入关键词的过程,Google Instant 会边打边预测可能的搜索结果。
谷歌的大数据平台架构仍在演进中,追去的目标是更大数据集、更快、更准确的分析和计算。这将进一步引领大数据技术发展的方向
PowerDrill,Google又一个大数据分析大杀器
将近十年前,Google放出的两篇论文催生了Hadoop。最近,Google又有两篇论文放出,描述了他们用来处理大数据的利器。其中一篇提到的是Dremel。前不久,他们在正在举行的VLDB 2012大会上发布了一篇论文《Processing a Trillion Cells per Mouse Click》,其中提到了Google内部使用的一个工具——PowerDrill,只需要点一次鼠标,PowerDrill就可以处理上万亿条信息。论文中说:相比提供类似信息分析功能的传统数据库,该工具要快10倍到100倍。
Google从2008年开始使用PowerDrill,将其作为Dremel的变通方案。Google数据中心的头头之一Urs Hölzle在《连线》杂志的一篇文章中说:Dremel可以在3秒钟内查询一个P的数据。PowerDrill虽不能处理这么多数据,可能应对的量也不小了,而且它的处理速度更快。论文中的数据指出:PowerDrill可以在30到40秒内处理7820亿个单元的数据。Google说,这比Dremel的方式“高好几个数量级”。
网易杭州研究院副总监汪源发布了一篇博客,对PowerDrill和Dremel作出了分析和对比。他首先指出二者的相似之处:
PowerDrill与Dremel的类似之处在于都用了列存,都为SQL接口。
接下来,他分析了二者的不同:
- 两者的设计目标不同,Dremel设计用来管理非常大量的大数据集(指数据集的数量和每数据集的规模都大),而PowerDrill设计用来分析少量的大数据集(指数据集的规模大,但数据集的数量不多)时提供更强劲的分析性能。
- 设计思路不同,包括:
- Dremel数据存于外存;PowerDrill数据存于内存。
- Dremel没做数据分区,分析时要扫瞄所有需要的列;PowerDrill做了组合范围分区,分析时可以跳过很多不需要的分区(真实应用统计可以跳过92.41%的分区)。
- Dremel用层次数据模型;PowerDrill用普通关系模型。
- Dremel数据通常不需要load,增加数据很方便;PowerDrill数据要load,增加数据(估计)不太方便。
然后,他提到PowerDrill最鲜明的特点:
一个是已经提到的组合范围分区,另一个是空间效率非常高的内存数据结构。
首先,各列的数据使用基于字典的压缩技术,并且是双层字典。全局字典编码列中所有不同值,每个分区还有个小字典,映射分区内不同值的编码到全局编码,这样各分区内的值的编码取值范围比较小,从而可以用较少的比特来编码一个值。
在这个基本方法之上,还通过一下方式进一步优化空间效率:全局字典用trie结构;属性值Zippy压缩(热点数据不压缩,LRU替换);reorder纪录。这些优化通常能带来2-10+倍的空间效率提升。
对于使用内存做分析的做法,汪源认为:
PowerDrill设计用来分析少量的核心数据集,一般应用场景下数据量并不大,因此通过内存架构来提高分析效率我觉得是个相当合理的选择。
不过他对其组合范围分区的方式有自己的看法:
虽然论文中说领域专家通常很容易确定分区属性,但这个方式总是不通用,并且会导致load之后append数据不方便。如果用类似于InfoBright的Knowledge Grid的方式,可能分区过滤的效果会差一些,但可以规避上述两个问题。
Mike Olson是Cloudera的CEO,他曾说:“如果你想知道未来的大规模、高性能数据处理基础设施是什么样子,我的建议是去阅读Google目前刚刚放出的研究论文。”
MapReduce和BigTable的论文催生了大数据处理的事实标准Hadoop,这让我们不禁好奇:Dremel和PowerDrill又会催生什么项目呢?