Apache Pig的前世今生

最近,散仙用了几周的Pig来处理分析我们网站搜索的日志数据,感觉用起来很不错,今天就写篇笔记介绍下Pig的由来,除了搞大数据的人,可能很少有人知道Pig是干啥的,包括一些是搞编程的,但不是搞大数据的,还包括一些既不是搞编程的,也不是搞大数据的,而是从事其他行业的朋友,所以很有可能望文生义,一看标题,就乐了,心里就开始默默的翻译了===》 Apache 猪的笔记,看起来Apache的猪,比较厉害啊,都能写笔记了。 

开个玩笑,下面进入正题,散仙,尽量写的通俗易懂,让大家看了之后都能够理解这头Pig到底是干什么的。

Pig最早是雅虎公司的一个基于Hadoop的并行处理架构,后来Yahoo将Pig捐献给Apache(一个开源软件的基金组织)的一个项目,由Apache来负责维护,Pig是一个基于 Hadoop的大规模数据分析平台,它提供的SQL-like语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简 易的操作和编程接口,这一点和FaceBook开源的Hive(一个以SQL方式,操作hadoop的一个开源框架)一样简洁,清晰,易上手!

那么雅虎公司主要使用Pig来干什么呢?

1)吸收和分析用户的行为日志数据(点击流分析、搜索内容分析等),改进匹配和排名算法,以提高检索和广告业务的质量。 
2)构建和更新search index。对于web-crawler抓取了的内容是一个流数据的形式,这包括去冗余、链接分析、内容分类、基于点击次数的受欢迎程度计算(PageRank)、最后建立倒排表。 
3)处理半结构化数据订阅(data seeds)服务。包括:deduplcaitin(去冗余),geographic location resolution,以及 named entity recognition.

使用Pig来操作hadoop处理海量数据,是非常简单的,如果没有Pig,我们就得手写MapReduce代码,这可是一件非常繁琐的事,因为MapReduce的任务职责非常明确,清洗数据得一个job,处理得一个job,过滤得一个job,统计得一个job,排序得一个job,编写DAG(带先后顺序依赖的)作业很不方便,这还可以接受,但是每次只要改动很小的一个地方,就得重新编译整个job,然后打成jar提交到Hadoop集群上运行,是非常繁琐的,调试还很困难,所以,在现在的大互联网公司或者是电商公司里,很少有纯写MapReduce来处理各种任务的,基本上都会使用一些工具或开源框架来操作。

随着,数据海啸的来临,传统的DB(Oracle、DB2)已经不能满足海量数据处理的需求,MapReduce逐渐成为了数据处理的事实标准,被应用到各行各业中。所以,我们不再期望所有的客户都能快速开发应用相关代码,只能把客户的工作变得简单,就像使用SQL语言,经过简单培训就可以“云”上操作。

Pig就是为了屏蔽MapReduce开发的繁琐细节,为用户提供Pig Latin这样近SQL语言处理能力,让用户可以更方便地处理海量数据。Pig将SQL语句翻译成MR的作业的集合,并通过数据流的方式将其组合起来。

Pig的一个简单处理流程,如下所示:

 
执行引擎如下所示: 

在Pig里面,每一步操作,都是一个数据流,非常容易理解,你想要什么,它就能得到什么,即使不能得到,我们也可以通过轻松扩展UDF来实现,比SQL更容易理解,每一步要做什么,非常容易上手和学习,在大数据时代,了解和使用Pig来分析海量数据是非常容易的。

最后告诉大家一个好消息,在最新的Pig(0.14)发行版里,有两个重要的特性: 
(1)支持Pig运行在Tez上 
(2)支持Orc格式的存储

如果你已经迫不及待想了解Pig了,那么请不要客气,直接点击Pig官网链接http://pig.apache.org/,里面有很全,很丰富的介绍和学习资料等着你的加入! 


扫码关注微信公众号:我是攻城师(woshigcs),如果有什么疑问,技术问题,职业问题或求职问题,等,欢迎在公众号上留言与我探讨!让我们做不一样的攻城师!谢谢大家!  

时间: 2024-10-11 20:45:33

Apache Pig的前世今生的相关文章

玩转大数据系列之Apache Pig高级技能之函数编程(六)

原创不易,转载请务必注明,原创地址,谢谢配合! http://qindongliang.iteye.com/ Pig系列的学习文档,希望对大家有用,感谢关注散仙! Apache Pig的前世今生 Apache Pig如何自定义UDF函数? Apache Pig5行代码怎么实现Hadoop的WordCount? Apache Pig入门学习文档(一) Apache Pig学习笔记(二) Apache Pig学习笔记之内置函数(三) 玩转大数据系列之Apache Pig如何与Apache Lucen

玩转大数据系列之Apache Pig如何与Apache Solr集成(二)

散仙,在上篇文章中介绍了,如何使用Apache Pig与Lucene集成,还不知道的道友们,可以先看下上篇,熟悉下具体的流程. 在与Lucene集成过程中,我们发现最终还要把生成的Lucene索引,拷贝至本地磁盘,才能提供检索服务,这样以来,比较繁琐,而且有以下几个缺点: (一)在生成索引以及最终能提供正常的服务之前,索引经过多次落地操作,这无疑会给磁盘和网络IO,带来巨大影响 (二)Lucene的Field的配置与其UDF函数的代码耦合性过强,而且提供的配置也比较简单,不太容易满足,灵活多变的

玩转大数据系列之Apache Pig如何通过自定义UDF查询数据库(五)

GMV(一定时间内的成交总额)是一个衡量电商网站营业收入的一项重要指标,例如淘宝,京东都有这样的衡量标准,感兴趣的朋友可以自己科普下这方面的概念知识. 当然散仙今天,并不是来解释概念的,而是记录下最近工作的一些东西,原来我们平台的GMV只有一个总的成交金额,并没有细分到各个系统的GMV的比重,比如搜索端,推荐端,移动端等等. 通过细粒度的分析各个系统所占的比重,对于指导各个系统完善和发展有一定的重要意义,这里不就深说了,下面先来看下散仙分析的搜索gmv的数据布局方式. (1)Hadoop集群上,

使用 Apache Pig 处理数据5

使用 Apache Pig 从大数据集中获得所需的信息 Apache Pig 是一个高级过程语言,适合于使用 Hadoop 和 MapReduce 平台来查询大型半结构化数据集.通过允许对分布式数据集进行类似 SQL 的查询,Pig 可以简化 Hadoop 的使用.本文将探索 Pig 背后的语言,并在一个简单的 Hadoop 集群中发现其用途. Hadoop 的普及和其生态系统的不断壮大并不令人感到意外.Hadoop 不断进步的一个特殊领域是 Hadoop 应用程序的编写.虽然编写 Map 和

玩转大数据系列之Apache Pig如何与MySQL集成(三)

上篇介绍了如何把Pig的结果存储到Solr中,那么可能就会有朋友问了,为什么不存到数据库呢? 不支持还是? 其实只要我们愿意,我们可以存储它的结果集到任何地方,只需要重写我们自己的StoreFunc类即可. 关于如何将Pig分析完的结果存储到数据库,在pig的piggy贡献组织里,已经有了对应的UDF了,piggybank是非apache官方提供的工具函数,里面的大部分的UDF都是,其他公司或着个人在后来使用时贡献的,这些工具类,虽然没有正式划入pig的源码包里,但是pig每次发行的时候,都会以

使用 Apache Pig 处理数据6

Pig Latin 是一个相对简单的语言,它可以执行语句.一调语句 就是一个操作,它需要输入一些内容(比如代表一个元组集的包),并发出另一个包作为其输出.一个包 就是一个关系,与表类似,您可以在关系数据库中找到它(其中,元组代表行,并且每个元组都由字段组成). 用 Pig Latin 编写的脚本往往遵循以下特定格式,从文件系统读取数据,对数据执行一系列操作(以一种或多种方式转换它),然后,将由此产生的关系写回文件系统.您可以在 清单 1 中看到该模式的最简单形式(一个转换). Pig 拥有大量的

使用 Apache Pig 处理数据7

Mapreduce 模式中的 Pig 对于 MapReduce 模式,必须首先确保 Hadoop 正在运行.要做到这一点,最简单的方法是在 Hadoop 文件系统树的根上执行文件列表操作,如 清单 3 所示. 清单 3. 测试 Hadoop 可用性 $ hadoop dfs -ls / Found 3 items drwxrwxrwx - hue supergroup 0 2011-12-08 05:20 /tmp drwxr-xr-x - hue supergroup 0 2011-12-08

Apache Pig入门学习文档(一)

1,Pig的安装    (一)软件要求    (二)下载Pig      (三)编译Pig 2,运行Pig    (一)Pig的所有执行模式    (二)pig的交互式模式    (三)使用pig脚本执行模式 3,Pig  Latin语句的声明     (一)加载数据     (二)使用和处理数据    (三)存储中间数据 (四)存储最终数据 (五)调试Pig Latin语言 4,Pig的属性值管理 5,Pig一些注意事项 1,Pig的安装 (一)软件安装 必须配置: (1)hadoop 下载地

如何给Apache Pig自定义UDF函数?

近日由于工作所需,需要使用到Pig来分析线上的搜索日志数据,散仙本打算使用hive来分析的,但由于种种原因,没有用成,而Pig(pig0.12-cdh)散仙一直没有接触过,所以只能临阵磨枪了,花了两天时间,大致看完了pig官网的文档,在看文档期间,也是边实战边学习,这样以来,对pig的学习,会更加容易,当然本篇不是介绍如何快速学好一门框架或语言的文章,正如标题所示,散仙打算介绍下如何在Pig中,使用用户自定义的UDF函数,关于学习经验,散仙会在后面的文章里介绍. 一旦你学会了UDF的使用,就意味