開個玩笑,下面進入正題,散仙,儘量寫的通俗易懂,讓大家看了之後都能夠理解這頭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的一個簡單處理流程,如下所示:
執行引擎如下所示:
在Pig裏面,每一步操作,都是一個數據流,非常容易理解,你想要什麼,它就能得到什麼,即使不能得到,我們也可以通過輕鬆擴展UDF來實現,比SQL更容易理解,每一步要做什麼,非常容易上手和學習,在大數據時代,瞭解和使用Pig來分析海量數據是非常容易的。
最後告訴大家一個好消息,在最新的Pig(0.14)發行版裏,有兩個重要的特性:
(1)支持Pig運行在Tez上
(2)支持Orc格式的存儲
如果你已經迫不及待想了解Pig了,那麼請不要客氣,直接點擊Pig官網鏈接http://pig.apache.org/,裏面有很全,很豐富的介紹和學習資料等着你的加入!
掃碼關注微信公衆號:我是攻城師(woshigcs),如果有什麼疑問,技術問題,職業問題或求職問題,等,歡迎在公衆號上留言與我探討!讓我們做不一樣的攻城師!謝謝大家!