专栏首页字根中文校对软件Google的Sawzall,Yahoo的Pig和微软的Dryad

Google的Sawzall,Yahoo的Pig和微软的Dryad

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 是一个运行在HadoopDoug 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 Blocks MapReduce BBS

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 中文分词和二元分词综合对比

        为了测试中文分词和二元分词的差异,现将初步的测试数据做了对比。关于二元分词可以参考车东先生的相关文章。

    田春峰-JCJC错别字检测
  • 一种快速的未登陆词识别方法(原理和实现)

        最近网络上关于分词的算法已经很多了,在实际应用中每个人根据对分词的不同理解写了不同的中文分词算法,可谓百花齐放.     但现在似乎还没有针对未登...

    田春峰-JCJC错别字检测
  • 动态代理和nanning AOP-2 实现Introduction

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    田春峰-JCJC错别字检测
  • 【未完成】1-1 一元多项式的乘法与加法运算 (25 分)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    韩旭051
  • Go语言排序与接口实例分析

    本文实例讲述了Go语言排序与接口用法。分享给大家供大家参考。具体如下: import "fmt" type Sorter interface { Len()...

    李海彬
  • Java基础全面解析——Java语言基础

    高级编程语言的组成:关键字、标识符、注释、常量与变量、语句、函数、数组,下面一一介绍各个组成元素。 a)  关键字 i.  定义:关键字是一些英文单词,但在ja...

    大闲人柴毛毛
  • 逆元模板

    对于(a/b)%m==? 1.当m是素数的时候,根据费马小定理,直接输出b^(n-2)即可 2.否则,扩展欧几里得exgcd(b,m,x,y) 1 #incl...

    attack
  • iOS开发UI之日期控件的使用(UIDatePicker)

    @property (nonatomic) UIDatePickerMode datePickerMode; 

    珲少
  • C语言函数求参数顺序问题

    对于函数func,先求右边x+=2参数,返回x=8,然后计算结果。也就是传递给形参的两个值都是8,返回值为16。

    用户6755376
  • 675. Cut Off Trees for Golf Event

    You are asked to cut off all the trees in this forest in the order of tree’s he...

    用户1147447

扫码关注云+社区

领取腾讯云代金券