一.环境

  • hadoop搭建在Vmware中,分布如下:
192.168.16.131    master
192.168.16.132    node1
192.168.16.133    node2
  • hadoop版本:hadoop-2.6.0
  • Eclipse+hadoop-eclipse-plugin-2.6.0.jar(该包可以在github中下载)

二.搭建

  • 下载Eclipse,解压到某个文件夹(D:\heclipse),将hadoop-eclipse-plugin-2.6.0.jar放在Eclipse的plugins文件夹下(D:\heclipse\eclipse\plugins),打开Eclipse,出现DFS Locations,表示成功,否则可能是jar包的问题,需要重新下载或制作:

  • 运行hadoop,通过win7访问http://(master_ip):50070查看能否访问,以及节点是否都存活。

    • 插曲:如果没有存活,如下图显示2的地方为0,则可以采取如下措施(只是其中一种方法):

    • 解决方法:将master节点中hadoop/tmp/dfs/name/current/VERSION 中的clusterID改成slaves节点的clusterID(即将clusterID与node1、node2统一)

  • 添加jar包,打开Eclipse,点击window–>preferences–>Hadoop Map/Reduce,选择hadoop的位置(这个要与安装的hadoop版本一样):

  • 点击window–>show view将Map/Reduce Locations显示出来,点击右上角的出现如下的视图:

    • (1)代表的是hadoop的master节点的IP,(2)是指端口号,需要与hadoop配置文件中的core-site.xml中的配置相同,(3)是指端口号,需要与hadoop配置文件的mapred-site.xml中的配置相同。
  • 点击finish,点击DFS Locations,出现如下视图表示连接正确(不同的环境不同的结果):


至此hadoop的win7开发环境搭建完成


三.运行mapreduce程序

  • 新建Map/Reduce Project (WordCount)
  • 创建package与class( package:org.apache.hadoop.examples class:WordCount.java)
  • 运行如下代码:
package org.apache.hadoop.examples;import java.io.IOException;
import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;public class WordCount {public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{private final static IntWritable one = new IntWritable(1);private Text word = new Text();public void map(Object key, Text value, Context context) throws IOException, InterruptedException {StringTokenizer itr = new StringTokenizer(value.toString());while (itr.hasMoreTokens()) {word.set(itr.nextToken());context.write(word, one);}}}public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> {private IntWritable result = new IntWritable();public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable val : values) {sum += val.get();}result.set(sum);context.write(key, result);}}public static void main(String[] args) throws Exception {Configuration conf = new Configuration();String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();if (otherArgs.length != 2) {System.err.println("Usage: wordcount <in> <out>");System.exit(2);}Job job = new Job(conf, "word count");job.setJarByClass(WordCount.class);job.setMapperClass(TokenizerMapper.class);job.setCombinerClass(IntSumReducer.class);job.setReducerClass(IntSumReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.addInputPath(job, new Path(otherArgs[0]));FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));System.exit(job.waitForCompletion(true) ? 0 : 1);}
}

正确运行结果:

打开output里面的part-r-00000,出现如下结果:


四.遇到的问题

  1. 导入jar包后不能显示DFS Locations

    • 可能原因是版本不同的原因,可以自己制作hadoop jar包
    • 制作方法:参考http://my.oschina.net/muou/blog/408543?fromerr=ACzJzurH

  2. 运行程序出现:
    Exception in thread “main”java.lang.NullPointerException atjava.lang.ProcessBuilder.start(Unknown Source)

    • 原因:在Hadoop2的bin目录下没有winutils.exe
    • 解决方法:在github上下载hadoop-common-2.6.0-bin-master.zip,解压之后将bin目录全部复制到上面在Eclipse中指定的hadoop目录的bin文件夹下,并配置环境变量(重新运行即可):
      HADOOP_HOME=D:\heclipse\hadoop PATH=;$HADOOP_HOME\bin


  3. 运行程序出现:
    Exception in thread “main”java.lang.UnsatisfiedLinkError:
    org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

    • 原因:C:\Windows\System32下缺少hadoop.dll
    • 解决方法:将上一步中bin文件下的hadoop.dll放到系统的C:\Windows\System32下,重启电脑即可。

    4.经过第三步运行程序还是出现:
    Exception in thread “main”java.lang.UnsatisfiedLinkError:
    org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

    • 原因:Windows的唯一方法用于检查当前进程的请求,在给定的路径的访问权限,所以我们先给以能进行访问,我们自己先修改源代码,return true 时允许访问。
    • 解决方法:下载hadoop源码(版本要一致),将hadoop-2.6.0-src\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\io\nativeio下NativeIO.java 复制到对应的Eclipse的project,然后修改557行为return true如图所示(包名最好与hadoop源码一致):


    5.运行程序出现如下warning:

    • 解决:将hadoop/etc/hadoop/下的log4j.properties复制到WordCount下即可。

    6.运行程序提示没有找到input或者是output已经存在

    • 解决方法:在WordCount下新建一个input文件夹,将运行的文件放进去即可;将原来运行产生的ouput文件夹删除即可。

搭建windows(win7)平台hadoop开发环境相关推荐

  1. 图文详解如何搭建Windows的Android C++开发环境

    原地址:http://www.apkbus.com/android-18595-1-1.html //================================================= ...

  2. 搭建Windows下Android应用开发环境——Eclipse/Android/ADT

    搭建Windows下Android应用开发环境--Eclipse/Android/ADT 田海立@CSDN 2011/07/18 Window下Android的应用开发环境,很早以前就在我的机器上搭建 ...

  3. 搭建Windows Embedded Compact 7开发环境

    大家期盼已久的WindowsEmbedded Compact 7是微软2010年发布的第七代嵌入式操作系统!微软可谓对它寄予很大的希望,所以连名字都改了.以下就简称WEC7吧.WEC7 的最大亮点就是 ...

  4. 搭建windows下的php开发环境

    1.PHP是什么? 在网站的服务器端,实现服务器程序(网站功能)业务逻辑的一门常见的编程语言. 做网站:web应用程序开发 web程序的架构:B\S B:browser 浏览器 S:Server   ...

  5. Hadoop完全分布式搭建过程、maven和eclipse配置hadoop开发环境、配置Map/Reduce Locations、简单wordcount测试!

    Hadoop完全分布式搭建及测试 项目开始前准备工作 1.下载并安装VM workstation pro 15安装包,这里选择: VMware-workstation-full-15.1.0-1359 ...

  6. Win7下Android开发环境搭建(8.19,8.24,9.30,10.21)

    [2013-10-21 20:06:55 - L9ThreeGong] Unable to resolve target 'android-10' [ 意思就是没有找到android_10,这里的10 ...

  7. win7下android开发环境搭建(win7 64位)

    注意:此为win7 (64)位系统 那么win7下32位系统如何进行android开发环境搭建呢?>>>win7下android开发环境搭建(win7 32位) 一.安装 JDK 下 ...

  8. Win7下android开发环境搭建

    所需软件安装包 1.  JDK.文件名为jdk-6u22-windows-i586.exe. 下载地址:http://www.oracle.com/technetwork/java/javase/do ...

  9. Win7下Android开发环境的搭建(更新于2015/3)

    Win7下Android开发环境的搭建(更新于2015/3) --JDK + Eclipse + Android SDK + ADT 的安装.配置 Android开发环境搭建并不复杂,就是资源不好下, ...

最新文章

  1. 2018年Java生态行业报告
  2. Python 工匠:善用变量来改善代码质量
  3. SpringBoot实践:更换启动Logo字样
  4. 雷军喜获2019年复旦企业管理杰出贡献奖!
  5. Thrift协议的服务模型
  6. 使用jQuery写一个简单的轮播图(笔记)
  7. 页面置换算法java_页面置换算法之Clock算法
  8. 微信小程序蓝牙通讯、串口通讯、调试助手(HC-08等 )
  9. RabbitVCS无法自动保存密码的BUG
  10. 【渝粤教育】国家开放大学2018年春季 8635-22T老年人中医体质辨识与养 参考试题
  11. java微信授权登录回调地址,微信开发者工具,注册微信公共平台
  12. 服务器2012系统登录密码忘记6,Server2012忘记管理员密码的处理方法
  13. 基于IBM Tivoli TSM系统构建某局备份系统实施方案
  14. 赛效:Xmind思维导图怎么用 新手使用教程分享
  15. 你还没有变成真正的孙悟空托世
  16. KMP字符串模式匹配算法【精简代码模板】
  17. 基于微信云开发的商家转账至零钱
  18. vue中使用element-ui时单元格内换行的问题
  19. 网站是用什么来赚钱的?
  20. 【NOIp普及组 2009】分数线划定

热门文章

  1. vb6入门级选择结构语句,for循环语句例题分析,声明:材料来自福州机电工程职业技术学校《VB程序设计》省级精品在线课程一一 实验报告
  2. 微力同步如何运行Linux,微力同步:一款可以在多个设备上同步文件的应用程序...
  3. 不要再无脑背诵面向对象三大特性了
  4. 程序员:在一个公司待了5年,环境舒适,是继续温水煮青蛙还是跳槽?
  5. Linux SysRq
  6. 小米股价腰斩的原因找到了,在海外两大市场均受挫
  7. Django-配置媒体资源-设置路由分发规则(下)
  8. Lucene加中文分词paoding调研结果
  9. (1)移动广告Mediation简单介绍
  10. 易语言post发送php数据,易语言post上传文件