【发布时间】:2014-12-17 00:44:51
【问题描述】:
我正在尝试建立一个用于开发和调试 hadoop 的 Eclipse 环境。我正在关注 Tom White 的 Definitive Hadoop 第三版。我想做的是让 MaxTemperature 应用程序在 Eclipse 中的 Windows 上本地运行,然后再将其移动到我的 Hortonworks 沙箱 VM。第 158 页上关于使用本地作业运行器的评论似乎是我想要的。我不想在 Windows 上设置完整的 hadoop 实现。我希望通过正确的配置参数,我可以说服它在 Eclipse 中作为 Java 应用程序运行。
窗口:7 日食:月神 Hadoop:2.4.0 JDK:7
当我将 MaxTemperatureDriver 的运行配置(第 157 页的源代码)设置为
inputfile outputdir foo (deliberate bogus 3rd parameter)
我收到了使用消息,所以我知道我正在使用这些参数运行我的程序。
如果我删除虚假的第三个参数,我会得到
Exception in thread "main" java.io.IOException: Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the correspond server addresses.
at org.apache.hadoop.mapreduce.Cluster.initialize(Cluster.java:120)
at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:82)
at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:75)
at org.apache.hadoop.mapreduce.Job$9.run(Job.java:1255)
at org.apache.hadoop.mapreduce.Job$9.run(Job.java:1251)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
at org.apache.hadoop.mapreduce.Job.connect(Job.java:1250)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:1279)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1303)
at mark.MaxTemperatureDriver.run(MaxTemperatureDriver.java:52)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at mark.MaxTemperatureDriver.main(MaxTemperatureDriver.java:56)
我试过插入 -conf 但它似乎被忽略了。如果我指定不存在的路径,则不会出现错误消息。
我试过插入-fs file:/// -jt local,但这没什么区别
我试过插入-D mapreduce.framework.name=local
我试过用文件指定输入和输出:格式
注意。我不是在询问如何配置 eclipse 以连接到远程 Hadoop 安装。我希望应用程序在 eclipse 中运行。
这可能吗?有什么想法吗?
附加信息: 我打开调试。我看到了:
582 [main] DEBUG org.apache.hadoop.mapreduce.Cluster - Trying ClientProtocolProvider : org.apache.hadoop.mapred.YarnClientProtocolProvider
583 [main] DEBUG org.apache.hadoop.mapreduce.Cluster - Cannot pick org.apache.hadoop.mapred.YarnClientProtocolProvider as the ClientProtocolProvider - returned null protocol
我想知道的不是 YarnClientProtocolProvider 为何失败,而是为什么它没有尝试 LocalClientProtocolProvider。
新信息: 这似乎是 Hadoop 2.4.0 的一个问题。我使用 Hadoop 1.2.1 重新创建了我的环境,按照
中的说明进行操作从
添加了 Windows hack一切都开始工作了。
【问题讨论】:
-
检查5台服务器是否都在运行?