在windows本地的Idea上运行mapreduce

mapreduce WIndows 本地测试

  1. 要有Java环境
  2. 下载解压Hadoop

http://www.apache.org/dyn/closer.cgi/hadoop/common

hadoop-2.8.5.tar.gz 点右键“解压到hadoop-2.8.5”

遇到的第一个坑 -----------
解压失败,无法创建符号链接,可能需要以管理器身份运行winrar,解决:start winrar x -y hadoop-3.1.2.tar.gz

  1. 配置文件修改,配hadoop环境,cmd运行hadoop version成功返回 表示成功
    如果放任解压失败 配置完之后会报以下
    Please set your HADOOP_HOME variable to the absolute path of | | the directo

环境小坑 ------
找到 set JAVA_HOME=C:\PROGRA~1\Java\jdk1.7.0_67
将C:\PROGRA~1\Java\jdk1.7.0_67 改为(在环境变量设置中JAVA_HOME的值)
(如果路径中有“Program Files”,则将Program Files改为 PROGRA~1

  1. hdfs namenode -format 再start-all.cmd ,成功页面如下 jps能够有 namenode、datanode、resourcemanager、nodemanager等
    在这里插入图片描述
  2. 以上就把hadoop本地配置完全了 并且成功启动了
  3. IDEA 手写wordcount map、reduce和原来一样,main中可以参考如下
        Configuration configuration = new Configuration();

        Job job = Job.getInstance(configuration, "wc");
        job.setJarByClass(LocalMapReduce.class);
        job.setMapperClass(LocalMap.class);
        job.setReducerClass(LocalReduce.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        FileInputFormat.setInputPaths(job, new Path("hdfs://localhost:9000/input/README.txt"));
        FileOutputFormat.setOutputPath(job,new Path("hdfs://localhost:9000/output/readme/"));
        job.setNumReduceTasks(3);
        System.exit(job.waitForCompletion(true) ? 0 : 1);

遇到的坑 第一个 Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the co… 起不起来

缺少Jar包:Hadoop-mapreduce-client-common-2.2.0.jar

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-mapreduce-client-common</artifactId>
    <version>2.8.5</version>
</dependency>

注意版本和local的一样

第二个java.lang.ClassNotFoundException: org.apache.hadoop.fs… 包没导进去
把本地share中的所有包导入idea 具体方法
在这里插入图片描述

第三个 hdfs路径写错了 返回file:/xxxxxx 不存在 注意是file 所以定位到本地去了 正确的写法是hdfs://localhost:9000/xxx

第四个 java.lang.VerifyError: Bad return type hadoop的版本和hadoop maven客户端版本

第五个 java.lang.NoSuchMethodError: org.apache.hadoop.security.authentication.util.KerberosUtil.hasKerberosTicket(Ljavax/security/auth/Subject;)Z
出现该异常的原因是Hadoop版本和依赖的版本不一致

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>2.8.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
        <version>2.8.1</version>
    </dependency>

done 祝大家windows测试顺利

原创文章 15 获赞 14 访问量 991

猜你喜欢

转载自blog.csdn.net/qq_41130274/article/details/105607299