1. 程式人生 > >【hadoop pig】pig安裝及使用

【hadoop pig】pig安裝及使用

1    執行環境說明

1.1     硬軟體環境

l  主機作業系統:Windows 64 bit,雙核4執行緒,主頻2.2G,6G記憶體

l  虛擬軟體:VMware® Workstation 9.0.0 build-812388

l  虛擬機器作業系統:CentOS 64位,單核,1G記憶體

l  JDK:1.7.0_55 64 bit

l  Hadoop:1.1.2

1.2     機器網路環境

叢集包含三個節點:1個namenode、2個datanode,其中節點之間可以相互ping通。節點IP地址和主機名分佈如下:

序號

IP地址

機器名

型別

使用者名稱

執行程序

1

10.88.147.221

hadoop1

名稱節點

hadoop

NN、SNN、JobTracer

2

10.88.147.222

hadoop2

資料節點

hadoop

DN、TaskTracer

3

10.88.147.223

hadoop3

資料節點

hadoop

DN、TaskTracer

所有節點均是CentOS6.5 64bit系統,防火牆均禁用,所有節點上均建立了一個hadoop使用者,使用者主目錄是/usr/hadoop。所有節點上均建立了一個目錄/usr/local/hadoop,並且擁有者是hadoop使用者。

2    書面作業0:搭建Pig環境

2.1     Pig介紹

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

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

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

Pig的呼叫方式:

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

l

  Pig script方式:通過script指令碼的方式來執行任務;

l  嵌入式方式:嵌入java原始碼中,通過java呼叫來執行任務。

2.2     部署過程

2.2.1下載Pig

在Apache下載最新的Pig軟體包,點選下載會推薦最快的映象站點,以下為下載地址:http://mirror.bit.edu.cn/apache/pig/

clip_image002

2.2.2上傳Pig

把下載的pig-0.13.0.tar.gz安裝包,使用SSH Secure File Transfer工具(第1、2作業周2.1.3.1介紹)上傳到/home/hadoop/Downloads 目錄下

clip_image004

2.2.3解壓縮

在Downloads目中將pig解壓縮

cd /home/hadoop/Downloads/

tar -xzvf pig-0.13.0.tar.gz

clip_image006

把pig-0.13.0目錄移到/usr/local目錄下

sudo mv pig-0.13.0 /usr/local

cd /usr/local

ls /usr/local

clip_image008

2.2.4設定環境變數

使用如下命令編輯/etc/profile檔案:

sudo vi /etc/profile

clip_image010

設定pig的class路徑和在path加入pig的路徑,其中PIG_CLASSPATH引數是設定pig在MapReduce工作模式:

export PIG_HOME=/usr/local/pig-0.13.0

export PATH=$PATH:/usr/local/hadoop-1.1.2/bin:$PIG_HOME/bin

clip_image012

編譯配置檔案/etc/profile,並確認生效

source /etc/profile

2.2.5驗證安裝完成

重新登入終端,確保hadoop叢集啟動,鍵入pig命令,應該能看到pig連線到hadoop叢集的資訊並且進入了grunt shell命令列模式:

如果需要退出的話,在pig的grunt shell下鍵入quit即可。

clip_image014

3    書面作業1:計算每個IP點選次數

3.1     書面作業1內容

在課程資源下載本週的作業素材access_log.rar,是一段dataguru的網站訪問日誌 請大家使用pig處理這個日誌,計算出每個ip的點選次數,例如 123.24.56.57 13 24.53.23.123 7 34.56.78.120 20 .... 等等

3.2     程式程式碼

注意:如果在$PIG_HOME/conf的pig.properties中新增如下配置:

fs.default.name=hdfs://hadoop:9000
mapred.job.tracker=hadoop:9001

那麼在使用pig時可以路徑可以直接從根目錄開始寫,而不用謝hdfs的全路徑

// 載入HDFS中訪問日誌,使用空格進行分割,只加載ip列

a = LOAD 'hdfs://hadoop1:9000/usr/hadoop/in/access_log.txt' USING PigStorage(' ') AS (ip:chararray,t1:long,t2:long);

如果添加了上面紅色的配置,也可以使用:

a1 = load '/usr/hadoop/in/access_log.txt' ...

檢視處理完成的內容:

dump a;

// 按照ip進行分組,統計每個ip點選數

records_b = GROUP records BY ip;

注意:下面的'COUNT'要使用大寫,小寫的count pig不識別

records_c = FOREACH records_b GENERATE group,COUNT(records) AS click;

// 按照點選數排序,保留點選數前10個的ip資料

records_d = ORDER records_c by click DESC;

top10 = LIMIT records_d 10;

// 把生成的資料儲存到HDFS的week8目錄中

STORE top10 INTO 'hdfs://hadoop1:9000/usr/hadoop/week8';

另一個處理案例程式碼:

5.對wlan資料如何使用pig進行分析處理
5.1 把待處理的資料上傳到HDFS中
5.2 把HDFS中的資料轉換為pig可以處理的模式
    A = LOAD '/wlan' AS (t0:long, msisdn:chararray, t2:chararray, t3:chararray, t4:chararray, t5:chararray, t6:long, t7:long, t8:long, t9:long, t10:chararray);
5.3 把裡面的有用的欄位抽取出來
    B = FOREACH A GENERATE msisdn, t6, t7, t8, t9;    
5.4 分組資料
    C = GROUP B BY msisdn;    
5.5 流量彙總
    D = FOREACH C GENERATE     group, SUM(B.t6), SUM(B.t7), SUM(B.t8), SUM(B.t9);
5.6 儲存到HDFS中
    STORE D INTO '/wlan_result';    



3.3     準備資料

使用SSH工具(參見第1、2周2.1.3.1Linux檔案傳輸工具所描述)把提供的測試資料access_log.txt上傳到本地目錄/usr/local/hadoop-1.1.2/input中,然後呼叫hadoop上傳本地檔案命令把該檔案傳到/usr/hadoop/in目錄中,如下圖所示:

clip_image016

access_log.txt日誌內容如下:

clip_image018

3.4     實現過程

3.4.1輸入程式碼

進入pig shell 命令列模式:

clip_image014[1]

輸入程式碼:

clip_image020

3.4.2執行過程

在執行過程中在JobTracker頁面觀察執行情況,連結地址為:http://hadoop1:50030/jobtracker.jsp

clip_image022

點選檢視具體作業資訊

clip_image024

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

clip_image026

clip_image028

3.4.3執行結果

通過以下命令檢視最後的結果:

hadoop fs -ls /usr/hadoop/week8

hadoop fs -cat /usr/hadoop/week8/part-r-00000

clip_image030