hadoop在Eclipse下编译运行

更新时间:2023-05-19 20:39:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

royripple

主页

博客

相册

个人档案

好友

查看文章

相关文章

更多>>

Hadoop项目的运行和部署方式-部署后linux命令行下修改代码操作指南2011-07-20 20:30

使用 Linux和 Hadoop进行分布... Linux下安装Hadoop教程 Linux安装Hadoop使用Cygwin模拟Linux环境安装配... Linux下eclipse中导入hadoop源码 Hadoop系列:在Linux下部署hadoop... linux下基于eclipse的hadoop应用...用 Linux和 Apache Hadoop进行...通过shell在linux上运行hadoop的...[Hadoop] Install Hadoop 0.20 C...

1.项目简介有一个文件,它的每一行都是从某一篇文档中抽取出的词语。而每一行代表一个文档。如下所示:

这个文件在HDFS上的位置:/user/hdp/input/test.假设每一行(每篇文档)内部出现的词语相互之间都是有贡献的,我们希望通过计算着两个词语的互信息来表征两个词语之间的相关度。其实可以简单的这样认为:两个词语一起出现的次数越多,单独出现的次数越少,那么两个词语的相关度就越高。就比如“上推”“自动机”两个词结伴出现的机会很高,而两个词在其他文档中单独出现的概率很低。这两个词的互信息就相当的高。可以很简单的统计出,中国出现了3次,人民出现了2次,而中国与人民结伴出现了2次,总共词语数是28个,根据1.1节的公式,可得

2.项目运行方式2.11. 2. 3. 4. 5. 项目完成编译。

本实例就是要完成用这个输入文件,最后计算出每两个词之间的MI值的过程。开发环境下的运行

项目在开发环境下,是应该可视化的运行,以方便程序员的编程。Eclipse提供了这种便利。

Eclipse在hadoop项目运行的时候,内部帮助我们做了很多事情:把编号的class文件打成jar包,这里也包括第三方jar包也要被打包。交给我们指定的hadoop分布式系统中的master运行。监控hadoop的master各任务完成情况,将得到的调试信息输出在eclipse控制台上。成功后,完成HDFS的更新显示。至此,我们可以看到计算结果。 Eclipse左侧空白处右键单击inport。

Eclipse的hadoop插件配置见上一篇文档。下面就本项目怎么在eclipse里运行做个阐述。

点击Existing Projects into workspace。。。next

从文件系统中找到项目根目录。点击OK

勾选copy选项,然后finish

按下图所示操作:

Open Dialog中配置如下:Apply后

Close

依然空白处右键单击,这次点选Run on HAdoop

选择自己搭好的hadoop平台,finish运行即可

如果eclipse的hadoop开发插件安装正常,而且Hadoop平台正确搭建好了的话,程序将会正确运行,并且生成中间

文件目录,output目录,计算出结果,写入output下。如下图所示:

2.2

部署环境下的运行

Hadoop的部署环境其实是指linux的命令行

环境,因为现在执行计算的服务器大多是linux文本界面。在集群系统中有一台master,这台机器就是我们的部署环境,而且,只需在这台机子上部署即可,hadoop会自己把任务传送给各个slave。部署是什么意思呢?其实从代码编写完到任务可以按照我们的想法在服务器上运行的这段时间都叫部署。我们在部署环境下运行项目,一般的做法是:

在开发环境下(比如eclipse的图形开发界面),将项目编译好,打成jar包。然后传送到master上运行。

注意,传送之前的操作都是eclipse上的操作,对于eclipse开发员来说,其实是很简单的。所以“部署环境下的运行”只要把jar包传送到master,并让它运行即可。一般情况下默认我们已经在master上拿到jar包,并放置在master的HADOOP_HOME中了。特殊情况,比如手头上没有开发环境,就需要自己把源码编译,手工打jar包。这些工作要完成也不简单,但是也不是不能做,如果有必要,请参考第3节。此节详述了怎么在命令行下编译源码,打jar包等操作。那么基于已上假设,我们只需在master上启动我们的hadoop项目即可。操作如下: 首先启动hadoop的各项服务,确保各节点工作正常。为项目运行做准备。第一步:hdp@master:~/hadoop-0.20.2/bin/$ hadoop namenode -format

格式化文件系统,新建一个文件系统。有个问是否覆盖的,输入“

y”即可。

第二步:hdp@master:~/hadoop-0.20.2/bin $ ./start-all.sh启动

hadoop的所有守护进程。

第三步:hdp@master:~/hadoop-0.20.2/$ jps 查看进程,

master虚拟机上的结果如下:其中的JobTracker和NameNode分别是M/R和

hdfs的核心进程。

在slave1 和 slave2 虚拟机上

hdp@slave1:~/hadoop-0.20.2/$ jps

找到jar包,用正确的命令运行

hdp@master:~/hadoop-0.20.2$ hadoop jar mi02.jar input output

出现一连串日志信息,然后去hdfs下查看结果文件,发现没有问题,项目正常运行!

3. 项目部署操作(linux命令行下,修改完源码需重复此操作部署)

2.2节隐藏了源码编译和打jar包的过程,这个过程对于普通的部署人员来说无需了解,但是,如果项目部署过程中为了适应机器,要对代码做小修改,问题就来了,修改后接下来得重新编译,打jar包。这时候有两种做法: 把问题告诉开发程序员,让开发程序员把代码修改后,重新编译,重新打好jar包。再交给自己部署。 自己把代码修改,然后按步骤在命令行上编译,打包。再运行。

两种方法各有优缺点,第一种方法比第二种方法容易,但是第二种方法省事。如果开发员因情况不再参与该项目的话,就只能采取第二种做法。

本节内容就是考虑到项目后期接手的人想改代码,但是只有linux命令行界面时应该怎么做而写。

总体说来就是在命令行下重新完成几个任务:

代码编写(改写)

重新编译新代码

打jar包。

接下来的任务就是2.2节所介绍的内容。

3.1命令行下,对于 javac编译hadoop的master来说,肯定是安装了jdk的。所以支持javac的编译命令。MI项目用于编译的输入文件有两类:1.

源码文件2.

第三方jar包

有了这些文件我们就能完成编译工作。

从工程中拷贝出cn文件夹和lib文件夹。移至/home/hdp/tmp/compile下。

使用javac命令,将该源码和jar包一起编译成class文件。

hdp@master:~/tmp/compile$ javac -classpath lib/commons-cli-1.2.jar : lib/hadoop-0.20.2-core.jar : lib/pinyin4j-

2.5.0.jar cn/ac/ict/roy/*.java

这行命令中的–classpath是指定编译过程中类路径查找,我把编译时要用到的三个jar文件都写在这个参数后,注意使用:(冒号)隔开。

编译结果如下

3.2 1. 2. 3.

完成编译。打jar包编译好的class文件运行时要使用的第三方jar包 META-INF/MANIFEST.MF文件 Manifest-Version: 1.0 Main-Class: cn.ac.ict.roy.MI完成编译之后,就剩下打jar包了。打jar包需要以下3方面的内容:

这里需要解释下META-INF/MANIFEST.MF文件,它其实就是jar包的配置文件。典型的内容如下:

其中的Main-Class是关键。有了它就知道程序从何开始运行。该文件的内容相当固定,每次只需要改写Main-Class即可。好,接下来打jar包的过程如下: 把所需的东西移至某一目录下,比如/home/hdp/tmp/jar下

产生META-INF/MANIFEST.MF文件,并用vi写入内容。

使用jar命令打jar包。

打包前:

打包命令: hdp@master:~/tmp/jar$ jar cvfm mi.jar METE-INF/MANIFEST.MF cn/ lib/打包过程:

打包后:

剩下来的操作就是把mi.jar移到hadoop目录下。然后按照2.2节方式运行。上一篇>>类别:默认分类| Stanford CoreNLP开源项目的3种...下一篇>> Stanford CoreNLP源码在windows...

|添加到搜藏|分享到i贴吧|浏览(152)|评论 ()

网友评论

发表评论

内容:

发表评论

本文来源:https://www.bwwdw.com/article/jmq4.html

Top