2011年5月11日 星期三

[aMMAI] Paper Summary: Building a High-Level Dataflow System on top of Map-Reduce: The Pig Experience

Title: Building a High-Level Dataflow System on top of Map-Reduce: The Pig Experience
Author: Alan F. Gates, Olga Natkovich, Shubham Chopra, Pradeep Kamath, Shravan M. Narayanamurthy, Christopher Olston, Benjamin Reed, Santhosh Srinivasan, Utkarsh Srivastava
Publication: VLDB 2009


Pig 是一個high-level的系統,有點像SQL一樣可以利用一些語法去控制資料。
隨著資料量越來越龐大,許多地方都使用Map-Reduce來處理資料,Pig像是一個中介,將所寫的語法轉成Map-Reduce可處理的job

Map-Reduce programming model存在著一些問題。
1.      不支援N-step dataflow
2.      缺乏支援結合多個data setprocessing
3.      一些基本的且常用的操作(ex. Filtering, aggregation)必須自己寫。

Pig使用Pig Latin作為輸入,將之轉成Map-Reduce job
下面是整個處理過程的overview

Fig2 左邊就是使用者寫的Pig Latin,先將她轉為logical plan
Pig提供了許多type可以使用,支援比較複雜的type: maptuplebag

接著將Logical plan轉為physical plan
上面的數字表示對應的步驟,其中JOINGROUP會對應的多個physical stage

最後再將physical plan轉成map reduce plan

Pig 提供了對nested sub-plan的處理,所以在physical多了SPLIT/MULTIPLEX的處理。因為使用者可能想對同一份資料作多項處理,但是並不想重複load data
為了控制pipeline中的tuple,他們也考慮的push modelpull model

由於Hadoop是用java開發,所以pig也用java開發,但是因為java無法直接對memory作處理,所以很容易造成memory不夠的問題。
一般解決的方式是用增加JVM memory大小。

此外,Pig也提供了UDF,使用者自訂的函式。
他們對每個STREAM建立兩個thread: 一個用來feeding data去執行,另一個用來consuming data,先queue起來。
  
這篇paper最主要應該是要解決Map-Reduce上的問題,以及提供一些high-level的控制方式,讓使用者可以更方便操作資料。



沒有留言:

張貼留言