记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0

基本信息

官网 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为复杂的海量数据并行计算提供了一个简单的操作和编程接口。
记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
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

记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
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

记一次 Centos7.x Hadoop3.x集群安装部署 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

记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
(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

记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
13、启动 Pig 服务

[root@master ~]# /usr/bigdata/pig-0.17.0/bin/pig
或
[root@master ~]# pig

记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
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);

记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0

grunt> DUMP A;

记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
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;

效果如下:
记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
16、在 HDFS 的 Web 页面查看运行结果
记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
17、查看输入的文件内容
记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
18、查看执行的结果
记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
19、退出 Pig
记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0

至此,Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0 操作完毕,希望能够对您有所帮助!

上一篇:Flume2Kafka2HBase功能


下一篇:JZ76 删除链表中重复的结点(较难)