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

Deathlightning

首先准备Hadoop连接驱动,放到任意一个文件夹中,并将其bin目录写入path环境环境变量,另取其中的hadoop.dll文件放入c盘System32文件夹中。
创建空maven项目,这是我的全部依赖(maven依赖可能会出现包冲突问题,望自行解决,主要是log4j的冲突)

 <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中运行配置如下
clipboard.png

其中输入路径一定要存在,输出路径一定要不存在,由Hadoop自行创建

clipboard.png
此处写hadoop驱动的根目录,之后点击运行即可。

遇到的问题:
1.一定要保证hadoop集群是可运行的,单机版也可以,但一定要保证是正常的。
2.在本机运行过程中会调用hadoop历史服务器,采用
sbin/mr-jobhistory-daemon.sh start historyserver
命令启动
不启动的异常为10020端口无法访问
3.运行过程中出现的各种连接异常的警告可以忽视,不可忽视的是异常,端口默认访问地址是0.0.0.0是无法被其他主机访问的,所以任何连接被异常中断时请检查是否在配置文件中显式指定了套接字。

阅读 3k
41 声望
2 粉丝
0 条评论
41 声望
2 粉丝
文章目录
宣传栏