Hadoop之Pig安裝

林六天發表於2014-05-27

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 關閉安全模式。

 

 

相關文章