Pig系列之二:Pig的安装和配置

时间:2021-09-03 17:22:07

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系列之二: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 的结果。

Pig系列之二:Pig的安装和配置

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 的详细信息。

Pig系列之二:Pig的安装和配置

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 系统的运行模式有一个初步的印象。