Pig 的安装和配置

1 P ig 的安装条件

  •   Hadoop 0.20.2

Pig 有两种运行模式: Local 模式和 MapReduce 模式。如果需要让作业在分布式环境下运行,则需要安装Hadoop ,否则用户可以选择不安装。另外,当前 Hadoop 最新的版本为 0.20.2 ,当然用户也可以选择安装其它版本,不过这里建议安装最新的 Hadoop 版本。因为新的版本修正了以前版本中的一些错误,并且添加了新的特性 [1] 

  •  Java 1.6

建议安装 Java 1.6 以上的版本。 Java 环境对于 Pig 来说是必须的(推荐从 SUN 官方网站上下载)。

当下载安装完毕 Java 后,我们还需要对 Java 环境变量进行设置,将 JAVA_HOME 指向 Java 的安装位置。

如果用户使用的是 Linux 操作系统,那么以上条件就足够了。但是,如果用户使用的是 Windows 操作系统,那么除此之外,用户还需要安装 Cygwin 和 Perl 包。本章后面的案例将以 Linux 操作系统为例进行讲解。

2 P ig 的下载、安装 和配置

当前 Pig 最新版本为 0.7.0 ,除此之外, Pig 还有 0.6.0 以及 0.5.0 两个版本,用户可以根据需要从 Apache官方网站上下载相应的版本。本书使用最新版的 Pig 0.7.0 ,安装包下载地址如下:

http://www.apache.org/dyn/closer.cgi/hadoop/pig

Pig 的安装包下载完成后,需要使用 tar –xvf pig-*.*.*.tar.gz 命令将其解压。我们可以将 Pig 放在系统中的任意位置,并且只需要配置相应的环境变量就可以对 Pig 进行使用。我们建议将 Pig 放在 Hadoop 目录下,方便以后的操作。

解压完成后,需要设置 Pig 相应的环境变量,环境变量有多种设置方法,用户可以根据自己的需要进行选择。这里我们选择对 profile 文件进行修改,来设置 Pig 相应的环境变量。打开“ /etc/profile ”文件,插入下面的一条语句,保存关闭文件后需要重启系统以使环境变量设置生效。

export PATH=/<my-path-to-pig>/pig-n.n.n/bin:$PATH

当环境变量设置生效后,我们可以通过“ $pig –help ”命令来查看 Pig 是否安装成功。当 Pig 安装成功后会出现如下图 的提示。

 

$Pig – help


3 P ig 运行模式

Pig 有两种运行模式: Local 模式和 MapReduce 模式。当 Pig 在 Local 模式运行的时候, Pig 将只访问本地一台主机;当 Pig 在 MapReduce 模式运行的时候, Pig 将访问一个 Hadoop 集群和 HDFS 的安装位置。这时, Pig 将自动地对这个集群进行分配和回收。因为 Pig 系统可以自动地对 MapReduce 程序进行优化,所以当用户使用 Pig Latin 语言进行编程的时候,不必关心程序运行的效率, Pig 系统将会自动地对程序进行优化。这样能够大量节省用户编程的时间。

下面我们首先介绍 Pig 在 Local 模式下的运行方式。 Pig 的 Local 模式适合用户对测试程序进行调试使用,因为 Local 模式下 Pig 将只访问本地一台主机,它可以在短时间内处理少量的数据,并且用户不必关心 Hadoop系统对整个集群的控制,这样既能让用户使用 Pig 的功能又不至于在对集群的管理上花费太多时间。

Pig 的 Local 模式和 MapReduce 模式都有三种运行方式,分别为: Grunt Shell 方式、脚本文件方式和嵌入式程序方式。下面我们将对其进行一一介绍。

 

  • Local 模式

 

( 1 ) Grunt Shell 方式

用户使用 Grunt Shell 方式时,需要首先使用命令开启 Pig 的 Grunt Shell ,只需在 Linux 终端中输入如下命令并执行即可:

$pig –x local

这样 Pig 将进入 Grunt Shell 的 Local 模式,如果直接输入“ $pig ”命令, Pig 将首先检测 Pig 的环境变量设置,然后进入相应的模式。如果没有设置 MapReduce 环境变量, Pig 将直接进入 Local 模式。下图 为开启Grunt Shell 的结果。

 

Local 模式下开启 Grunt Shell

Grunt Shell 和 Windows 中的 Dos 窗口非常类似,这里用户可以一条一条地输入命令对数据进行操作。

( 2 ) 脚本文件方式

使用脚本文件作为批处理作业来运行 Pig 命令,它实际上就是第一种运行方式中命令的集合,使用如下命令可以在本地模式下运行 Pig 脚本:

$pig –x local script.pig

       其中,“ script.pig ”是对应的 Pig 脚本,用户在这里需要正确指定 Pig 脚本的位置,否则,系统将不能识别。例如, Pig 脚本放在“ /root/pigTmp ”目录下,那么这里就要写成“ /root/pigTmp/script.pig ”。用户在使用的时候需要注意 Pig 给出的一些提示,充分利用这些能够帮助用户更好地使用 Pig 进行相关的操作 

( 3 ) 嵌入式程序方式

我们可以把 Pig 命令嵌入到主机语言中,并且运行这个嵌入式程序。和运行普通的 Java 程序相同,这里需要书写特定的 Java 程序,并且将其编译生成对应的 class 文件或 package 包,然后再调用 main 函数运行程序。

用户可以使用下面的命令对 Java 源文件进行编译:

$javac -cp pig-*.*.*-core.jar local.java

这里“ pig-*.*.*-core.jar ”放在 Pig 安装目录下,“ local.java ”为用户编写的 java 源文件,并且“ pig-*.*.*-core.jar ”和“ local.java ”需要用户正确地指定相应的位置。例如,我们的“ pig-*.*.*-core.jar ”文件放在“ /root/hadoop-0.20.2/ ”目录下,“ local.java ”文件放在“ /root/pigTmp ”目录下,所以这一条命令我们应该写成:

$javac -cp /root/hadoop-0.20.2/ pig- 0 . 20 . 2 -core.jar /root/pigTmp/ local.java

当编译完成后, Java 会生成“ local.class ”文件,然后用户可以通过如下命令调用执行此文件。

$ java -cp pig-*.*.*-core.jar:. local

  •   MapReduce 模式

 

Pig 需要把真正的查询转换成相应的 MapReduce 作业,并提交到 Hadoop 集群去运行(集群可以是真实的分布,也可以是伪分布)。要想 Pig 能识别 Hadoop ,用户需要告诉 Pig 关于 Hadoop 的版本及一些关键的信息(也就是 NameNode 和 JobTracker 的位置以及端口信息)。

下面第一步首先指明 Pig 要连接的 Hadoop 的版本信息,第二步详细指明 Pig 连接 Hadoop 的配置信息。

( 1 )允许 Pig 连接到任何的 Hadoop.0.20.* 版本

配置 Linux 系统环境变量,在“ /etc/profile ”文件中加入如下信息:

export PIG_HADOOP_VERSION=20

( 2 ) 指明集群的 NameNode 和 JobTracker 的位置。有以下两种方法让 Pig 识别 Hadoop 的 NameNode和 JobTracker ,采用任何一种方式均可。

方法一:

把自己的 Hadoop 的 Conf 地址添加到 Pig 的 Classpath 上:

    export PIG_CLASSPATH=$HADOOP_INSTALL/conf/

方法二:

在 pig 目录的 Conf 文件夹(可能需要自己创建)里创建一个 pig.properties 文件,然后在里面添加集群的Namenode 和 Jobtracker 信息,第二行中的 port 是用户 Hadoop 中 JobTracker 对应的端口:

fs.default.name=hdfs://localhost/

mapred.job.tracker=localhost:port

当设置完毕并且生效之后,用户可以输入“ $pig –x mapreduce ”命令进行测试,如果能够看到 Pig 连接Hadoop 的 NameNode 和 JobTrakcer 的相关信息,则表明配置成功,然后用户就可以随心所欲地使用MapReduce 模式来进行相关的 Pig 操作了。

下图 为 MapReduce 配置成功后的提示信息,从图中可以看到 Pig 连接 Hadoop 的详细信息。

 

MapReduce 配置成功提示信息

配置成功之后,下面我们将针对 Pig 的 MapReduce 模式,说明如何在此模式下对 Grunt Shell 方式、脚本文件方式和嵌入式程序方式进行操作。它们和 Local 模式下的操作几乎相同,只不过需要将相应的参数指明为MapReduce 模式即可。

1 ) Grunt Shell 方式

用户在 Linux 终端下输入如下命令进入 Grunt Shell 的 MapReduce 模式:

$pig –x mapreduce

2 ) 脚本文件方式

用户可以使用如下命令在 MapReduce 模式下运行 Pig 脚本文件。

$pig –x mapreduce script.pig

3 ) 嵌入式程序

和 Local 模式相同,在 MapReduce 模式下运行嵌入式程序同样需要经过编译和执行两个步骤。用户可以使用如下两条命令,完成相应的操作。

javac -cp pig-0.7.0-core.jar mapreduce.java

java -cp pig-0.7.0-core.jar:. mapreduce

至此, Pig 系统的两个运行模式及其分别对应的三个运行方式就讲述完毕了, 之后 我们将结合实例,对其做更深入的介绍,这里希望用户能够对 Pig 系统的运行模式有一个初步的印象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值