一、基础环境准备

1、Eclipse 下载地址:http://pan.baidu.com/s/1slArxAP

2、JDK1.8  下载地址:http://pan.baidu.com/s/1i5iNyTZ

二、win10下hadoop开发环境搭建

1、下载hadoop插件:hadoop-eclipse-plugin-2.7.3.jar,插件放在eclipse\dropins目录下。

hadoop-eclipse-plugin-2.7.3.jar 百度云盘下载地址: http://pan.baidu.com/s/1i585KTv 
 
hadoop-eclipse-plugin-2.7.3.jar  CSDN下载地址:http://download.csdn.net/detail/chongxin1/9859371
 

关闭,并重新启动Eclipse。

2、在windows解压hadoop-2.7.3.tar.gz

hadoop-2.7.3.tar.gz 百度云盘下载地址:http://pan.baidu.com/s/1o8c77PS

3、配置Hadoop
Map/Reduce

4、点击show
view -> other… ,在mapreduce tools下选择Map/ReduceLocations

 在eclipse右下侧,点击蓝色大象:
 
 
 
添加一个新的HadoopLocation,并配置:
 
locationname:随意写 
 
Map/Reduce Master :
host:192.168.168.200 【装hadoop的linux系统的IP地址】
port:9001(core-site.xml)
 
DFS Master :
Use M/R Master host:(打勾:单机模式) 
User name:windows系统得默认用户
Port:9000 (mapred-site.xml)
 
这里的Host和Port在Ubuntu中搭建Hadoop环境时已经设置了。在core-site.xml和mapred-site.xml中查看。 

5、查看是否连接成功

至此win10下hadoop开发环境搭建完成。

三、运行新建WordCount
项目并运行

1.右击New->Map/Reduce
Project

2.在hdfs输入目录创建需要统计的文本

  1)没有输入输出目录卡,先在hdfs上建个文件夹  
  1. bin/hadoop dfs -mkdir -p hdfs://192.168.168.200:9000/input
  2. bin/hadoop dfs -mkdir -p hdfs://192.168.168.200:9000/output

2).把要统计的文本上传到hdfs的输入目录下
  1. bin/hadoop fs -put words.txt /input

words.txt内容为:

  1. HelloHadoop
  2. HelloBigData
  3. HelloSpark
  4. HelloFlume
  5. HelloKafka​

3.新建WordCount.java

  1. import java.io.IOException;
  2. import java.util.StringTokenizer;
  3. import org.apache.hadoop.conf.Configuration;
  4. import org.apache.hadoop.fs.Path;
  5. import org.apache.hadoop.io.IntWritable;
  6. import org.apache.hadoop.io.Text;
  7. import org.apache.hadoop.mapreduce.Job;
  8. import org.apache.hadoop.mapreduce.Mapper;
  9. import org.apache.hadoop.mapreduce.Reducer;
  10. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  11. import org.apache.hadoop.mapreduce.lib.input.NLineInputFormat;
  12. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  13. /**
  14. * 第一个MapReduce程序
  15. *
  16. * @author sunchen
  17. *
  18. */
  19. public class WordCount {
  20. public static class TokenizerMapper extends
  21. Mapper<Object, Text, Text, IntWritable> {
  22. private final static IntWritable one = new IntWritable(1);
  23. private Text word = new Text();
  24. public void map(Object key, Text value, Context context)
  25. throws IOException, InterruptedException {
  26. StringTokenizer itr = new StringTokenizer(value.toString());
  27. while (itr.hasMoreTokens()) {
  28. word.set(itr.nextToken());
  29. context.write(word, one);
  30. }
  31. }
  32. }
  33. public static class IntSumReducer extends
  34. Reducer<Text, IntWritable, Text, IntWritable> {
  35. private IntWritable result = new IntWritable();
  36. public void reduce(Text key, Iterable<IntWritable> values,
  37. Context context) throws IOException, InterruptedException {
  38. int sum = 0;
  39. for (IntWritable val : values) {
  40. sum += val.get();
  41. }
  42. result.set(sum);
  43. context.write(key, result);
  44. }
  45. }
  46. public static void main(String[] args) throws Exception {
  47. Configuration conf = new Configuration();
  48. Job job = Job.getInstance(conf, "word count");
  49. job.setJarByClass(WordCount.class);
  50. job.setMapperClass(TokenizerMapper.class);
  51. job.setCombinerClass(IntSumReducer.class);
  52. job.setReducerClass(IntSumReducer.class);
  53. job.setOutputKeyClass(Text.class);
  54. job.setOutputValueClass(IntWritable.class);
  55. job.setInputFormatClass(NLineInputFormat.class);
  56. // 输入文件路径
  57. FileInputFormat.addInputPath(job, new Path(
  58. "hdfs://192.168.168.200:9000/input/words.txt"));
  59. // 输出文件路径
  60. FileOutputFormat.setOutputPath(job, new Path(
  61. "hdfs://192.168.168.200:9000/output/wordcount"));
  62. System.exit(job.waitForCompletion(true) ? 0 : 1);
  63. }
  64. }​

4、配置JDK1.8

因为Hadoop-eclipse-plugin-2.7.3.jar是使用JDK1.8编译的,如果不使用JDK1.8,则会出现以下报错:

Java.lang.UnsupportedClassVersionError: WordCount : Unsupported major.minor version 52.0

原因:JDK版本太低,一定要换成JDK1.8。

5、在项目的src下面新建file名为log4j.properties的文件

在项目的src下面新建file名为log4j.properties的文件,内容为:

  1. ### 设置日志级别及日志存储器 ###
  2. #log4j.rootLogger=DEBUG, Console
  3. ### 设置日志级别及日志存储器 ###
  4. log4j.rootLogger=info,consolePrint,errorFile,logFile
  5. #log4j.rootLogger=DEBUG,consolePrint,errorFile,logFile,Console
  6. ###  输出到控制台 ###
  7. log4j.appender.consolePrint.Encoding = UTF-8
  8. log4j.appender.consolePrint = org.apache.log4j.ConsoleAppender
  9. log4j.appender.consolePrint.Target = System.out
  10. log4j.appender.consolePrint.layout = org.apache.log4j.PatternLayout
  11. log4j.appender.consolePrint.layout.ConversionPattern=%d %p [%c] - %m%n
  12. ### 输出到日志文件 ###
  13. log4j.appender.logFile.Encoding = UTF-8
  14. log4j.appender.logFile = org.apache.log4j.DailyRollingFileAppender
  15. log4j.appender.logFile.File = D:/RUN_Data/log/dajiangtai_ok.log
  16. log4j.appender.logFile.Append = true
  17. log4j.appender.logFile.Threshold = info
  18. log4j.appender.logFile.layout = org.apache.log4j.PatternLayout
  19. log4j.appender.logFile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
  20. ### 保存异常信息到单独文件 ###
  21. log4j.appender.errorFile.Encoding = UTF-8
  22. log4j.appender.errorFile = org.apache.log4j.DailyRollingFileAppender
  23. log4j.appender.errorFile.File = D:/RUN_Data/log/dajiangtai_error.log
  24. log4j.appender.errorFile.Append = true
  25. log4j.appender.errorFile.Threshold = ERROR
  26. log4j.appender.errorFile.layout = org.apache.log4j.PatternLayout
  27. log4j.appender.errorFile.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss}  [ %t\:%r ] - [ %p ]  %m%n
  28. #Console
  29. log4j.appender.Console=org.apache.log4j.ConsoleAppender
  30. log4j.appender.Console.layout=org.apache.log4j.PatternLayout
  31. log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
  32. log4j.logger.java.sql.ResultSet=INFO
  33. log4j.logger.org.apache=INFO
  34. log4j.logger.java.sql.Connection=DEBUG
  35. log4j.logger.java.sql.Statement=DEBUG
  36. log4j.logger.java.sql.PreparedStatement=DEBUG
  37. #log4j.logger.com.dajiangtai.dao=DEBUG,TRACE
  38. log4j.logger.com.dajiangtai.dao.IFollowDao=DEBUG ​

如图:

没有log4j.properties日志打不出来,会报警告信息:

  1. log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
  2. log4j:WARN Please initialize the log4j system properly.
  3. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.​​

6、配置hadoop环境变量

添加环境变量HADOOP_HOME=D:\hadoop-2.7.3
追加环境变量path内容:%HADOOP_HOME%/bin

如果没有生效,重启eclipse;如果还是没有生效,重启电脑。

如果没配置hadoop环境变量,则会出现以下报错:

Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

  1. 2017-07-08 15:53:03,783 ERROR [org.apache.hadoop.util.Shell] - Failed to locate the winutils binary in the hadoop binary path
  2. java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
  3. at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:379)
  4. at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:394)
  5. at org.apache.hadoop.util.Shell.<clinit>(Shell.java:387)
  6. at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80)
  7. at org.apache.hadoop.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.java:610)
  8. at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:273)
  9. at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:261)
  10. at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:791)
  11. at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:761)
  12. at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:634)
  13. at org.apache.hadoop.mapreduce.task.JobContextImpl.<init>(JobContextImpl.java:72)
  14. at org.apache.hadoop.mapreduce.Job.<init>(Job.java:142)
  15. at org.apache.hadoop.mapreduce.Job.getInstance(Job.java:185)
  16. at org.apache.hadoop.mapreduce.Job.getInstance(Job.java:204)
  17. at WordCount.main(WordCount.java:56)​​

跟代码就去发现是HADOOP_HOME的问题。如果HADOOP_HOME为空,必然fullExeName为null\bin\winutils.exe。解决方法很简单,配置环境变量吧。

7、下载winutils.exe,hadoop.dll拷贝到%HADOOP_HOME%\bin目录

winutils.exe , hadoop.dll github下载地址:https://github.com/SweetInk/hadoop-common-2.7.1-bin
winutils.exe , hadoop.dll 百度云盘下载地址:https://pan.baidu.com/s/1jI3KdX8#list/path=%2F
拷贝winutils.exe , hadoop.dll到%HADOOP_HOME%\bin目录
 少了winutils.exe会报以下错误:

java.io.IOException: Could not locate executable D:\hadoop-2.7.3\bin\winutils.exe in the Hadoop binaries.

  1. 2017-07-08 16:17:13,272 ERROR [org.apache.hadoop.util.Shell] - Failed to locate the winutils binary in the hadoop binary path
  2. java.io.IOException: Could not locate executable D:\hadoop-2.7.3\bin\winutils.exe in the Hadoop binaries.
  3. at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:379)
  4. at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:394)
  5. at org.apache.hadoop.util.Shell.<clinit>(Shell.java:387)
  6. at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80)
  7. at org.apache.hadoop.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.java:610)
  8. at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:273)
  9. at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:261)
  10. at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:791)
  11. at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:761)
  12. at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:634)
  13. at org.apache.hadoop.mapreduce.task.JobContextImpl.<init>(JobContextImpl.java:72)
  14. at org.apache.hadoop.mapreduce.Job.<init>(Job.java:142)
  15. at org.apache.hadoop.mapreduce.Job.getInstance(Job.java:185)
  16. at org.apache.hadoop.mapreduce.Job.getInstance(Job.java:204)
  17. at WordCount.main(WordCount.java:56)​

少了hadoop.dll会报以下错误:

  1. 2017-07-08 16:34:27,170 WARN [org.apache.hadoop.util.NativeCodeLoader] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable​​

8、点击WordCount.java右击-->Run As-->Run on  Hadoop

运行结果:

单词统计结果如下:

至此搭建完毕,666!

基于Eclipse搭建hadoop开发环境的更多相关文章

  1. 基于eclipse搭建android开发环境-win7 32bit

    基于eclipse搭建android开发环境-win7 32bit 前言:在使用朋友已搭建的Android开发环境时,发现朋友的开发环境版本较低且在update SDk时失败,便决定根据网上文章提示从 ...

  2. 在ubuntu下使用Eclipse搭建Hadoop开发环境

    一.安装准备1.JDK版本:jdk1.7.0(jdk-7-linux-i586.tar.gz)2.hadoop版本:hadoop-1.1.1(hadoop-1.1.1.tar.gz)3.eclipse ...

  3. 在windows环境中用eclipse搭建hadoop开发环境

    1. 整体环境和设置 1.1 hadoo1.0.4集群部署在4台VMWare虚拟机中,这四台虚拟机都是通过NAT模式连接主机 集群中/etc/hosts文件配置 #本机127.0.0.1 localh ...

  4. 使用eclipse搭建hadoop开发环境

    下载一个 hadoop-eclipse-plugin-*.jar的eclipse插件,并放在plugins目录下 重启eclipse   打开视象,找“大象” 连接HDFS   success 编程准 ...

  5. 搭建基于MyEclipse的Hadoop开发环境

    不多说,直接上干货! 前面我们已经搭建了一个伪分布模式的Hadoop运行环境.请移步, hadoop-2.2.0.tar.gz的伪分布集群环境搭建(单节点) 我们绝大多数都习惯在Eclipse或MyE ...

  6. 基于Eclipse搭建Hadoop源码环境

    Hadoop使用ant+ivy组织工程,无法直接导入Eclipse中.本文将介绍如何基于Eclipse搭建Hadoop源码环境. 准备工作 本文使用的操作系统为CentOS.需要的软件版本:hadoo ...

  7. 基于Eclipse的Android开发环境搭建

    1.  Java开发环境搭建 1.1  JDK下载安装 JDK(Java Development Kit )是针对Java开发人员发布的软件开发工具包.JDK 是整个Java的核心,包括了Java运行 ...

  8. Jdk1.7+eclipse搭建Java开发环境

    Jdk1.7+eclipse搭建Java开发环境 1.    下载jdk1.7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7 ...

  9. 使用Eclipse搭建JavaWeb开发环境的几个基本问题

    Eclipse搭建JavaWeb开发环境 eclipse是一个用于java程序开发的ide软件,tomcat是一个运行javaweb应用的服务器软件,使用eclipse开发javaweb应用的时,首要 ...

随机推荐

  1. FCC JS基础算法题(6):Truncate a string(截断字符串)

    先看一下题目描述: 如果字符串的长度比指定的参数num长,则把多余的部分用...来表示.切记,插入到字符串尾部的三个点号也会计入字符串的长度.但是,如果指定的参数num小于或等于3,则添加的三个点号不 ...

  2. python 爬虫newspaper3k 新闻爬去方法 利用第三方库

    from newspaper import Article url = '你想要爬取的网站url' news = Article(url, language='zh') news .download( ...

  3. day 03 变量与基本数据类型

    变量的命名规范 一:变量命名的大前提,应该能够反映出变量值所记录内容 1:变量名只能由数字,字母,下划线组成 2:变量名不能以数字开头 3:变量名不能使用系统的关键字,不然可能会报错 二:变量名的命名 ...

  4. laravel 添加验证码

    1.  安装依赖  composer require gregwar/captcha 2.使用 use Gregwar\Captcha\CaptchaBuilder; use DB; use Requ ...

  5. Bug03_SSM整合_mybatis result maps collection already contains value...

    这个问题是在映射文件,但是这个映射文件是自动生成的. 所以想起来可能是在自动生成映射文件,pojo类时操作有问题.第一次运行时,出现错误,没有删除已经生成的文件就直接运行了第二次. 解决办法:删除旧的 ...

  6. SpringBoot2静态资料访问

    在SpringBoot2内要继承WebMvcConfigurationSupport并重写addResourceHandlers方法才能访问到静态资料. @Configuration public c ...

  7. 路由器DHCP服务及DHCP中继

    实验要求:掌握路由配置DHCP服务配置 拓扑如下: R1enable 进入特权模式config terminal   进入全局模式interface s0/0/0 进入端口ip address 192 ...

  8. 数据结构与算法Java描述 队列

    package com.cjm.queue; /** * 数据结构与算法Java实现 队列 * * @author 小明 * */ public class Myqueue { private Nod ...

  9. [LeetCode&Python] Problem 598. Range Addition II

    Given an m * n matrix M initialized with all 0's and several update operations. Operations are repre ...

  10. P1220 关路灯 (区间dp)

    题目链接:传送门 题目大意: 总共有N盏灯,老张从点C(1 ≤ C ≤ N)开始关灯(关灯不需要等待时间,C点的灯直接关掉),与此同时灯开始烧电(已知功率Pi). 老张每次可以往左走关最近的灯或者往右 ...