Pig相当于Hadoop的客户端软件,它可以连接到Hadoop,通过Pig Lating这种类似SQL的面向数据流的语言对数据进行处理。
用Pig Lating编写的程序,在Pig中执行。Pig把Pig Lating编写的程序编译成MapReduce作业,上传到集群中执行。
Pig可以看作Pig Lating到MapReduce的映射器。
1、下载Pig,我这里下载的是pig-0.9.2.tar.gz,放到/home/coder/目录下。
2、解压Pig。
[coder@h1 ~]$ tar -zxvf pig-0.9.2.tar.gz
3、编辑/etc/profile,在文件最后面加上如下内容
PIG_INSTALL=/home/coder/pig-0.9.2 PATH=$PIG_INSTALL/bin:$JAVA_HOME/bin:$PATH
再执行下面的命令,使配置生效
source /etc/profile
4、进入Pig的本地模式:pig -x local
[coder@h1 ~]$ pig -x local which: no hadoop in (/home/coder/pig-0.9.2/bin:/usr/java/jdk1.6.0_37/bin:/usr/java/jdk1.6.0_37/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin) 2013-04-19 21:38:09,577 [main] INFO org.apache.pig.Main - Logging error messages to: /home/coder/pig_1366378689555.log 2013-04-19 21:38:10,260 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: file:/// grunt>
本地模式,所有文件和执行过程都在本地执行,一般用于测试程序。
5、配置Pig的MapReduce模式
1)配置/etc/profile,在文件最后面添加,内容如下:
JAVA_HOME=/usr/java/jdk1.6.0_37 PIG_INSTALL=/home/coder/pig-0.9.2 HADOOP_INSTALL=/home/coder/hadoop-0.20.2 PIG_CLASSPATH=$HADOOP_INSTALL/conf PATH=$HADOOP_INSTALL/bin:$PIG_INSTALL/bin:$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PIG_CLASSPATH export PATH export CLASSPATH
PIG_CLASSPATH指向hadoop的安装路径下的conf目录,如果Pig和Hadoop不在同一台机器上,则需要从安装有Hadoop的机器上把hadoop安装路径下的conf目录复制到安装Pig的机器上,然后然PIG_CLASSPATH指向conf目录。
2)执行 source /etc/profile命令,使得配置生效
3)如果Pig和Hadoop不在同一台机器上,则在Pig所在的机器上还要配置/etc/hosts文件,跟其他hadoop机器上的hosts配置一致
4)进入Pig的MapReduce模式:pig
[coder@h1 ~]$ pig 2013-04-19 22:14:30,539 [main] INFO org.apache.pig.Main - Logging error messages to: /home/coder/pig_1366380870538.log 2013-04-19 22:14:30,790 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://192.168.0.129:9000 2013-04-19 22:14:30,899 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to map-reduce job tracker at: 192.168.0.129:9001 grunt>