Hadoop第8周練習—Pig部署及統計訪問日志例子
1 運行環境說明
1.1 硬軟件環境
1.2 機器網絡環境
2 書面作業0:搭建Pig環境
2.1 Pig介紹
2.2 部署過程
2.2.1 下載Pig
2.2.2 上傳Pig
2.2.3 解壓縮
2.2.4 設置環境變量
2.2.5 驗證安裝完成
3 書面作業1:計算每個IP點擊次數
3.1 書面作業1內容
3.2 程序代碼
3.3 準備數據
3.4 實現過程
3.4.1 輸入代碼
3.4.2 運行過程
3.4.3 運行結果
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地址和主機名分布如下:
|
序號 |
機器名 |
類型 |
用戶名 |
運行進程 |
|
|
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/
2.2.2上傳Pig
把下載的pig-0.13.0.tar.gz安裝包,使用SSH Secure File Transfer工具(第1、2作業周2.1.3.1介紹)上傳到/home/hadoop/Downloads 目錄下
2.2.3解壓縮
在Downloads目中將pig解壓縮
cd /home/hadoop/Downloads/
tar -xzvf pig-0.13.0.tar.gz
把pig-0.13.0目錄移到/usr/local目錄下
sudo mv pig-0.13.0 /usr/local
cd /usr/local
ls /usr/local
2.2.4設置環境變量
使用如下命令編輯/etc/profile文件:
sudo vi /etc/profile
設置pig的class路徑和在path加入pig的路徑,其中PIG_CLASSPATH參數是設置pig在MapReduce工作模式:
export PIG_HOME=/usr/local/pig-0.13.0
export PIG_CLASSPATH=/usr/local/hadoop-1.1.2/conf
export PATH=$PATH:/usr/local/hadoop-1.1.2/bin:$PIG_HOME/bin
編譯配置文件/etc/profile,并確認生效
source /etc/profile
2.2.5驗證安裝完成
重新登錄終端,確保hadoop集群啟動,鍵入pig命令,應該能看到pig連接到hadoop集群的信息并且進入了grunt shell命令行模式:
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 程序代碼
// 加載HDFS中訪問日志,使用空格進行分割,只加載ip列
records = LOAD 'hdfs://hadoop1:9000/usr/hadoop/in/access_log.txt' USING PigStorage(' ') AS (ip:chararray);
// 按照ip進行分組,統計每個ip點擊數
records_b = GROUP records BY ip;
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';
3.3 準備數據
使用SSH工具(參見第1、2周2.1.3.1Linux文件傳輸工具所描述)把提供的測試數據access_log.txt上傳到本地目錄/usr/local/hadoop-1.1.2/input中,然后調用hadoop上傳本地文件命令把該文件傳到/usr/hadoop/in目錄中,如下圖所示:
access_log.txt日志內容如下:
3.4 實現過程
3.4.1輸入代碼
進入pig shell 命令行模式:
輸入代碼:
3.4.2運行過程
在執行過程中在JobTracker頁面觀察運行情況,鏈接地址為:http://hadoop1:50030/jobtracker.jsp
點擊查看具體作業信息
可以觀察到本次任務分為4個作業,每個作業一次在上一次作業的結果上進行計算
3.4.3運行結果
通過以下命令查看最后的結果:
hadoop fs -ls /usr/hadoop/week8
hadoop fs -cat /usr/hadoop/week8/part-r-00000










![clip_image014[1] clip_image014[1]](http://images0.cnblogs.com/blog/107289/201501/040906381534739.jpg)






浙公網安備 33010602011771號