luokingfly 2016-01-15
1,使用CDH的hadoop里面有对应的组件Pig,但版本较低,所以放弃使用了,直接下载
Apache Pig0.15最新的版本(支持Tez,比Hive更容易集成)
下载地址:http://archive.apache.org/dist/pig/pig-0.15.0/pig-0.15.0.tar.gz
直接下载二进制包即可
2,配置Pig的环境变量如下:
#Pig
export PIG_HOME=/ROOT/server/pig
export PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop
export PATH=/ROOT/server/pig/bin:$PATH
3,直接执行pig命令,启动程序,会报如下异常
[main]ERROR org.apache.pig.Main -ERROR 2998:Unhandled internal error.Found interface jline.Terminal,but class was expected
原因是由于jline这个包和hadoop的yarn/lib下面的jline的包不一致造成的。
可参考:https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started里面的解释
解决方法:
删掉hadoop的yarn/lib下的那个jline版本较高的包,将pig/lib下的jline-1.0.jar包拷贝到yarn/lib下,然后
重新执行pig命令,可正常启动。
然后执行一个pig脚本写的MapReduce作业,发现会报如下异常,但是MR作业是跑成功的:
原因是,Hadoop的jobhistroy进程没有启动。
解决办法:
执行sbin/mr-jobhistory-daemon.sh start historyserver 命令,启动日志守护进程
然后再次跑pig作业,一切正常 !