基本信息
官网 http://pig.apache.org/
下载地址 http://www.apache.org/dyn/closer.cgi/pig
https://mirror.bit.edu.cn/apache/pig
https://mirrors.bfsu.edu.cn/apache/pig
https://mirrors.tuna.tsinghua.edu.cn/apache/pig
开源中国 https://www.oschina.net/p/pig?hmsr=aladdin1e1
简介
Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口。
Pig包括两部分:
用于描述数据流的语言,称为Pig Latin。
1、用于执行Pig Latin程序的执行环境,当前有两个环境:单JVM中的本地执行环境和Hadoop集群上的分布式执行环境。
Pig内部,每个操作或变换是对输入进行数据处理,然后产生输出结果,这些变换操作被转换成一系列MapReduce作业,Pig让程序员不需要知道这些转换具体是如何进行的,这样工程师可以将精力集中在数据上,而非执行的细节上。
2、 Pig的特点
(1)专注于于大量数据集分析;
(2)运行在集群的计算架构上,Yahoo Pig 提供了多层抽象,简化并行计算让普通用户使用;这些抽象完成自动把用户请求queries翻译成有效的并行评估计划,然后在物理集群上执行这些计划;
(3)提供类似 SQL 的操作语法;
(4)开放源代码;
3、 Pig与Hive的区别
对于开发人员,直接使用Java APIs可能是乏味或容易出错的,同时也限制了Java程序员在Hadoop上编程的运用灵活性。于是Hadoop提供了两个解决方案,使得Hadoop编程变得更加容易。
•Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。
•Hive在Hadoop中扮演数据仓库的角色。Hive添加数据的结构在HDFS,并允许使用类似于SQL语法进行数据查询。与Pig一样,Hive的核心功能是可扩展的。
Pig和Hive总是令人困惑的。Hive更适合于数据仓库的任务,Hive主要用于静态的结构以及需要经常分析的工作。Hive与SQL相似促使 其成为Hadoop与其他BI工具结合的理想交集。Pig赋予开发人员在大数据集领域更多的灵活性,并允许开发简洁的脚本用于转换数据流以便嵌入到较大的应用程序。Pig相比Hive相对轻量,它主要的优势是相比于直接使用Hadoop Java APIs可大幅削减代码量。正因为如此,Pig仍然是吸引大量的软件开发人员。
集群背景
1、Centos7.x 安装OpenJDK1.8
https://blog.csdn.net/llwy1428/article/details/111144659
2、Centos7.x 安装部署 Hadoop 3.x HDFS基础环境
https://blog.csdn.net/llwy1428/article/details/111144524
3、Centos7.x Hadoop 3.x 部署 YARN 集群
https://blog.csdn.net/llwy1428/article/details/111464707
安装部署
1、下载安装文件 pig-0.17.0.tar.gz
[root@master ~]# wget -P /usr/bigdata/ https://mirror.bit.edu.cn/apache/pig/pig-0.17.0/pig-0.17.0.tar.gz
2、进入下载目录
[root@master ~]# cd /usr/bigdata/
3、解压文件
[root@master bigdata]# tar zxf pig-0.17.0.tar.gz
4、进入 Pig 的目录、查看文件列表
[root@master bigdata]# cd pig-0.17.0
5、设置 Pig 的系统环境变量
(1)编辑文件
[root@master ~]# vim /etc/profile
(2)编辑内容
export PIG_HOME="/usr/bigdata/pig-0.17.0"
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PIG_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/common/lib/*:$PIG_HOME/lib
(3)使已配置的环境变量生效
[root@master ~]# source /etc/profile
6、编辑 Pig 的配置文件
(1)编辑 pig.properties
[root@master ~]# vim /usr/bigdata/pig-0.17.0/conf/pig.properties
(2)编辑内容
fs.default.name=hdfs://master:9820
mapred.job.tracker=master:8030
exectype=mapreduce
pig.cachedbag.memusage=0.2
(3)编辑 Pig 目录 bin 下的 pig 文件
[root@master bin]# vim pig
(4)编辑、增加内容
JAVA_HOME=/usr/lib/jvm/java-1.8.0
HADOOP_HOME=/usr/bigdata/hadoop-3.3.0
HADOOP_CONF_DIR=/usr/bigdata/hadoop-3.3.0/etc/hadoop
PIG_CLASSPATH=/usr/bigdata/hadoop-3.3.0/etc/hadoop
7、在 HDFS 中创建目录,用来存放 Pig 的输入文件
[root@master ~]# hdfs dfs -mkdir -p /user/pig/input
8、测试文件 HTTP_20130313143750.dat 下载地址
https://download.csdn.net/download/llwy1428/14092793
把下载的 测试文件 HTTP_20130313143750.dat 上传至 HDFS 中 Pig 的输入目录
[root@master ~]# hdfs dfs -put /tmp/HTTP_20130313143750.dat /user/pig/input
9、Pig 和 Hadoop 统一 guava 版本
[root@master ~]# cd /usr/bigdata/pig-0.17.0/lib
[root@master lib]# rm -rf guava-11.0.jar
[root@master lib]# cp /usr/bigdata/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./
10、启动 Pig
[root@master pig-0.17.0]# bin/pig
如果报错
Cannot locate pig-core-h2.jar. do 'ant jar', and try again
则需要启动 ApplicationHistoryServer、timelineserver、JobHistoryServer
启动 ApplicationHistoryServer、timelineserver 配置如下
https://blog.csdn.net/llwy1428/article/details/112417384
11、分别启动服务
/usr/bigdata/hadoop-3.3.0/sbin/mr-jobhistory-daemon.sh start historyserver
/usr/bigdata/hadoop-3.3.0/sbin/yarn-daemon.sh start timelineserver
12、查看服务启动状态
[root@master ~]# jps
[root@master ~]# jps -l
13、启动 Pig 服务
[root@master ~]# /usr/bigdata/pig-0.17.0/bin/pig
或
[root@master ~]# pig
14、实例测试 HTTP_20130313143750.dat
grunt> A = LOAD '/user/pig/input/HTTP_20130313143750.dat' AS (t0:long,msisdn:chararray, t2:chararray, t3:chararray, t4:chararray, t5:chararray, t6:long, t7:long, t8:long, t9:long, t10:chararray);
grunt> DUMP A;
15、实例 2
(1)创建文件
[root@master ~]# touch /tmp/pig-wordcount.txt
(2)向文件 pig-wordcount.txt 写入测试内容
[root@master ~]# echo "hadoop,hadoop,hive,hbase,flume,pig,zookeeper,flume,kafka,storm,spark,kudu,flink,mysql,hadoop,hive,hbase,flume,pig,zookeeper,flume,kafka,hadoop,hive,hbase,flume,pig,zookeeper,flume,kafka,flume,pig,zookeeper,flume,kafka,storm,spark,kudu,flink,mysql,hadoop,hive,hbase,flume,pig,zookeeper,flume,kafka,hadoop,hive,hbase,flume,kafka,flume,pig,zookeeper,flume,kafka,storm,spark,kudu,flink,mysql,hadoop,hive,hbase,flume,pig,zookeeper,flume" >> /tmp/pig-wordcount.txt
(3)把文件 pig-wordcount.txt 上传至 HDFS
[root@master ~]# hdfs dfs -put /tmp/pig-wordcount.txt /user/pig/input
(4)启动 Pig
[root@master ~]# pig
(5)执行命令
grunt> B = LOAD '/user/pig/input/pig-wordcount.txt' AS (line:chararray);
grunt> C = foreach B generate flatten(TOKENIZE(line,'\t,.'))as word;
grunt> D = group C by word;
grunt> E = foreach D generate group,COUNT(C) as count;
grunt> DUMP E;
效果如下:
16、在 HDFS 的 Web 页面查看运行结果
17、查看输入的文件内容
18、查看执行的结果
19、退出 Pig
至此,Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0 操作完毕,希望能够对您有所帮助!