在eclipse上编写好mapreduce程序后,就可以调试程序。
调试有两种方式,本地、hdfs.
博主只有一台电脑,因此用伪分布式模拟远程hdfs。
问题一:输入的input、output位置
默认情况下,输入的input、output文件位于mapreduce程序根目录下。
若要调试mapreduce程序在远程hdfs下的运行效果,效率问题,就需要设置远程hdfs的地址和端口号,以及input、output位置。
问题二:Caused by: java.net.ConnectException: 拒绝连接。远程hdfs访问被拒绝。
出现这个问题,一般是因为input、output目录位置所处的HDFS地址和端口号配错了。
如下设置ip及端口号,就能顺利连接到本机hdfs的位置及端口下的/user/hadoop/位置,输出结果也能及时在hadoop eclipse插件下看到。
final String inputPath = "hdfs://127.0.0.1:9000/user/hadoop/input";
final String outputPath = "hdfs://127.0.0.1:9000/user/hadoop/output";
hadoop eclipse插件目录结果如下:
补充说明:
这个问题折腾了一天。
刚开始以为是hadoop locations的的设置问题。由于我是伪分布式hadoop配置,把localhost改为本机地址127.0.0.1,也没解决报错问题。
后来根据官方文档和网上的各种建议,修改core-site.xml、hdfs-site.xml、mapred-site.xml均没有解决问题。
后来以为是必须开启yarn,又修改配置文件mapred-site.xml、yarn-site.xml,还是没有解决问题。
最后才知道input、output的端口号必须一致。不一致的是hadoop locations中dfs、map/reduce中不一样,我的分别是9000、50020.