乐趣区

windows调试hadoop-mapreduce任务踩坑记录(使用idea)

首先准备 Hadoop 连接驱动,放到任意一个文件夹中,并将其 bin 目录写入 path 环境环境变量,另取其中的 hadoop.dll 文件放入 c 盘 System32 文件夹中。创建空 maven 项目,这是我的全部依赖
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-jobclient</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0</version>
</dependency>
</dependencies>
将 hadoop 四大配置文件放在 resources 根目录下,还有 log4j.properties 再准备你的 mapreduce 源码,在 main 函数中写入以下代码

System.setProperty(“HADOOP_USER_NAME”, “hadoop”);
Configuration conf = new Configuration();
conf.set(“fs.defaultFS”, “hdfs://10.32.6.132:9000”);//ip 依照自己的集群进行定义
conf.set(“mapreduce.framework.name”, “yarn”);
conf.set(“mapreduce.app-submission.cross-platform”, “true”);// 允许跨平台提交
conf.set(“mapred.jar”,”E:\\hadooptest\\target\\hadooptest-1.0-SNAPSHOT-jar-with-dependencies.jar”);

mapred.jar 就写编译出来的 jar 包位置
idea 中运行配置如下
其中输入路径一定要存在,输出路径一定要不存在,由 Hadoop 自行创建
此处写 hadoop 驱动的根目录,之后点击运行即可。
遇到的问题:1. 一定要保证 hadoop 集群是可运行的,单机版也可以,但一定要保证是正常的。2. 在本机运行过程中会调用 hadoop 历史服务器,采用 sbin/mr-jobhistory-daemon.sh start historyserver 命令启动不启动的异常为 10020 端口无法访问 3. 运行过程中出现的各种连接异常的警告可以忽视,不可忽视的是异常,端口默认访问地址是 0.0.0.0 是无法被其他主机访问的,所以任何连接被异常中断时请检查是否在配置文件中显式指定了套接字。

退出移动版