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

相關文章
相關標籤/搜索