您的位置:首页 > 编程语言 > Java开发

Hadoop-1.2.1 Eclipse开发环境配置

2016-02-24 14:17 507 查看
记得早在Hadoop 0.20.2版本的时候,在$HADOOP_HOME/contrib/eclipse-plugin目录下直接就有一个hadoop-eclipse-luging-0.20.2.jar的包,我们只需要将这个包放到$ECLIPSE_HOME/plugins目录下,然后重启Eclipse即可。

前一段换成了Hadoop 1.2.1版本,在搭建Eclipse环境的时候,发现没有这个包,但是在$HADOOP_HOME/src/contrib/eclipse-plugin目录下有这个jar包的源代码,从网上查询后才知道需要自己使用Ant来编译生成hadoop-eclipse-luging-1.2.1.jar。于是就搭建了Ant环境,通过查看$HADOOP_HOME/src/contrib/eclipse-plugin/build.xml知道,编译时需要传入几个参数,那么编译的命令如下:

[plain] view
plaincopy

ant -Declipse.home=/path/to/eclipse -Dversion=1.2.1 -Dcommons-cli.version=1.2

但是在运行的过程中,却报了好多类和包找不到的错误。在网上查询答案时,发现大家的做法基本都是对build.xml文件做较多的修改,而且按照他们的办法我也没有运行成功。经过自己的摸索,加上一定的运气,我找到了如下的方法:

1、在Hadoop根目录下也有一个build.xml,在此目录下执行命令:ant。Hadoop有篇Wiki上说是要在源码包的src目录下运行ant,在生成其他东西的过程中也会生成我们需要的hadoop-eclipse-luging-1.2.1.jar。我没有下载Hadoop的源码包,而是直接在Release包中运行的。(这一步的目的是为之后的编译配置环境,这一步会执行失败,但是不用管,我们需要的环境已经有了)

2、$HADOOP_HOME/src/contrib/eclipse-plugin/build.xml中还是有个错误需要修改:

[plain] view
plaincopy

<copy file="${hadoop.root}/<span style="color:#ff0000">build</span>/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>

找到上面这行代码,将这行代码改为:

[plain] view
plaincopy

<copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>

我们去掉了“build”,这可能是新版本的jar包位置发生改变,但是代码没有做相应的修改。

经过测试,发现只做以上修改,只是能够生成jar包,但是放入Eclipse下之后发现不能用。网上搜索到的解决办法如下:

在上面代码后加入如下的代码:

[plain] view
plaincopy

<copy file="${hadoop.root}/lib/commons-configuration-${commons-configuration.version}.jar" todir="${build.dir}/lib" verbose="true"/>

<copy file="${hadoop.root}/lib/commons-httpclient-${commons-httpclient.version}.jar" todir="${build.dir}/lib" verbose="true"/>

<copy file="${hadoop.root}/lib/commons-lang-${commons-lang.version}.jar" todir="${build.dir}/lib" verbose="true"/>

<copy file="${hadoop.root}/lib/jackson-core-asl-${jackson.version}.jar" todir="${build.dir}/lib" verbose="true"/>

<copy file="${hadoop.root}/lib/jackson-mapper-asl-${jackson.version}.jar" todir="${build.dir}/lib" verbose="true"/>

并在META-INF目录下的MANIFEST.MF文件中修改如下信息:



Bundle-ClassPath: classes/,
lib/hadoop-core.jar

修改为:

Bundle-ClassPath: classes/,
lib/hadoop-core.jar,
lib/commons-cli-1.2.jar,
lib/commons-configuration-1.6.jar,
lib/jackson-core-asl-1.8.8.jar,
lib/commons-httpclient-3.0.1.jar,
lib/jackson-mapper-asl-1.8.8.jar,
lib/commons-lang-2.4.jar

必须在这里修改,亲测在生成后的jar包中修改无效,貌似会破坏jar包的校验值。

3、修改完文件后保存退出,然后在$HADOOP_HOME/src/contrib/eclipse-plugin目录下执行:

[plain] view
plaincopy

ant -Declipse.home=/path/to/eclipse -Dversion=1.2.1 -Dcommons-cli.version=1.2

然后就可以在$HADOOP_HOME/build/contrib/eclipse-plugin目录下看到hadoop-eclipse-luging-1.2.1.jar,将这个jar包放入$ECLIPSE_HOME/plugins,重启Eclipse即可创建MapReduce Project。



3) 配置Hadoop插件
将下载的hadoop-eclipse-plugin-2.2.0.jar文件放到Eclipse的dropins目录下,重启Eclipse即可看到该插件已生效。
通过Open Perspective菜单打开Map Reduce视图,如下:



选中大象图标,右键点击Edit Hadoop Location编辑Hadoop配置信息:



填写正确的Map/Reduce和HDFS信息。(具体根据您的配置而定)



4) 新建简单Mapreduce项目
通过向导新建一个Map/Reduce项目。在此过程中,请配置Hadoop的安装路径。



5) 通过Eclipse访问DFS
打开Resource视图,即可看到DFS:



此时,你可对DFS进行一些操作,比如上传本地文件到HDFS等等,如下图:



至此,Hadoop的开发环境大致配置完成,下一节我们将看到如何写一个简单的MapReduce程序并放到Hadoop集群上运行。

附上我自己本地环境的几个配置文件内容供大家参考,有错之处敬请指正,谢谢!
1)Core-stie.xml
<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</property>

</configuration>

2)hdfs-site.xml
<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/var/data/hadoop/hdfs/nn</value>

</property>

<property>

<name>fs.checkpoint.dir</name>

<value>file:/var/data/hadoop/hdfs/snn</value>

</property>

<property>

<name>fs.checkpoint.edits.dir</name>

<value>file:/var/data/hadoop/hdfs/snn</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/var/data/hadoop/hdfs/dn</value>

</property>

</configuration>
3)Mapred-site.xml
<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

4)yarn-site.xml
<configuration>

<!-- Site specific YARN configuration properties -->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

</configuration>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: