Google的Sawzall,Yahoo的Pig和微软的Dryad
Greg 最近写了篇介绍Google,Yahoo,微软三大巨头公司分布式架构的Blog。这就是:Google的
Sawzall,Yahoo的
Pig 猪和微软的
Dryad 。
这真是一个信息爆炸的时代,在这个大背景里消耗CPU最多的计算会越来越多从“软件本身性能提升”逐渐转移到信息处理的过程中。描述计算速度提高的摩尔定 律,据说现在还仍然有效,可 ”Andy giveth, and Bill taketh away“ 的名言似乎应该改为:"Andy giveth, and
google(...) taketh away" 了。
言归正传,Yahoo猪年行大礼,在五一期间放出了:
PIG 猪 。(猪非彼
猪 ) Yahoo Pig 是一个运行在
Hadoop(Doug Cutting 在06年3月份加入了Yahoo )上的并行处理架构,有了Pig 使得普通的程序员具有了分析处理
gigantic数据集的能力。附带一下 Hadoop 基本进入了实用阶段 Amazon 的 EC2 和S3已经在使用了Hadoop了。
Yahoo Pig 有如下特点:
1、专注于于大量数据集分析(ad-hoc analysis , ad-hoc 代表:a solution that has been custom designed for a specific problem
);
2、运行在集群的计算架构上,Yahoo Pig 提供了多层抽象,简化并行计算让普通用户使用;这些抽象完成自动把用户请求queries翻译成有效的并行评估计划,然后在物理集群上执行这些计划;
3、提供类似 SQL 的操作语法;
4、开放源代码;
从对 Yahoo Pig 的了解来看,推荐大家使用,Google Sawzall 和 Microsoft Dryad 就别指望了。
Google Sawzall 是google labs 很早就释放出来了,虽然两者都是定位于分布式并行计算的架构,实现方式却大相径庭。
Sawzall 是基于
MapReduce 的,变成语法类似于 java 和 c 语言。
下面是 Sawzall 代码的例子:
proto "querylog.proto"
static RESOLUTION: int = 5; # minutes; must be divisor of 60
log_record: QueryLogProto = input;
queries_per_degree: table sum[t: time][lat: int][lon: int] of int;
loc: Location = locationinfo(log_record.ip);
if (def(loc)) {
t: time = log_record.time_usec;
m: int = minuteof(t); # within the hour
m = m - m % RESOLUTION;
t = trunctohour(t) + time(m * int(MINUTE));
emit queries_per_degree[t][int(loc.lat)][int(loc.lon)] <- 1;
}
下面是Pig 代码的例子:
a = COGROUP QueryResults BY url, Pages BY url;
b = FOREACH a GENERATE FLATTEN(QueryResults.(query, position)), FLATTEN(Pages.pagerank);
c = GROUP b BY query;
d = FILTER c BY checkTop5(*);
很显然,如果大家需要对结构化(半结构化)的数据进行分析处理时 Pig 的 SQL 的语法更便于掌握。
具体参考Yahoo Pig 的其他例子:
Pig Latin Examples:
Example 1: Word Count Example 2: Map/Reduce
Example 3: Pages and Queries
Example 4: PageRank 无独有偶,微软的Dryad 集成Linq (随着.net 2.0 正式发布了) 后叫:
DryadLINQ 。从个人角度讲我一直看好 Linq 这个产品,出身Aders不说,程序语言和数据处理合2为1对简单的Insert ,update ,delete,query 完全应该集成起来。这一点也是我喜欢Rails的原因吧。
目前微软的 Dryad 已经在
Microsoft's AdCenter 投入使用。
我想用Yahoo Pig 的话,做 Log 分析应该比较适合。
参考资料: sourcelab Dryad: Distributed Data-Parallel Programs from Sequential Building BlocksMapReduce BBS
分享到:
相关推荐
为了实现高效的并行计算,Sawzall系统利用了Google的基础架构,包括GFS(Google File System)和MapReduce。GFS为大规模数据存储提供了可靠的分布式文件系统,而MapReduce则提供了一种编程模型,用于简化大规模数据...
为此,Google开发了一种名为Sawzall的系统,专门用于处理和分析海量数据。本文将详细介绍Sawzall系统的工作原理、架构特点以及其实现细节。 #### 二、背景与动机 Sawzall系统的设计初衷是为了解决大规模数据集的...
- **分布式计算模型**:Sawzall利用了GFS和MapReduce等Google内部的基础架构,提供了强大的分布式计算环境。 - **数据本地性优化**:为了减少网络传输延迟,Sawzall尽可能地将计算任务分配到存储数据的节点上执行...
Sawzall是一种由Google开发的编程语言,主要用于大规模日志数据的分析和处理。它以其高效的处理能力和在日志数据分析领域的独特设计而备受关注。Sawzall的名字来源于木材切割机“链锯”,寓意其在数据处理上的强大...
Sawzall是一种专门设计用于处理大规模数据集的并行编程语言,由Google开发,以满足对互联网上无尽信息进行快速、高效分析的需求。这篇文档"海量数据分析:Sawzall并行处理"可能详细介绍了Sawzall语言的原理、应用...
例如,Google的Sawzall用于处理大规模数据流,FlumeJava是在MapReduce之上构建的复杂计算库,DryadLINQ是微软的分布式计算语言,Pig Latin是Yahoo!开发的数据流语言,这些模型为开发者提供了更灵活的编程接口和更...
尽管Sawzall并不像其他谷歌技术那样有直接的开源对应物,但它的一些概念在Pig和Hive等大数据处理工具中得到了体现。 7. GFS访谈录 Kirk McKusick和Sean Quinlan之间的访谈录提供了GFS的起源和演化背景,帮助我们更...
Cluster论文,发表于2003年,详细阐述了Google如何构建和管理其庞大的服务器集群,支撑其搜索引擎和其他服务。论文揭示了Google如何通过优化硬件选择、故障检测与恢复机制以及资源调度策略,实现高可用性和可扩展性...
- **特性**: Sawzall具有强大的表达能力和高度的灵活性,能够快速地分析和处理大规模数据集。 #### 三、平台与工具 - **操作系统**: Google的基础设施主要基于Linux操作系统构建。 - **编程语言**: Google在其平台...
【谷歌论文集】包含了12篇深度探讨云计算领域的专业论文,这些论文对于理解谷歌在云计算和大数据处理方面的创新和技术有着重要价值。以下是这些论文的主要内容和相关知识点的详细概述: 1. **《The Google File ...
本资源是我对 Google 云计算核心技术的深入剖析,涵盖了分布式基础设施、分布式大规模数据处理、分布式数据库技术和数据中心优化技术等多方面的知识点。 分布式基础设施:GFS GFS(Google File System)是 Google ...
- **Pig** 是一种用于数据分析的高层语言,类似于 Google 的 **Sawzall**。 #### Hadoop项目组成 Hadoop项目主要由以下几个组件构成: 1. **Hadoop Common**:提供通用的库和服务。 2. **Avro**:一套数据序列化...
这里提到了几个代表性系统,如Facebook的Hive、Yahoo的Pig、Microsoft的Scope、Google的Sawzall以及IBM Research的JAQL。这些系统都试图在云平台上提供SQL-like的功能,使得数据分析更加便捷。其中,Hive因其广泛的...
b) 并行数据库模仿并行数据库的SQL接口和模式支持,提高易用性,如Hive、Pig、Sawzall和DryadL1NQ。 c) 并行数据库与MapReduce共存,各取所长,进行任务划分,如Vertica、Teradata和HadoopDB。 六、数据分析技术 ...
与Yahoo的Pig、Google的Sawzall和Microsoft的DryadLINQ等类似系统相比,Hive更注重提供类似关系数据库的查询体验。 2. **Hive架构** - **操作界面**:用户可以通过命令行接口(CLI)、Web界面或Thrift API与Hive...
除此之外,Google还开发了Sawzall,这是一种基于MapReduce的领域特定语言,专门用于大规模数据处理,以及Chubby,这是一个高可用性的分布式数据锁服务,采用Paxos算法确保在系统故障时的数据一致性。 IBM的“蓝云”...