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 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章