學習Hadoop——Pig 安裝和介紹
Pig 是由Yahoo 公司開源,是一種操作大規模資料集的指令碼語言,它為大型資料集的處理提供了更高層的抽象。Pig 構建在HDFS和Mapreduce 之上,能將資料處理翻譯成多個Map 和Reduce 函式,從某種程度上將程式猿從具體程式設計中解放出來。
Pig 簡介
pig 架構包括兩部分:用於描述資料流的稱為 Pig Latin 的程式語言,以及用於執行的Pig Latin 程式執行環境。執行環境分為JVM中的本地執行環境和Hadoop 叢集分散式執行環境。
Pig Latin 程式由一系列operation 和transformation 組成。每個操作或變換對輸入進行資料處理,併產生輸出結果。從整體上來看,這些操作整體上描述了一個數據流。Pig 執行環境把資料流翻譯為可執行的內部表示並執行它。在Pig 內部,這些變換操作被轉換成一系列的MapReduce 作業。但程式猿在大多數情況下並不需要知道這些轉換是如何進行的。
Mapreduce 的一個缺點是開發週期長,而Pig 的長處是很少用Pig Latin 程式碼就能夠處理TB 級資料。Pig 的另外一個更有用的特徵是它支援在輸入資料的一個代表性的子集上試執行。這樣,使用者可以在處理整個資料集前檢查執行時是否會有錯誤。
Pig 並不適合所有的資料處理任務,和Mapreduce 一樣,它為資料批處理而設計得。如果只想查詢大資料集中的一小部分資料,Pig 的表現不會很好,原因在於Pig 掃描整個資料集或者其中絕大部分
Pig 的安裝與執行
Pig 有兩種執行模式:Local 模式和Mapreduce 模式。其中本地模式Pig 執行只設計到單獨的一臺計算機,而在Mapreduce 模式下,Pig 需要訪問Hadoop 叢集,需要使用HDFS 檔案系統。
Pig 的呼叫方式包括Grunt shell 方式和Pig script 方式兩種。其中:Grant shell 方式是通過互動方式,輸入命令執行任務;Pig script 指令碼通過script 指令碼方式來執行任務。
Pig的執行方法
指令碼 Grunt 嵌入式
Grunt
自動補全機制 Autocomplete檔案 Eclipse外掛PigPen
Grunt shell命令
1.安裝前的準備
下載並解壓pig安裝包( http://pig.apache.org/)
把需要安裝的.tar.gz 檔案上傳到一個指定的目錄,在主節點上hadoop1 上解壓縮安裝包
接著把解壓後的目錄整體複製到一個新的指定目錄下,為了後面好管理
2.使用root 許可權編輯/etc/profile
使用source /etc/profile 使生效
複製主機hadoop2 ,hadoop3 節點上的profile 檔案通過scp
scp /etc/profile [email protected]:/etc hadoop3 類似的
使用hadoop 使用者重新登入hadoop1,hadoop2,hadoop3,以使得變數在三臺主機上對hadoop擁護生效。
3.使用本地模式驗證安裝是否成功
Pig 本地模式執行在JVM中,僅訪問本地系統,該模式適合於處理小規模資料集或者Pig 試用 。執行型別可用-x 或者
-exectype 選項進行設定。
輸入 pig -x local 使用本地模式執行,出現grunt > 提示符,表明已安裝
重新登入使環境變數生效
用set命令檢查環境變數
4.配置Pig 的Mapreduce 模式
在Mapreduce 模式下,pig 會將查詢翻譯為Mapreduce 作業,然後在Hadoop 叢集上執行。如果Pig 處理的是大規模資料
集,就應該使用Mapreduce 模式。
在主節點上使用root使用者編輯/etc/profile 檔案,增加PIG_CLASSPATH 環境變數
export PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop 編輯完成之後,重新登入以使得設定生效
修改hosts檔案
5. 驗證pig 的Mapreduce 模式
直接輸入pig 命令,出現grunt> 提示即可(必須確保hadoop 是啟動的
jps 檢視各節點——> pig
pig 提示已經連線到hdfs://hadoop1:9000,表示Mapreduce 執行模式已經啟動
6.修改Pig 的日誌檔案目錄
Pig 日誌建立預設認為當前目錄,這樣不方便進行分析和管理,一般都需要進行修改,首先在$PIG_HOME 目錄下新建立logs 資料夾
cd $PIG_HOME
mkdir logs
接著修改$PIG_HOME/conf/pig.properties 配置檔案
Pig 常用命令示例
HDFS 能用的命令均可以在Pig 中使用
grunt> ls /
hadoop fs -ls /
以上兩者檢視得到的東西相同
mkdir input1
cat
Pig Latin 簡介
只介紹常用的
1.LOAD
把本地檔案系統或者HDFS 檔案系統中檔案載入到Pig 中的關係中
A=LOAD '/usr/aaa.txt' ;把檔案系統中的/usr下的檔案aaa.txt 載入到Pig 關係中
2.FOREACH
對某個關係進行迭代,生成一個數據轉換
C= FOREACH B GENERATE group,COUNT(A.IP);逐行掃描關係B中各行,並且輸出其分組,按照IP 進行計算總數,將此結
果賦予關係給C。
3.FILTER
過濾行,基於某個條件從關係中選擇一組元組
A= FILTER A BY(IP == '192.168.1.2') ;把關係A中符合條件的資訊過濾出來
4.DUMP
將結果顯示到螢幕
如DUMP C;把關係C中資訊顯示到螢幕上
5.STORE
將結果儲存到檔案系統中
STORE C INTO '/usr/result'; 把關係C中資訊儲存到檔案系統的/usr/result目錄下
6.GROUP
將資料分組為一個或者多個關係
B= GROUP A BY IP ;把關係A中資訊以IP 分組然後存在B關係中
7.JOIN
連線兩個或者兩個以上的關係(內部或者外部關聯)
關係B(name,age):(zhang,25)
關係C(name,age):(wang,23)
(zhang,23);
則D=JOIN B BY (name,25,zhang,23)
8.ORDER
根據一個或多個欄位對關係進行排序
A= ORDER A BY ip desc;把關係A中內容根據ip 降序排序
9.DISTINCT
B=DISTINCT B;把關係B重複內容去掉