首页 > 代码库 > 使用hadoop ecipse插件需要注意的问题

使用hadoop ecipse插件需要注意的问题

1.关于run on hadoop的问题:

在未用hadoop eclipse插件前,我以为通过hadoop eclipse 插件不但可以管理hdfs,还可以自动打包程序,并帮我自动设置Configuration对象的mapred.jar属性值。但用了之后,才发现,这个插件只能管理hdfs,至于打包程序等操作,还得自己手动进行。我用的hadoop 版本为1.2.1,hadoop eclipse插件个人亲自编译生成,保证无任何问题,我一开始用的是MyEclipse后来换成Eclipse,但试用了,仍存在这个问题。"run as——>run on hadoop"并未弹出如下所示窗口:


而是直接运行了,效果跟"run as——>run configurations——>填写参数值——>run"的效果一致。

不知道是不是这个hadoop 1.2.1版本的ecipse插件都存在这个问题,还是我个人使用出现的问题,如果有哪位童鞋们知道这个问题,可以赐教下


2.关于通过ecipse设置hadoop运行模式的问题:

说先,我们要明确hadoop的运行模式以及各种运行模式的区别,参考如下:

 (1)独立模式<standalone>(也叫本地模式<local mode>)
独立模式完全运行在本地,不会加载任何MapReduce服务,因而不会涉及Mapreduce最核心的代码实现。
        独立模式无需运行任何守护进程(daemon),所有程序都在单个JVM上执行。由于在本机模式下测试和调试MapReduce程序较为方便,因此,这种模式适宜用在开发阶段。
(2)分布模式(pseudo-distributed model)
其中,分布模式分为两种:伪分布式模式和全分布式模式。
a.伪分布式模式:
伪分布式模式即为“单点集群”,在该模式下所有的守护进程均会运行在单个节点上。
        b.全分布模式(fully distributed model)
        Hadoop守护进程运行在一个真实的集群上,如NameNode、SeconeNameNode、Jobtracker、TaskTracker等分别运行在不同机器上。
注:其中,独立模式和单机模式均运行在单机环境中
        在特定模式下运行Hadoop需要关注两个因素:正确设置属性和启动Hadoop守护进程。
        下表列举了配置各种模式所需要的最小属性集合:

组件名称

属性名称

独立模式

伪分布模式

全分布模式

Common

fs.default.name

file:///(默认)

hdfs://localhost/

hdfs://namenode/

HDFS

dfs.replication

N/A

1

3(默认)

MapReduce

mapred.job.tracker

local(默认)

localhost:8021

jobtracker:8021

 在独立模式下,将使用本地文件系统(默认为本地文件系统,也可以设置文件系统为hdfs)和本地MapReduce作业运行;在分布式模式下,将启动HDFS和MapReduce守护进程。
在明晰了上述区别后,我们再说在eclipse中运行hadoop程序的问题。
注:在这里,我们不区分伪分布式模式和全分布式模式,把他们都叫做分布式模式。
在eclipse中运行hadoop程序可以采用本地立模式和分布式模式,如果没有设置mapred.job.tracker属性值的话,默认采用本地模式运行。本地模式中,文件系统可以使用本地文件系统(file:///)也可以使用HDFS文件系统(hdfs://),如果使用hdfs文件系统的话,则需要设置fs.default.name属性。本地模式中,mapreduce等一系列过程直接运行在ecipse启动的单个JVM进程内,程序的运行完全与hadoop集群没有任何关系(不使用hdfs文件系统的前提下),这时,你如果关闭了hadoop集群,对程序的运行没有任何影响(不使用hdfs文件系统的前提下)。
如果设置了mapred.job.tracker属性值的话,则采用分布式模式运行,eclipse在此其实是充当了“client”的角色,将程序提交给jobtracker,有jobtracker来分配和管理任务的运行。其实就是说eclipse把任务提交给hadoop集群了,这时,你打开jobtracker或者namenode、datanode的对应的网页监控页面的话,可以看到运行状态和日志。
注:上面所说的设置mapred.job.tracker属性值和设置fs.default.name属性值可以在程序中设置Configuration对象或者分别将mapred-site.xml文件(对应mapred.job.tracker配置)、core-site.xml、hdfs-site.xml(这两个文件对应fs.default.name配置)分别放入eclipse hadoop工程的环境变量中去。



使用hadoop ecipse插件需要注意的问题