分享

eclipse为何可以直接运行mapreduce程序

1、通过网络上的各种教程,我搭建了一个hadoop的开发环境,3台CentOS6.5的虚拟机,分别安装了hadoop2.5.2的版本,一个namenode和两个datanode。启动dfs和yarn之后,通过window平台上的eclipse(安装了hadoop plugin)远程连接master,然后进行MapReduce程序开发。通过传递参数(输入输出路径在集群HDFS上),然后Run As -> Run on hadoop 提交运行(WordCount的例子),确实可以运行(这个没问题)。但是当我把集群关闭,甚至连master虚拟机也停止之后,我通过传递本地文件路径(windows平台)做输入输出文件夹,然后Run As -> Java Application 后,同样可以运行,输出也和之前的一样,而且这个时候Run As -> Run on hadoop 上同样可以运行的过(集群完全关闭),输出还是一样的。我就奇怪了,为什么可以运行呢??明明已经不存在hadoop的环境了啊?2、另外还有一个小问题,通过hadoop plugin开发mapreduce后,运行结果(信息)显示在控制台(INFO开头的信息),但是我的程序运行完成后还出现了很多Debug开头的信息,控制台特别杂乱,我想问问有没有哪位知道如何把Debug信息隐藏掉的办法,感谢!!!
微信截图_20160824110122.png
这张图片是在脱机环境(关闭所有虚拟机)后的Run on hadoop后的控制台部分输出,可以看到很多Debug信息

已有(9)人评论

跳转到指定楼层
qcbb001 发表于 2016-8-24 11:37:31
我就奇怪了,为什么可以运行呢??明明已经不存在hadoop的环境了啊
master关闭了,但是datanode应该还没有关闭。所以还是可以运行。
这个需要明白master的原理。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
日志信息是有级别的,可以输出到日志或则修改下日志的级别
回复

使用道具 举报

斯巴达之狐 发表于 2016-8-24 17:50:29
qcbb001 发表于 2016-8-24 11:37
我就奇怪了,为什么可以运行呢??明明已经不存在hadoop的环境了啊
master关闭了,但是datanode应该还没有 ...

datanode肯定也关了,因为我把集群全部都关掉了,虚拟机也关闭了
回复

使用道具 举报

langke93 发表于 2016-8-24 18:03:07
斯巴达之狐 发表于 2016-8-24 17:50
datanode肯定也关了,因为我把集群全部都关掉了,虚拟机也关闭了

程序怎么写的,如果本地配置了hadoop环境,应该也是可以运行的
回复

使用道具 举报

斯巴达之狐 发表于 2016-8-24 18:07:33
qcbb001 发表于 2016-8-24 11:37
我就奇怪了,为什么可以运行呢??明明已经不存在hadoop的环境了啊
master关闭了,但是datanode应该还没有 ...

日志信息按你说的修改log4j.properties可以筛选输出,谢谢
回复

使用道具 举报

斯巴达之狐 发表于 2016-8-24 18:08:41
langke93 发表于 2016-8-24 18:03
程序怎么写的,如果本地配置了hadoop环境,应该也是可以运行的

程序的话就是example中的wordcount源码,我配置了hadoop的解压(安装)目录,是这个原因吧!?
回复

使用道具 举报

斯巴达之狐 发表于 2016-8-25 16:00:57

你也是这样的开发环境吗?
回复

使用道具 举报

hx252502115 发表于 2016-8-29 15:11:08
是这样的你虽然将远程的输入和输出路径指向了HDFS,但是你的hadoop确是指向的本地(你可以在你的代码里加入一些控制台输出,你会发现都输出到console里了。很明显mapreduce运行在eclipse的环境下)。

如果你安装了mapreduce的插件,本地eclipse下也是可以跑mapreduce程序的,现象就想楼主的一样,程序可以跑,控制台输出和网上的教程很像。但是hadoop集群上没有任何关于JOB的信息。

楼主可以把你haoop集群namenode上的几个配置文件放到你的classpath路径下(core-site.xml、mapred-site.xml、yarn-site.xml),在hadoop集群启动时是需要分发job的可执行代码的,所以如果楼主需要将工程打包成jar包,并在代码中通过Configuration指定jar的位置。

至于日志输入,楼主可以从hadoop自带的jar包中找一个log4j的配置文件,放到你的classpath路径下,这样每一次日志的输出楼主就可以自己配置了。否则eclipse默认从jar中加载log4j的配置文件。
回复

使用道具 举报

斯巴达之狐 发表于 2016-8-30 14:23:19
hx252502115 发表于 2016-8-29 15:11
是这样的你虽然将远程的输入和输出路径指向了HDFS,但是你的hadoop确是指向的本地(你可以在你的代码里加入 ...

学习了,非常感谢!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条