Hadoop Pig简介、安装、试用

相比Java的MapReduce api,Pig为大型数据集的处理提供了更高层次的抽象,与MapReduce相比,Pig提供了更丰富的数据结构,一般都是多值和嵌套的数据结构。Pig还提供了一套更强大的数据变换操作,包括在MapReduce中被忽视的连接Join操作。

Hadoop版本:2.2.0

 Pig版本:0.12.1

Pig介绍

Pig包括两部分:

  • 用于描述数据流的语言,称为Pig Latin。
  • 用于执行Pig Latin程序的执行环境,当前有两个环境:单JVM中的本地执行环境和Hadoop集群上的分布式执行环境。

Pig内部,每个操作或变换是对输入进行数据处理,然后产生输出结果,这些变换操作被转换成一系列MapReduce作业,Pig让程序员不需要知道这些转换具体是如何进行的,这样工程师可以将精力集中在数据上,而非执行的细节上。

安装Pig

好,作为一切的开始,我们先安装一个Pig环境。

从http://hadoop.apache.org/pig/releases.html下载稳定版本,当前稳定版本是0.12.1,然后解压到任意目录,并且修改环境变量

tar xzf pig-0.12.1.tar.gz

export PIG_INSTALL=/root/pig/pig-0.12.1
export PATH=$PATH:$PIG_INSTALL/bin

本地模式

Grunt是Pig的外壳程序(shell)。本地模式下,Pig运行在单个JVM中,访问本地文件系统,该模式用于测试或处理小规模数据集

[[email protected] pig]# pig -x local
grunt>

MapReduce模式

在MapReduce模式下,Pig将查询翻译为MapReduce作业,然后在Hadoop集群上执行。Pig版本和Hadoop版本间,有要求,笔者这边的版本如下

Hadoop 2.2.0
Pig 0.12.1

注意:Pig 0.12.1默认是被编译成与Hadoop的旧版本的,所以这边需要重新编译下Pig,运行如下命令,编译时间比较长,耐心等待。参考时间:16min

ant clean jar-all -Dhadoopversion=23

否则运行Pig任务时,会有如下错误:

 Hadoop: java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected

然后,Pig是放在Hadoop集群上的,所以设置下HADOOP_HOME等环境变量

export HADOOP_HOME=/root/hadoop/hadoop-2.2.0
export PATH=$PATH:/root/hadoop/hadoop-2.2.0/bin

运行Pig的MapReduce模式,命令如下:

pig
或者:pig -x mapreduce

运行Pig程序示例

运行一个简单的示例,就是把linux下的/etc/passwd文件的第一列提取出来输出,用MapReduce模式跑,效果就是输入所有用户名

首先把/etc/passwd文件put到hadoop的hdfs上,命令如下

hadoop fs -put /etc/passwd /user/root/passwd

然后进入Pig shell,运行命令,以‘:‘分隔提取A,然后把A的第一列放入B,dump打出B

[[email protected]]# pig
grunt> A = load ‘passwd‘ using PigStorage(‘:‘);
grunt> B = foreach A generate $0 as id;
grunt> dump B;

输出如下:

(省略几万字....)
Input(s):
Successfully read 29 records (1748 bytes) from: "hdfs://192.168.12.67:8020/user/root/passwd"

Output(s):
Successfully stored 29 records (325 bytes) in: "hdfs://192.168.12.67:8020/tmp/temp1558767875/tmp-1327634226"

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

Job DAG:
job_1401631066126_0005

(省略几万字....)

(root)
(bin)
(daemon)
(adm)
(lp)
(sync)
(shutdown)
(halt)
(mail)
(uucp)
(operator)
(games)
(gopher)
(ftp)
(nobody)
(dbus)
(vcsa)
(rpc)
(abrt)
(rpcuser)
(nfsnobody)
(haldaemon)
(ntp)
(saslauth)
(postfix)
(sshd)
(tcpdump)
(oprofile)
(riak)

Pig适用场景

Pig并不适合所有的数据处理任务,和MapReduce一样,它是为数据批处理而设计的,如果想执行的查询只涉及一个大型数据集的一小部分数据,Pig的实现不会很好,因为它要扫描整个数据集或其中很大一部分。

随着新版本发布,Pig的表现和原生MapRedece程序差距越来越小,因为Pig的开发团队使用了复杂、精巧的算法来实现Pig的关系操作。除非你愿意花大量时间来优化Java MapReduce程序,否则使用Pig Latin来编写查询的确能帮你节约时间。

附录:

执行Pig程序的方法

  • 脚本:Pig可以运行包含Pig命令的脚本文件,例如,pig script.pig,对于很短的脚本可以通过使用-e选项直接在命令行中输入脚本字符串。
  • Grunt:Pig shell,就是上文的运行模式
  • 嵌入式方法:也可以在Java中运行Pig程序,和使用JDBC运行SQL程序很像,详情:https://wiki.apache.org/pig/EmbeddedPig

Pig与RDBMS、Hive比较

  • Pig Latin是一种数据流编程语言,而SQL是一种描述性编程语言。换句话说,Pig程序是相对于输入的一步步操作,其中每一步是对数据的一个简答的变换。相反,SQL语句是一个约束的集合,这些约束的集合在一起,定义了输出。
  • 示例也可以看出,Pig其实是对Java的Mapreduce的封装,进一步的抽象,运行的也是java程序,并在此基础上提供其他特性。
  • Hive介于Pig和传统RDBMS(关系数据库管理系统Relational Database Management System)之间,Hive的设计目的是让精通SQL既能的分析师能够在存放在HDFS的大规模数据集上运行查询。
  • Hive在很多方面和传统数据库类似,但是它底层对HDFS和MapReduce的依赖意味着它的体系结构有别于传统数据库。
  • Hive本身不存储数据,完全依赖于HDFS和MapReduce,Hive可以将结构化的数据文件映射为一张数据库表,Hive中表纯逻辑,就是表的元数据。而HBase是物理表,定位是NoSQL。

后记

  • 以上只是简单介绍了下Pig,提供安装和运行demo,也算是对自己知识面的扩充以及加深对Hadoo体系的了解。
  • 关于Pig多值和嵌套的数据结构,以及Join的关系操作都没有涉及,如果后期有深入了解的必要,博文将继续。。。

转:http://www.cnblogs.com/yanghuahui/p/3768270.html

时间: 2024-10-07 06:32:51

Hadoop Pig简介、安装、试用的相关文章

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

inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yahoo!捐献给Apache的一个项目,眼下还在Apache孵化器(incubator)阶段,眼下版本号是v0.5.0.Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-like语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运

Apache Hadoop 集群安装文档

简介: 软件:jdk-8u111-linux-x64.rpm.hadoop-2.8.0.tar.gz http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz 系统:CentOS 6.8 x64 主机列表及配置信息: master.hadoop datanode[01:03].hadoop CPU: 8 4 MEM: 16G 8G DISK: 100G*2 100G*2 一.系统初始化

Pig的安装和使用方法

本文使用的pig版本是pig-0.12.0.tar.gz,在安装以前已经安装好了hadoop,hadoop的安装方法参考 hadoop-1.2.1安装方法详解 pig的安装方法很简单,配置一下环境即可,pig有两种工作模式:本地模式和MapReduce模式(默认). 1.上传并解压pig-0.12.0.tar.gz [[email protected] temp]$ tar zxf pig-0.12.0.tar.gz 2.配置pig的环境变量并使之生效 export PIG_HOME=/home

Hadoop伪分布安装详解+MapReduce运行原理+基于MapReduce的KNN算法实现

本篇博客将围绕Hadoop伪分布安装+MapReduce运行原理+基于MapReduce的KNN算法实现这三个方面进行叙述. (一)Hadoop伪分布安装 1.简述Hadoop的安装模式中–伪分布模式与集群模式的区别与联系. Hadoop的安装方式有三种:本地模式,伪分布模式,集群(分布)模式,其中后两种模式为重点,有意义 伪分布:如果Hadoop对应的Java进程都运行在一个物理机器上,称为伪分布 分布:如果Hadoop对应的Java进程运行在多台物理机器上,称为分布.[集群就是有主有从] 伪

Hadoop完全分布式安装教程

软件版本 Hadoop版本号:hadoop-2.6.0-cdh5.7.0: VMWare版本号:VMware 9或10 Linux系统:CentOS 6.4-6.5 或Ubuntu版本号:ubuntu-14.04.1-desktop-i386 Jdk版本号:Jdk1.7.0._79 后三项对版本要求不严格,如果使用Hbase1.0.0版本,需要JDK1.8以上版本 安装教程 1.VMWare安装教程 VMWare虚拟机是个软件,安装后可用来创建虚拟机,在虚拟机上再安装系统,在这个虚拟系统上再安装

Python 3 mysql 简介安装

Python 3 mysql 简介安装 一.数据库是什么 1.  什么是数据库(DataBase,简称DB) 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据库中的数据按一定的数字模型组织.描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并且可为各种用户共享. 2.什么是数据(Data) 描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机 在计算机中

【原】centos6.5下hadoop cdh4.6 安装

1.架构准备: namenode 10.0.0.2 secondnamenode 10.0.0.3 datanode1 10.0.0.4 datanode2 10.0.0.6 datanode3 10.0.0.11 2.安装用户:cloud-user 3.[namenode]namenode到其他节点ssh无密码登录: ssh-keygen     (一路回车) ssh-copy-id [email protected]3 ssh-copy-id [email protected]4 ssh-c

hadoop学习;安装jdk,workstation虚拟机v2v迁移;虚拟机之间和跨物理机之间ping网络通信

JDK 在Ubuntu下的安装 与 环境变量的配置 前期准备工作: 找到  JDK 和 配置TXT文件  并复制到桌面下  不是文件夹 而是文件复制到桌面下 下面的命令部分就直接复制粘贴就可以了 1.配置root用户 使用快捷键 Ctrl + Alt + T  打开终端 输入命令:sudo passwd root 在需要输入密码的地方 输入 123456  (注意 需要输入3次 每次输入的时候在屏幕上是不显示出来的) 2.启用root用户 在终端输入命令:su root 输入密码:123456

自动化运维工具ansible--笔记一之简介安装/常用模块

 目录:      简介安装      常用模块 简介安装: yum -y install ansible ssh-keygen -t rsa ssh-copy-id -i .ssh/id_rsa.pub [email protected] ansible -m  模块  -a 指定向模块传递的参数  -f 并发书 -k 默认基于密钥,使用基于口令认证 -i PATH : 指明使用的host inventory文件路径 vim ansible.cfg host_key_checking = Fa