设为首页 收藏本站
查看: 894|回复: 0

[经验分享] Apache Pig的前世今生

[复制链接]

尚未签到

发表于 2015-8-3 09:54:03 | 显示全部楼层 |阅读模式
  最近,散仙用了几周的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的一个简单处理流程,如下所示:

DSC0000.png
执行引擎如下所示:
DSC0001.jpg
在Pig里面,每一步操作,都是一个数据流,非常容易理解,你想要什么,它就能得到什么,即使不能得到,我们也可以通过轻松扩展UDF来实现,比SQL更容易理解,每一步要做什么,非常容易上手和学习,在大数据时代,了解和使用Pig来分析海量数据是非常容易的。
最后告诉大家一个好消息,在最新的Pig(0.14)发行版里,有两个重要的特性:
(1)支持Pig运行在Tez上
(2)支持Orc格式的存储

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


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

DSC0002.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-93565-1-1.html 上篇帖子: Apache Nutch 1.3 学习笔记十二(Nutch 2.0 的主要变化) 下篇帖子: php 将字符(包括汉字) 转换成16进制 (apache access log 中文显示16进制码)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表