我正在尝试设置Eclipse环境来开发和调试hadoop。我正在关注Tom White的Definitive Hadoop 3rd ed。我想要做的是将MaxTemperature应用程序在Eclipse中的Windows上本地工作,然后再将其移动到我的Hortonworks沙箱VM。第158页关于使用本地工作跑步者的评论似乎是我想要的。我不想在Windows上设置完整的hadoop实现。我希望使用正确的配置参数,我可以说服它在Eclipse中作为java应用程序运行。
Windows:7 Eclipse:Luna 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
我尝试使用以下文件指定输入和输出:format
请注意。我没有询问如何配置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这一切都开始起作用了。