翻譯整理自Hadoop-The Definitive Guide。
Pig是yahoo捐獻給apache的一個項目,它是SQL-like語言,是在MapReduce上構建的一種高級查詢語言,把一些運算編譯進MapReduce模型的Map和Reduce中,並且用戶可以定義自己的功能。這是Yahoo開發的又一個克隆Google的項目:Sawzall。
Pig是一個客戶端應用程序,就算你要在Hadoop集群上運行Pig,也不需要在集群上裝額外的東西。Pig的安裝是灰常的簡單的:
1、安裝JAVA6(在Windows的話要裝Cygwin),設置好JAVA_HOME。
% export JAVA_HOME=/home/tom/jdk1.6
2、到這裡下載一個穩定的發行版(我下載的是0.5.0,可以在Hadoop-0.20.*上運行),解壓到你的工作空間:
% tar xzf pig-x.y.z.tar.gz
3、為了方便,可以把Pig的程序目錄放到命令行路徑裡,比如:
% export PIG_INSTALL=/home/tom/pig-x.y.z
% export PATH=$PATH:$PIG_INSTALL/bin
注銷或重啟,你就可以用pig -help來查看使用幫助了,安裝夠簡單吧? :)
Pig有兩種模式:
一種是Local mode,也就是本地模式,這種模式下Pig運行在一個JVM裡,訪問的是本地的文件系統,只適合於小規模數據集,一般是用來體驗Pig。而且,它並沒有用到Hadoop的Local runner,Pig把查詢轉換為物理的Plan,然後自己去執行。
在終端下輸入
% pig -x local
就可以進入Local模式了。
還有一種就是Hadoop模式了,這種模式下,Pig才真正的把查詢轉換為相應的MapReduce Jobs,並提交到Hadoop集群去運行,集群可以是真實的分布式也可以是偽分布式。要想Pig能認識Hadoop,你要告訴它Hadoop的版本以及一些關鍵daemon的信息(也就是Namenode和Jobtracker的Address和Port)。比如,下面這個可以允許Pig連接到任何Hadoop0.20.*上:
% export PIG_HADOOP_VERSION=20
接下來,你還要指明集群的Namenode和Jobtracker的所在。有兩種方法,一種就是把你Hadoop的Conf地址添加到Pig的Classpath上:
% export PIG_CLASSPATH=$HADOOP_INSTALL/conf/
還有一種就是在Pig目錄的Conf文件夾(可能需要自己創建)裡創建一個pig.properties文件,然後在裡面添加集群的Namenode和Jobtracker的信息:
fs.default.name=hdfs://localhost/
mapred.job.tracker=localhost:8021
搞定後,在終端執行下面的命令:
% pig
你就會看到下面的信息:
2009-03-29 21:22:20,489 [main] INFO org.apache.pig.backend.hadoop.executionengine.
HExecutionEngine – Connecting to hadoop file system at: hdfs://localhost/
2009-03-29 21:22:20,760 [main] INFO org.apache.pig.backend.hadoop.executionengine.
HExecutionEngine – Connecting to map-reduce job tracker at: localhost:8021
grunt>
如你所見,Pig報告已經連上了Hadoop的Namenode和Jobtracker,是不是也灰常的簡單?
到此,Pig的安裝和配置講解完畢,是不是很Easy,那還等什麼,趕緊去試試,玩玩~