mapreduce WIndows 本地测试
- 要有Java环境
- 下载解压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
- 配置文件修改,配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
- hdfs namenode -format 再start-all.cmd ,成功页面如下 jps能够有 namenode、datanode、resourcemanager、nodemanager等
- 以上就把hadoop本地配置完全了 并且成功启动了
- 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测试顺利