文档章节

基于Eclipse搭建hadoop开发环境

四叶草666
 四叶草666
发布于 2017/07/21 10:46
字数 1305
阅读 17
收藏 0
点赞 0
评论 0

一、基础环境准备

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. Hello Hadoop
  2. Hello BigData
  3. Hello Spark
  4. Hello Flume
  5. Hello Kafka​

3.新建WordCount.java

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

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

© 著作权归作者所有

共有 人打赏支持
四叶草666
粉丝 0
博文 51
码字总数 50778
作品 0
深圳
程序员
windows eclipse 搭建spark开发环境

1、Java下Spark开发环境搭建 1.1、jdk安装 安装oracle下的jdk,我安装的是jdk 1.7,安装完新建系统环境变量JAVAHOME,变量值为“C:Program FilesJavajdk1.7.079”,视自己安装路劲而定。 同时...

张欢19933 ⋅ 2016/10/26 ⋅ 0

Windows下单机安装Spark开发环境

机器:windows 10 64位。 因Spark支持java、python等语言,所以尝试安装了两种语言环境下的spark开发环境。 1、Java下Spark开发环境搭建 1.1、jdk安装 安装oracle下的jdk,我安装的是jdk 1.7...

涩女郎 ⋅ 2016/09/20 ⋅ 0

hadoop 开发环境搭建

hadoop 开发环境搭建 (ubuntu + idea ) @(hadoop笔记)[idea 开发环境] 基于ubuntu 和 idea 搭建 hadoop开发环境,其实是搭建MR的开发环境。这里简单说一下为什么采用idea,就因为一点,ide...

OttoWu ⋅ 2016/12/13 ⋅ 0

Hadoop伪分布配置与基于Eclipse开发环境搭建

1、开发配置环境: 开发环境:Win7(64bit)+Eclipse(kepler service release 2) 配置环境:Ubuntu Server 14.04.1 LTS(64-bit only) 辅助工具:WinSCP + Putty Hadoop版本:2.5.0 Hadoo...

loki_lan ⋅ 2014/09/02 ⋅ 19

hadoop开发环境搭建

hadoop开发环境搭建: hadoop网站: http://hadoop.apache.org/ http://wiki.apache.org/hadoop/ 参考这篇文章编译:http://wiki.apache.org/hadoop/HowToContribute 开发环境:ubuntu 需要安......

活的自由 ⋅ 2011/10/19 ⋅ 1

Hadoop实战之 MapReduce

私塾在线整体课程概览 第一部分: 什么是 MapReduce

linni ⋅ 2014/01/08 ⋅ 0

OpenStack Dashboard二次开发环境的搭建

openstack是什么?能干什么?涉及的初衷是什么?由什么来组成?刚接触openstack,说openstack不是一个软件,而是由多个组件进行组合,这是一个更深层次的理解,当我们看到dashboard的时候,我...

English0523 ⋅ 2015/12/30 ⋅ 0

eclipse上搭建hadoop开发环境

一、概述 1.实验使用的Hadoop集群为伪分布式模式,eclipse相关配置已完成; 2.软件版本为hadoop-2.7.3.tar.gz、apache-maven-3.5.0.rar。 二、使用eclipse连接hadoop集群进行开发 1.在开发主...

一语成谶灬 ⋅ 2017/09/07 ⋅ 0

hadoop环境搭建总结

最近一段时间在看Hadoop The Definitive Guide, 3rd Edition.pdf,学习hadoop,个人想不能总看书,不实践呀,于是准备搭建一套开发环境,果然遇到很多问题,最终调试出了运行结果,在此记录。...

火镜先生 ⋅ 2016/02/18 ⋅ 0

Windows系统下Eclipse上搭建Python开发环境

Windows系统下Eclipse上搭建Python开发环境 在Eclipse上安装和搭建Python开发环境需要以下五步完成: (第一步)下载最新的Eclipse安装包。 我是基于Python版本python-3.6.4。python-3.6.4要...

zhangphil ⋅ 01/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mavne settings.xml

<?xml version="1.0" encoding="UTF-8"?> <settings> <localRepository>C:/Users/tuozq/.m2/repository</localRepository> <mirrors> <mirror> <id>a......

Jay丶 ⋅ 4分钟前 ⋅ 0

xuchen-mvc相关类

package org.mvc.framework.utils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ContextPathUtil { public static List<String> splitConte......

徐志 ⋅ 18分钟前 ⋅ 0

JVM CMS和G1 有什么区别

1.CMS适用于要求:不能忍受长时间停顿要求快速响应的应用。 2.当新生代占用达到一定比例的时候,开始出发收集。不区分年轻代和年老代空间。它把堆空间划分为多个大小相等的区域。当进行垃圾收...

qimh ⋅ 20分钟前 ⋅ 0

重入(reentrant或re-entrancy)攻击

可重入 若一个程序或子程序可以「在任意时刻被中断然后操作系统调度执行另外一段代码,这段代码又调用了该子程序不会出错」,则称其为可重入(reentrant或re-entrancy)的。 例子如下: funct...

王坤charlie ⋅ 22分钟前 ⋅ 0

HTTP协议(超文本传送协议)详解

引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTT...

一个成都的小点点 ⋅ 22分钟前 ⋅ 0

bootstrap easyui

bootstrap easyui

霜叶情 ⋅ 23分钟前 ⋅ 0

数据结构与算法之双向循环链表实践

一、双向循环链表实践 1.题目1,要求实现用户输入一个数,使得26个字母的排列发生变化 例如用户输入3,输出结果:DEFGHIJKLMNOPQRSTUVWXYZABC 例如用户输入-3,输出结果:XYZABCDEFGHIJKLMN...

aibinxiao ⋅ 26分钟前 ⋅ 0

架构设计之初体验,送给准备进阶架构的朋友(个人总结)

1 基本概念和目的 架构设计的目的是为了解决系统复杂度带来的问题,并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出实际业务实际情况的复杂点,然后有有...

James- ⋅ 27分钟前 ⋅ 0

获取jar中的资源文件途径

如果资源文件处于jar中而非当前项目中,可以通过如下方式加载 String path = Thread.currentThread().getConctextClassLoader().getResource("资源文件路径").getFile();...

最佳的时间就是现在 ⋅ 30分钟前 ⋅ 0

从方法论到零售客户实践 解码阿里巴巴数据中台——2018上海云栖大会

摘要: 一、数据中台之道 6月8日,上海云栖大会进入了第二天的议程,数据中台专场论坛座无虚席,数据中台总架构师邓中华女士向在场的观众介绍了数据中台的衍生发展之道。 基于OneID、OneData...

阿里云云栖社区 ⋅ 33分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部