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 关闭安全模式。