转载

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(chownR shiyanlou:shiyanlou /app )。

Hadoop 搭建环境:

l   虚拟机操作系统: CentOS6.6   64 位,单核, 1G 内存

l   JDK1.7.0_55 64

l   Hadoop1.1.2

2 Pig 介绍

Pig yahoo 捐献给 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/

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

也可以在 /home/shiyanlou/install-pack 目录中找到该安装包,解压该安装包并把该安装包复制到 /app 目录中

cd /home/shiyanlou/install-pack

tar -xzf pig-0.13.0.tar.gz

mv pig-0.13.0 /app

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

3.2   设置环境变量

使用如下命令编辑 /etc/profile 文件:

sudo vi /etc/profile

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

设置 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

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

编译配置文件 /etc/profile ,并确认生效

source /etc/profile

echo $PATH

3.3   验证安装完成

重新登录终端,确保 hadoop 集群启动,键入 pig 命令,应该能看到 pig 连接到 hadoop 集群的信息并且进入了 grunt shell 命令行模式:

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

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

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

4.4   实现过程

4.4.1  输入代码

进入 pig shell 命令行模式:

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

输入代码:

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

4.4.2  运行过程

在执行过程中在 JobTracker 页面观察运行情况,链接地址为: http://**.***.**.***:50030/jobtracker.jsp

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

点击查看具体作业信息

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

可以观察到本次任务分为 4 个作业,每个作业一次在上一次作业的结果上进行计算

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

4.4.3  运行结果

通过以下命令查看最后的结果:

hadoop fs -ls /class7/out

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

Hadoop入门进阶课程7--Pig介绍、安装与应用案例

正文到此结束
Loading...