准备工作:
1、正常运行的Hadoop2.2.0环境;
2、自行编译好适用于Hadoop2.2.0环境的的Pig 0.12.0版本。
1)NameNode的机器上安装apache-ant,将ant的可执行文件路径放入环境变量PATH中;
2)确定NameNode能够连接网络,我使用的是虚拟机桥接的方式,可以连接互联网;
3)下载Pig 0.12.0的src文件,tar包解压后,在解压的目录下执行命令:
ant clean jar-withouthadoop -Dhadoopversion=23
3、准备数据,拷贝到Hdfs中,数据格式如下:
James,Network,Tom,98
James,Computer,Jim,86
Lily,Network,Tom,86
Lily,Philosophy,Lilei,77
Lucy,Korean,Piao,98
Lucy,Network,Tom,98
James,Database,Tom,88
编译完成后:
1、设置环境变量,修改.bash_profile文件,而后source .bash_profile
PATH=/opt/pig-0.12.0-src/bin:$JAVA_HOME/bin:$PATH
export PATH
PIG_CLASSPATH=/opt/hadoop-2.2.0/etc/hadoop
export PIG_CLASSPATH
2、Shell下运行pig命令,默认进入mapreduce模式,执行如下命令:
A = LOAD 'chengji.txt' USING PigStorage(',') AS (student,course,teacher,score:int);
DUMP A;
遗留问题:
PIG中能运行出结果,但是在运行过程中报错:
Call From cloud001/192.168.1.105 to cloud001:10020 failed on connection exception:
cloud001是我的namenode,net -an | grep 10020查看这个端口确实没打开
在mapred-site.xml文件中配置:
<property>
<name>mapreduce.jobhistory.address</name>
<value>hdfs://cloud001:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hdfs://cloud001:19888</value>
</property>
目前还是不知道原因,暂作记录,后续如果知道原理再排查。