首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

尝试运用hadoop-eclipse-plugin插件

2013-03-28 
尝试使用hadoop-eclipse-plugin插件??然后,再切换到Overview标签页,导出插件。?导出以后,把导出的插件拷贝

尝试使用hadoop-eclipse-plugin插件

?

?然后,再切换到Overview标签页,导出插件。


尝试运用hadoop-eclipse-plugin插件
?

导出以后,把导出的插件拷贝都eclipse/dropins目录下。


尝试运用hadoop-eclipse-plugin插件
?

然后重启。

?

配置环境:

1 设置HADOOP_HOME的位置。

?

设置Preferences中的Hadoop Map/Reduce的Hadoop installation directory为你hadoop的主目录。我这里是C:\cygwin\home\Winseliu\hadoop-1.0.0(主要是用来把hadoop/lib加入到MapRed Project的classpath用的)。

?

2 切换到Mapreduce透视图(Window | Open Perspective | other | Map/Reduce),然后新建一个Hadoop Location。操作如图:


尝试运用hadoop-eclipse-plugin插件
?

3 然后,如果集群启动了,就可以看到下图的效果了。


尝试运用hadoop-eclipse-plugin插件
?

mapred插件提供的MapReduce Driver类还是不错的,把从写JobMain繁琐的工作中稍稍解放了一点。


尝试运用hadoop-eclipse-plugin插件

?

Run-on-Hadoop的实现

?一般我们在设置Job(JobConf).setJarByClass(WordCount.class)都是设置Main对应的主类。

?

查看源码,就可以得知,其实最终,设置的是conf的mapred.jar属性!在提交的job时刻,会把该属性对应的jar拷贝到HDFS,最后发布到每台运行的机器上。


尝试运用hadoop-eclipse-plugin插件
?
尝试运用hadoop-eclipse-plugin插件
?

所以,也就是说,只要把需要的class导出为jar,然后把该jar对应的路径给mapred.jar的属性即可。

?

理着这思路,在源码中有org.apache.hadoop.eclipse.server.JarModule类调用JDT的JarPackageData来处理jar的导出工作。

JarModule类在?org.apache.hadoop.eclipse.servers.RunOnHadoopWizard.performFinish()方法中被调用。也就是Run-on-Hadoop后弹出的对话框,选择了“运行节点”后的“Finish按钮”被点击时。


尝试运用hadoop-eclipse-plugin插件
?

然后,会把该jar的路径写入到conf,最后有写入到一个core-site.xml的配置文件中。该core-site.xml文件的路径会被加入到classpath,也就说Main方法的Configuration会加载这个配置文件!

?

??? JobConf conf = new JobConf(location.getConfiguration());
??? conf.setJar(jarFile.getAbsolutePath());

??? // Write it to the disk file
??? try {
????? // File confFile = File.createTempFile("core-site-", ".xml",
????? // confDir);
????? File confFile = new File(confDir, "core-site.xml");
????? FileOutputStream fos = new FileOutputStream(confFile);
????? try {
??????? conf.writeXml(fos);

?

把conf的目录加入到classpath:

?

????? classPath =
????????? iConf.getAttribute(
????????????? IJavaLaunchConfigurationConstants.ATTR_CLASSPATH,
????????????? new ArrayList());
????? IPath confIPath = new Path(confDir.getAbsolutePath());
????? IRuntimeClasspathEntry cpEntry =
????????? JavaRuntime.newArchiveRuntimeClasspathEntry(confIPath);
????? classPath.add(0, cpEntry.getMemento());

?

后面的步骤就和一个普通的java类被调用一样的效果咯!

?

涉及影响的文件:


尝试运用hadoop-eclipse-plugin插件
?

?

?参考资源:

http://my.oschina.net/zhujinbao/blog/56236

?

?

?

热点排行