微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

记一次 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为复杂的海量数据并行计算提供了一个简单的操作和编程接口。

在这里插入图片描述

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 操作完毕,希望能够对您有所帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐