Pig相當于Hadoop的客戶(hù)端軟件,它可以連接到Hadoop,通過(guò)Pig Lating這種類(lèi)似SQL的面向數據流的語(yǔ)言對數據進(jìn)行處理。
用Pig Lating編寫(xiě)的程序,在Pig中執行。Pig把Pig Lating編寫(xiě)的程序編譯成MapReduce作業(yè),上傳到集群中執行。
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、進(jìn)入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>
本地模式,所有文件和執行過(guò)程都在本地執行,一般用于測試程序。
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)進(jìn)入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>