Pig可以看做是Hadoop的客戶端軟體,使用Pig Latin語言可以實現排序、過濾、求和、分組等操作。
Pig的安裝步驟:
一、去Pig的官方網站下載。http://pig.apache.org/releases.html#14+April%2C+2014%3A+release+0.12.1+available
這裡我選擇的是14 October, 2013: release 0.12.0 available 這個版本。將pig-0.12.0.tar.gz 下載到本地中。
二、將Pig放在了/usr/local 檔案目錄下(我個人),解壓
解壓命令:tar zxvf pig-0.12.0.tar.gz 解壓完成後會出現pig-0.12.0檔案目錄。我將其改名為pig。
重新命名命令:mv pig-0.12.0 pig
三、設定環境變數
編輯/root目錄下的.bash_profile檔案(隱藏檔案,需要使用ls -a 命令檢視)
修改PATH。改為PATH=$PATH:/usr/local/pig/bin:$HOME/bin (紅色部分是我增加的)
如果沒有設定JAVA_HOME環境變數,這裡也要增加 JAVA_HOME=/usr (java存放目錄的上級目錄)
新增PIG_CLASSPATH=/usr/local/hadoop/conf/ (PIG_CLASSPATH後面指向的是Hadoop的安裝目錄下的配置檔案目錄)
export PAHT
export JAVA_HOME
export PIG_CLASSPATH
四、驗證變數是否設定成功
驗證命令:set
檢視JAVA_HOME 和PAHT
paht路徑中要確保有Hadoop的安裝目錄和pig的安裝目錄
五、本地模式執行
命令:pig -x local
出現grunt> 表示配置成功!
六、修改etc/hosts檔案
將ip與主機名對應
七、mapreduce工作模式
執行命令:pig
出現grunt> 表示配置成功!
可能出現的問題:
ERROR 1066: Unable to open iterator for alias A
org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1066: Unable to open iterator for alias A
at org.apache.pig.PigServer.openIterator(PigServer.java:912)
at org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:752)
at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:372)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:228)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:203)
at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:66)
at org.apache.pig.Main.run(Main.java:542)
at org.apache.pig.Main.main(Main.java:156)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
Caused by: org.apache.pig.backend.datastorage.DataStorageException: ERROR 0: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /tmp/temp41009746. Name node is in safe mode.
The reported blocks is only 30 but the threshold is 0.9990 and the total blocks 31. Safe mode will be turned off automatically.
解決方法:很有可能是namenode處於安全模式。使用命令: hadoop dfsadmin -safemode leave 關閉安全模式。