关闭

Hadoop之Pig从安装到使用

标签: hadoopmapreducepig大数据
212人阅读 评论(0) 收藏 举报
分类:

简介

Pig是一个基于Hadoop的大规模数据分析工具,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。[1]
相比Java的MapReduce api,Pig为大型数据集的处理提供了更高层次的抽象,与MapReduce相比,Pig提供了更丰富的数据结构,一般都是多值和嵌套的数据结构。Pig还提供了一套更强大的数据变换操作,包括在MapReduce中被忽视的连接Join操作。[2]

使用的版本
hadoop:2.7.4
pig:0.16.0

配置

1、下载
http://mirrors.shuosc.org/apache/pig/pig-0.16.0/
我这里下载的是0.16.0,目前最新的是0.17.0
2、解压到适当目录后,配置环境变量
PIG_HOME 值是pig的根目录
PIG_CLASSPATH 值是hadoop目录下的etc/hadoop
PTAH 值是pig的bin目录
3、输入pig,默认是执行的mapreduce类型
可以选择执行类型,local和mapreduce以及tez

pig -x, -exectype - Set execution mode: local|mapreduce|tez, default is mapreduce.

local模式

1、建立pig测试文件夹,启动pig shell 本地模式

这里写图片描述

2、password文件内容

这里写图片描述

3、统计当前工作目录下password文件中用户

这里写图片描述

核心命令

grunt> A = load 'password' using PigStorage(':');

grunt> B = foreach A generate $0 as id;

grunt> dump B;

4、统计结果

这里写图片描述

命令参考:Hadoop Pig安装及测试

mapreduce模式

这是pig的默认模式,在终端如果只输入pig就会以mapreduce运行
试着在这个模式上执行上面的核心命令,会报错

Failed!

Failed Jobs:
JobId   Alias   Feature Message Outputs
job_1510640240196_0008  A,B MAP_ONLY    Message: Job failed!    hdfs://192.168.31.40:9000/tmp/temp-1299691098/tmp835924451,

Input(s):
Failed to read data from "hdfs://192.168.31.40:9000/user/liuxunming/password"

Output(s):
Failed to produce result in "hdfs://192.168.31.40:9000/tmp/temp-1299691098/tmp835924451"

Counters:
Total records written : 0
Total bytes written : 0
Spillable Memory Manager spill count : 0
Total bags proactively spilled: 0
Total records proactively spilled: 0

Job DAG:
job_1510640240196_0008


2017-11-27 16:01:18,715 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - Failed!
2017-11-27 16:01:18,723 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator for alias B
Details at logfile: /Users/liuxunming/pigtest/pig_1511769651826.log

(注:192.168.31.40 这个是我本地的局域网ip,因为刚开始测试pig是在本地伪分布式环境下测试的)
有人说是因为jobtracker没有启动导致的,然而我这里是hadoop 2.7.4版本,已经不存在这个进程
后来在csdn bbs论坛里搜到一篇自问自答到帖子,他也遇到里同样的问题,解决方法就是换了hadoop的版本就行
然后我就换了公司集群 2.6.5 版本的hadoop上去尝试,结果确实不报这个错误了,报了historyserver进程未启动的错误

mr-jobhistory-daemon.sh start historyserver

之后就如第一种模式的运行结果一样,执行成功
至此Pig初步试用完毕
后续:今天在本地测试了wordcount发现也报同样类型的错误,就是在作业管理界面的logs里,都是说找不到java,所以说上面的问题可能不是hadoop的问题,至少目前来说,本地的单机hadoop都无法正常运行官方示例程序。

/bin/bash: /bin/java: No such file or directory

在stackoverflow上搜到同样的错误,他的解决方法是更改hadoop-env.sh中的java_home为绝对路径[4]

This was solved when I kept hard coded paths in hadoop-env.sh for JAVA_HOME and JAVA. Though these environment variables are set, somehow Hadoop fails to recognize them.

然而对于我这里的问题并没有效果

经典案例

wordcount[3]

a = LOAD '111.txt' as (line:chararray); 
words = FOREACH a GENERATE flatten(TOKENIZE(line)) as w; 
g = GROUP words by w;
wordcount = FOREACH g GENERATE group,COUNT(words); 
dump a

其中输入文件为存放在hdfs上/user/root目录下的一个名为111.txt的文件,文件具体内容如下

www.flyertea.com hm.baidu.com
www.flyertea.com eclick.baidu.com
www.flyertea.com eclick.baidu.com
pos.baidu.com www.flyertea.com
www.flyertea.com hm.baidu.com rec.m.sm.cn
www.flyertea.com
eclick.baidu.com

最终执行结果如下

(rec.m.sm.cn,1)
(hm.baidu.com,2)
(pos.baidu.com,1)
(eclick.baidu.com,3)
(www.flyertea.com,6)

我们再看一下普通的mapreduce的执行情况

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /user/root/111.txt /xm/112901

普通的mapreduce执行结果

eclick.baidu.com    3
hm.baidu.com    2
pos.baidu.com   1
rec.m.sm.cn 1
www.flyertea.com    6

其实归根结底,pig最后也转化成mapreduce运行的
观察Hadoop Cluster Metrics 作业管理界面
发现两种方式的执行耗时基本一致,上例pig耗时18秒,mr耗时14秒
pig执行完成后直接显示结果,不像mr还得手动cat结果才行,总之各有千秋。

0
0
查看评论

Hadoop(六)——子项目Pig

前边,讲述了Hadoop的两大支柱HDFS和MapReduce,我们通过将大数据的数据文件放在HDFS上,利用Java编写Map-Reduce,来实现数据的各种分析,并预测一些东西,实现大数据的商业价值,从而也体现了Hadoop价值所在。     但是反观传统...
  • liujiahan629629
  • liujiahan629629
  • 2015-09-16 00:15
  • 3957

Hadoop之——Pig框架

1.Pig是基于hadoop的一个数据处理的框架。   MapReduce是使用java进行开发的,Pig有一套自己的数据处理语言,Pig的数据处理过程要转化为MR来运行。 2.Pig的数据处理语言是数据流方式的,类似于初中做的数学题。 3.Pig基本数据类型:int、long、float...
  • l1028386804
  • l1028386804
  • 2015-06-14 16:00
  • 2702

[hadoop系列]Pig的安装和简单示例

inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish)。(来源:http://blog.csdn.net/inkfish)  Pig是Yahoo!捐献给Apache的一个项目,目前还在Apache孵化器(incubator)阶段,目前版本是v...
  • inkfish
  • inkfish
  • 2010-01-18 10:13
  • 17710

pig0.15+hadoop2.x安装 (注意版本匹配)

1.Pig是基于hadoop的一个数据处理的框架。   MapReduce是使用java进行开发的,Pig有一套自己的数据处理语言,Pig的数据处理过程要转化为MR来运行。 2.Pig的数据处理语言是数据流方式的,类似于初中做的数学题。 3.Pig基本数据类型:int、long、fl...
  • bbaiggey
  • bbaiggey
  • 2016-03-01 14:57
  • 923

<Hadoop>Pig安装及测试

参考 http://pig.apache.org/docs/r0.16.0/start.html http://blog.csdn.net/inkfish/article/details/5205999 http://news.tuxi.com.cn/news/122/1225068.html...
  • awsxsa
  • awsxsa
  • 2016-06-10 10:48
  • 967

用于进行hadoop pig分析的日志

  • 2016-05-12 11:01
  • 296KB
  • 下载

hadoop之pig安装及简单实例(四)

hadoop pig
  • sureSand
  • sureSand
  • 2018-01-06 23:12
  • 130

【hadoop pig】pig安装及使用

1    运行环境说明 1.1     硬软件环境 l  主机操作系统:Windows 64 bit,双核4线程,主频2.2G,6G内存 l  虚拟软件:VMware® Workstation 9.0...
  • seven_zhao
  • seven_zhao
  • 2015-02-04 14:44
  • 2969

Hadoop Pig 使用中碰到的问题与例子

Hadoop Pig 使用中碰到的问题与例子在Hive中以默认的格式存储一个外部表(External),从Pig中读取,直接使用PigStorage()即可,rg.apache.pig.piggybank.storage.HiveColumnarLoader是针对特定存储方式的Hive表。 例:...
  • taylordurton
  • taylordurton
  • 2015-12-28 14:38
  • 203

HADOOP的PIG框架

Pig框架简介 1.Pig是基于hadoop的一个数据处理的框架。   MapReduce是使用java进行开发的,Pig有一套自己的数据处理语言,Pig的数据处理过程要转化为MapReduce来运行。 2.Pig的数据处理语言是数据流方式的,类似于初中做的数学题。 3.Pig...
  • xuxiaocheng1
  • xuxiaocheng1
  • 2014-01-05 16:51
  • 964
    个人资料
    • 访问:177216次
    • 积分:2801
    • 等级:
    • 排名:第15119名
    • 原创:58篇
    • 转载:5篇
    • 译文:0篇
    • 评论:52条
    联系我吧
    我的App
    博客专栏
    文章分类