Hadoop入門進階課程7--Pig介紹、安裝與應用案例


本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,博主為石山園,博客地址為 http://www.cnblogs.com/shishanyuan  。該系列課程是應邀實驗樓整理編寫的,這里需要贊一下實驗樓提供了學習的新方式,可以邊看博客邊上機實驗,課程地址為 https://www.shiyanlou.com/courses/237

【注】該系列所使用到安裝包、測試數據和代碼均可在百度網盤下載,具體地址為 http://pan.baidu.com/s/10PnDs,下載該PDF文件

1搭建環境

部署節點操作系統為CentOS,防火牆和SElinux禁用,創建了一個shiyanlou用戶並在系統根目錄下創建/app目錄,用於存放Hadoop等組件運行包。因為該目錄用於安裝hadoop等組件程序,用戶對shiyanlou必須賦予rwx權限(一般做法是root用戶在根目錄下創建/app目錄,並修改該目錄擁有者為shiyanlou(chown R shiyanlou:shiyanlou /app)。

Hadoop搭建環境:

l  虛擬機操作系統: CentOS6.6  64位,單核,1G內存

l  JDK1.7.0_55 64

l  Hadoop1.1.2

2Pig介紹

Pigyahoo捐獻給apache的一個項目,使用SQL-like語言,是在MapReduce上構建的一種高級查詢語言,把一些運算編譯進MapReduce模型的MapReduce中。Pig 有兩種運行模式: Local 模式和 MapReduce 模式

l  本地模式:Pig運行於本地模式,只涉及到單獨的一台計算機

l  MapReduce模式:Pig運行於MapReduce模式,需要能訪問一個Hadoop集群,並且需要裝上HDFS

Pig的調用方式:

l  Grunt shell方式:通過交互的方式,輸入命令執行任務;

l  Pig script方式:通過script腳本的方式來運行任務;

嵌入式方式:嵌入java源代碼中,通過java調用來運行任務。

3搭建Pig環境

3.1 下載並解壓安裝包

Apache下載最新的Pig軟件包,點擊下載會推薦最快的鏡像站點,以下為下載地址:http://mirror.bit.edu.cn/apache/pig/

clip_image002[4]

也可以在/home/shiyanlou/install-pack目錄中找到該安裝包,解壓該安裝包並把該安裝包復制到/app目錄中

cd /home/shiyanlou/install-pack

tar -xzf pig-0.13.0.tar.gz

mv pig-0.13.0 /app

clip_image004[4]

3.2 設置環境變量

使用如下命令編輯/etc/profile文件:

sudo vi /etc/profile

clip_image006[4]

設置pigclass路徑和在path加入pig的路徑,其中PIG_CLASSPATH參數是設置pigMapReduce工作模式:

export PIG_HOME=/app/pig-0.13.0

export PIG_CLASSPATH=/app/hadoop-1.1.2/conf

export PATH=$PATH:$PIG_HOME/bin

clip_image008[4]

編譯配置文件/etc/profile,並確認生效

source /etc/profile

echo $PATH

3.3 驗證安裝完成

重新登錄終端,確保hadoop集群啟動,鍵入pig命令,應該能看到pig連接到hadoop集群的信息並且進入了grunt shell命令行模式:

clip_image010[4]

4測試例子

4.1 測試例子內容

/home/shiyanlou/install-pack/class7中有website_log.zip測試數據文件,該文件是某網站訪問日志,請大家使用pig計算出每個ip的點擊次數,例如 123.24.56.57 13 24.53.23.123 7 34.56.78.120 20 .... 等等

4.2 程序代碼

 

 1 //加載HDFS中訪問日志,使用空格進行分割,只加載ip列
 2 records = LOAD 'hdfs://hadoop:9000/class7/input/website_log.txt' USING PigStorage(' ') AS (ip:chararray);
 3 
 4 // 按照ip進行分組,統計每個ip點擊數
 5 records_b = GROUP records BY ip;
 6 records_c = FOREACH records_b GENERATE group,COUNT(records) AS click;
 7 
 8 // 按照點擊數排序,保留點擊數前10個的ip數據
 9 records_d = ORDER records_c by click DESC;
10 top10 = LIMIT records_d 10;
11 
12 // 把生成的數據保存到HDFS的class7目錄中
13 STORE top10 INTO 'hdfs://hadoop:9000/class7/out';

4.3 准備數據

可以在/home/shiyanlou/install-pack/class7中找到本節使用的測試數據website_log.zip文件,使用unzip文件解壓縮,然后調用hadoop上傳本地文件命令把該文件傳到HDFS中的/class7目錄,如下圖所示:

cd /home/shiyanlou/install-pack/class7

unzip website_log.zip

ll

hadoop fs -mkdir /class7/input

hadoop fs -copyFromLocal website_log.txt /class7/input

hadoop fs -cat /class7/input/website_log.txt | less

 

clip_image012[4]

4.4 實現過程

4.4.1 輸入代碼

進入pig shell 命令行模式:

clip_image014[4]

輸入代碼:

clip_image016[3]

4.4.2 運行過程

在執行過程中在JobTracker頁面觀察運行情況,鏈接地址為:http://**.***.**.***:50030/jobtracker.jsp

clip_image018[3]

點擊查看具體作業信息

clip_image020[3]

可以觀察到本次任務分為4個作業,每個作業一次在上一次作業的結果上進行計算

clip_image022[3]

clip_image024[3]

4.4.3 運行結果

通過以下命令查看最后的結果:

hadoop fs -ls /class7/out

hadoop fs -cat /class7/out/part-r-00000

clip_image026[3]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM