Apache Pig的前世今生
最近,散仙用了幾周的Pig來處理分析我們網站搜索的日志數據,感覺用起來很不錯,今天就寫篇筆記介紹下Pig的由來,除了搞大數據的人,可能很少 有人知道Pig是干啥的,包括一些是搞編程的,但不是搞大數據的,還包括一些既不是搞編程的,也不是搞大數據的,而是從事其他行業的朋友,所以很有可能望 文生義,一看標題,就樂了,心里就開始默默的翻譯了===》 Apache 豬的筆記,看起來Apache的豬,比較厲害啊,都能寫筆記了。
開個玩笑,下面進入正題,散仙,盡量寫的通俗易懂,讓大家看了之后都能夠理解這頭Pig到底是干什么的。
Pig 最早是雅虎公司的一個基于Hadoop的并行處理架構,后來Yahoo將Pig捐獻給Apache(一個開源軟件的基金組織)的一個項目,由Apache 來負責維護,Pig是一個基于 Hadoop的大規模數據分析平臺,它提供的SQL-like語言叫Pig Latin,該語言的編譯器會把類SQL的數據分析請求轉換為一系列經過優化處理的MapReduce運算。Pig為復雜的海量數據并行計算提供了一個簡 易的操作和編程接口,這一點和非死book開源的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/ ,里面有很全,很豐富的介紹和學習資料等著你的加入!
來自:http://qindongliang.iteye.com/blog/2173685