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的一个简单处理流程,以下所示: 



254fb9d9-e8a9-3938-b785-371745bd0668.png 
执行引擎以下所示: 
aaeaf202-7acf-31ba-ab3c-d9be329e2efe.jpg 

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

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


若是你已经火烧眉毛想了解Pig了,那么请不要客气,直接点击Pig官网连接http://pig.apache.org/,里面有很全,很丰富的介绍和学习资料等着你的加入! 



扫码关注微信公众号:我是攻城师(woshigcs),若是有什么疑问,技术问题,职业问题或求职问题,等,欢迎在公众号上留言与我探讨!让咱们作不同的攻城师!谢谢你们!  

3214000f-5633-3c17-a3d7-83ebda9aebff.jpg web

相关文章
相关标签/搜索