电脑为纯净版本,即什么编译工具之类的都没有安装。
1、安装Maven
首先下载Maven软件包,下载后解压,设置MAVEN_HOME和PATH变量。设置好后,可以使用mvn -version检查是否安装成功。
解压命令:
tar -zvxf apache-maven-3.1.1-bin.tar.gz
在最后一行加入:#vi
/etc/profile
export
MAVEN_HOME=/usr/
local/ maven
export PATH=$PATH:$MAVEN_HOME/bin
保存后退出,执行:
source /etc/profile
查看是否安装成功。
#mvn –version
2、安装autotool和ant
Gun
sudo apt-get install autoconf
automake
libtool
ant
3、安装protobuf
下载地址http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.bz2
解压: tar jxvf protobuf-2.4.1.tar.bz2
次执行:./configure, make, sudo make install,这三个命令安装ProtoBuffer
使用protoc --version检查ProtoBuffer是否安装成功
protoc –version
libprotoc 2.4.1
标明protobuf安装成功。
4、然后编译eclipse-plugin插件
需要将${HADOOP_HOME}/share/hadoop/mapreduce1下面的所有jar包拷贝到
${HADOOP_HOME}/src/hadoop-mapreduce1-project 目录下面
将${HADOOP_HOME}/share/hadoop/mapreduce1/lib下面的所有内容拷贝到
${HADOOP_HOME}/src/hadoop-mapreduce1-project /lib目录下面
<1> 需要定义reactor.repo的url:
在hadoop/src/hadoop-mapreduce1-project/ivy/ivysettings.xml文件中添加:
<propertyname="reactor.repo"
value="http://repo1.maven.org/maven2/"
override="false"/>
<2>修改build.xml文件中的3处地方。
a.在property中增加eclipse.name属性,指向eclipse的目录,这样编译时可以找到eclipse的类;增加version属性,与当前hadoop版本一致,版本号会成为jar包文件名的一部分。
<span style="font-family:Microsoft YaHei;font-size:14px;"> <property name="eclipse.home" location="/u/eclipse" />
<property name="version" value="2.0.0"/></span>
PS:上面这步其实也可以不做,可以在调用ant时用参数传进去,类似这样:$ant -Declipse.home=/u/eclipse -Dversion=1.2.1
b.在id为classpath的path中增加hadoop相关jar包的引用,这样在编译时就不会报找不到hadoop的类了。
<span style="font-family:Microsoft YaHei;font-size:14px;"><fileset dir="${hadoop.root}">
<include name="**/*.jar" />
</fileset></span>
<span style="font-family:Microsoft YaHei;font-size:14px;">classes/,lib/hadoop-core.jar,lib/commons-configuration-1.6.jar,lib/commons-httpclient-3.0.1.jar,lib/commons-lang-2.4.jar,lib/jackson-core-asl-1.8.8.jar,lib/commons-cli-1.2.jar
</span>
注意,这一大段不要换行,否则在生成JAR包时会报错。d.在jar的target中增加相关的hadoop类,这样eclipse可以在运行时连接和断开hadoop。将插件放入eclipse中,而不能new hadoop Location时就是因为缺少jar包造成的
<span style="font-family:Microsoft YaHei;font-size:14px;"><!-- <copy file="${hadoop.root}/build/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
<copy file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib" verbose="true"/>
-->
<copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-cli-${commons-cli.version}.jar" tofile="${build.dir}/lib/commons-cli.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-configuration-1.6.jar" tofile="${build.dir}/lib/commons-configuration.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" tofile="${build.dir}/lib/commons-httpclient.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-lang-2.4.jar" tofile="${build.dir}/lib/commons-lang.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" tofile="${build.dir}/lib/jackson-core-asl.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" tofile="${build.dir}/lib/jackson-mapper-asl.jar" verbose="true"/></span>
具体版本如下所示。
然后在${HADOOP_HOME}/src/hadoop-mapreduce1-project/src/contrib/eclipse-plugin目录下面执行ant命令
执行该命令前需要配置:然后在${HADOOP_HOME}/src/hadoop-mapreduce1-project/src/contrib/eclipse-plugin 目录下的build.xml文件。这个网上有很多。根据你的hadoop目录和eclipse目录修改相应的属性,以及添加相应的jar包等。
编译成功后会在
${HADOOP_HOME}/src/hadoop-mapreduce1-project/build/contrib/eclipse-plugin/目录下生成
hadoop-eclipse-plugin-2.0.0-mr1-cdh4.4.0.jar文件。这个就是对应的eclipse包。
如果编译时出现卡顿,可以ant clean 然后再重新编译
注意,编译出来的hadoop-eclipse-plugin-2.0.0-mr1-cdh4.3.0.jar插入到eclipse里,虽然能显示DFSLocaltion,和Mapreduce.但是右击“NewHadoop Location”却没有反应。
这个是由于缺少jar包造成的。CDH4.2及以前的版本,只需要添加如下包即可:
<span style="font-family:Microsoft YaHei;font-size:14px;"> <copyfile="${hadoop.root}/hadoop-core-${version}.jar"tofile="${build.dir}/lib/hadoop-core.jar"verbose="true"/>
<copyfile="${hadoop.root}/lib/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib"verbose="true"/>
<copy file="${hadoop.root}/lib/commons-httpclient-3.1.jar" todir ="${build.dir}/lib"verbose="true"/>
<copy file="${hadoop.root}/lib/commons-lang-2.5.jar" todir ="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir ="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir ="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/hadoop-common-2.0.0-cdh4.2.0.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/hadoop-auth-2.0.0-cdh4.2.0.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/hadoop-hdfs-2.0.0-cdh4.2.0.jar" todir="${build.dir}/lib"verbose="true"/></span>
而CDH4.3,CDH4.4则需要下面的包。
<span style="font-family:Microsoft YaHei;font-size:14px;"> <copyfile="${hadoop.root}/hadoop-core-${version}.jar"tofile="${build.dir}/lib/hadoop-core.jar"verbose="true"/>
<copyfile="${hadoop.root}/lib/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/commons-httpclient-3.1.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/commons-lang-2.5.jar" todir="${build.dir}/lib" verbose="true"/>
<copyfile="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir="${build.dir}/lib"verbose="true"/>
<copy file="${hadoop.root}/lib/hadoop-common-2.0.0-cdh4.4.0.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/hadoop-auth-2.0.0-cdh4.4.0.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/hadoop-hdfs-2.0.0-cdh4.4.0.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/slf4j-log4j12-1.6.1.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/slf4j-api-1.6.1.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/log4j-1.2.17.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/protobuf-java-2.4.0a.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/lib/hadoop-annotations-2.0.0-cdh4.4.0.jar" todir="${build.dir}/lib"verbose="true"/>
<copyfile="${hadoop.root}/hadoop-tools-2.0.0-mr1-cdh4.4.0.jar" todir="${build.dir}/lib"verbose="true"/>
<copy file="${hadoop.root}/lib/guava-11.0.2.jar" todir="${build.dir}/lib"verbose="true"/></span>
将hadoop-eclipse-plugin-2.0.0-mr1-cdh4.4.0.jar拷贝到eclipse/plugin目录下,重启eclipse。会发现,上图中左侧"ProjectExplorer"下面发现"DFS Locations",说明Eclipse已经识别刚才放入的HadoopEclipse插件了。
5、将hadoop-eclipse-plugin放到eclipse中,完成插件编译
(1)选择"Window"菜单下的"Preference",然后弹出一个窗体,在窗体的左侧,有一列选项,里面会多出"Hadoop Map/Reduce"选项,然后打开MapReduce视图Window -> Open Perspective-> Other选择Map/Reduce,图标是个蓝色的象
在console窗口那块会多一个黄色的大象Map/ReduceLocation的图标,选中它在其下面空白处右击鼠标,会出现三个选择项NewHadoop Location , Edit Hadoop Location和Delete.鼠标左键单击NewHadoop Location 选项来添加新的Location.进入配置Location的界面
Location name:取个有意义的名字,没有限制
Map/Reduce Master:JobTracker的IP和端口,根据mapred-site.xml中配置的mapred.job.tracker来填写
DFS Master:Name Node的IP和端口,根据core-site.xml中配置的fs.default.name来填写
本文的CDH4.4是CDH HA配置,HDFS和Jobtracker都做了HA,所以配置参数跟非HA稍微有不同,但是依然是一台机器在工作,所以只要查询相应的端口号即可。
我的hadoop完全分布式cluster结构配置如上图所示,其中DFS端口号为8020,MapReduce端口号8021。点击Finish就OK了。
依照此例还可创建别的自己需要的Location,如pseudo。此时在Porject Explorer的DFS Locations下会出现刚刚配置好的Location,开启相应的hadoop集群进程就可以点击查看目录结构了,而且点击右键,可以进行新建文件夹、删除文件夹、上传文件、下载文件、删除文件等操作。
注意:每一次操作完在eclipse中不能马上显示变化,必须要点击鼠标右键并refresh一下才可以看到最新的数据。
参考:http://blog.csdn.net/lostage2/article/details/15339453
http://f.dataguru.cn/thread-185468-1-1.html
http://cxshun.iteye.com/blog/1876366