文档章节

hadoop(06)、使用Eclipse开发Hadoop的MapReduce项目

MaxBill
 MaxBill
发布于 2017/12/28 14:44
字数 1177
阅读 224
收藏 2

         本文实践源代码的码云地址: https://gitee.com/MaxBill/HMRP

         在上文《hadoop(05)、使用Eclipse连接远程Hadoop集群》中我们主要实践了使用Eclispe开发工具安

装hadoop的开发插件,并且使用hadoop插件连接Hadoop远程集群。本文我们要在上文搭建的hadoop开

发环境的基础上开发Hadoop的MapReduce项目。

一、环境准备

1.hadoop集群

2.安装了hadoop插件的Eclipse

二、创建MapReduce项目

创建MapReduce项目可以通过eclispe的MapReduce插件创建,也可以使用Maven来构建,建议使用Maven来构建,可以更好的管理项目依赖等问题,下面两种方式都会进行:

1.打开Eclipse的File菜单下的New Project视图,选择建立Map/Reduce Project


2.新建一个Map/Reduce项目

配置默认的hadoop,点击Configure Hadoop install directory...

设置完成默认的hadoop,点击next

配置项目信息,点击完成,即可创建一个新的Map/Reduce项目

注意:以上方式适合简单的Map/Reduce项目,需要手动管理项目的JAR包,建议使用Maven来构建Map/Reduce项目,文本实际上使用的是以下Maven的方式:

1.创建Maven项目

点击File菜单下的New Project视图,选择建立Maven Project

2. 填写项目信息,完成即可

项目结构如下:

注:代码中项目名重构为HMRP了

三、编写代码

1.在上面创建的Maven项目中添加用到的hadoop开api包依赖

<dependency>

          <groupId>org.apache.hadoop</groupId>

          <artifactId>hadoop-common</artifactId>

          <version>2.8.2</version>

</dependency>

<dependency>

         <groupId>org.apache.hadoop</groupId>

         <artifactId>hadoop-hdfs</artifactId>

         <version>2.8.2</version>

</dependency>

<dependency>

         <groupId>org.apache.hadoop</groupId>

         <artifactId>hadoop-client</artifactId>

          <version>2.8.2</version>

</dependency>

pom.xml如下图:

项目整体结构图如下:

注意:项目个类说明

JobBean:是用来传递作业运行所需参数的BEAN

WordCountMap:我们自己定义的map函数类

WordCountReduce:我们定义的reduce函数类

HdfsUtils:Hdfs操作的工具类

JobsUtils:作业工具类

WordCount:词频统计主类

项目源代码已经上传码云,地址:https://gitee.com/MaxBill/HMRP

2.创建WordCount类,使用hadoop官方给出的例子代码来调试

本文使用的hadoop的版本是2.8.2,使用《官方hadoop2.8.2的wordcount示例代码》实践

3.使用java操作HDFS

我们对官方的例子做一些改动,官方是将写好的WordCount程序丢到hadoop上去执行,我们采用eclipse远程开发调试的方式

<1>.编写java客户端操作远程hdfs的工作类

<2>.编写自定义map函数

<3>.编写自定义reduce函数

<4>.编写作业工具类

4.我们改动后的测试主类

四、运行调试

1.准备资源数据

我们是统计词频程序,准备一个文本的元数据,用于我们的统计词频作业程序,在本地建一个txt文本,里面内容随便输入一些单词和句子即可

2.启动hadoop集群

3.运行程序查看状态

从hdfs的web控制面板或者eclipse的hdfs插件可以看到,在数据输出目录已经产生执行完作业的数据结果了 :

4.查看作业执行数据结果集

在eclipse的插件中双击我们执行作业产生的作业结果:

和输入的元数据进行比对,统计结果正确

五、问题反思

1.用户权限问题

Permission denied: user=hadoop, access=WRITE, inode="/":root:supergroup:drwxr-xr-x

解决方案:执行 hadoop fs -chmod 777 /user/hadoop,其他的操作目录也要赋权限

2.集群格式问题

在使用hdfs namenode -format格式化namenode的时候一定要先删除各个节点下data目录下的旧数据,不然会启动集群后无法连接datanode

六、总结

本文应用对官方WordCount的例子进行改动,实践了使用Eclispe连接远程Hadoop集群操作Hdfs以及开发运行调试了一个简单的MapReduce的项目。在项目中遇到了许多问题在文中也都列了出来,通过查资料也都顺利解决了。文中介绍了两种创建MapReduce项目的方式,实际项目中一般都会采用Maven的方式来构建,虽然完整的实践了MapReduce项目的开发过程,但是MapReduce和Hdfs是什么关 系,MapReduce运行的原理是什么,在后面的文中我们详细的讨论。

          

           

        

© 著作权归作者所有

MaxBill

MaxBill

粉丝 58
博文 87
码字总数 74493
作品 1
宝山
后端工程师
私信 提问
如何分布式运行mapreduce程序

如何分布式运行mapreduce程序 一、 首先要知道此前提 若在windows的Eclipse工程中直接启动mapreduc程序,需要先把hadoop集群的配置目录下的xml都拷贝到src目录下,让程序自动读取集群的地址后...

Zero零_度
2015/09/06
253
0
【Hadoop] - windows开发环境搭建

文章说明:因Linux平台再GUI页面通过IDE进行Hadoop开发,会导致Linux在GUI上极度消耗资源,对于一些配置不是很高的PC,可能会出现卡顿的情况,非常影响程序编写,本文就详细介绍如何在windo...

ZeroneLove
02/24
39
0
使用Eclipse运行Hadoop 2.x MapReduce程序常见问题

1、 当我们编写好MapReduce程序,点击Run on Hadoop的时候,Eclipse控制台输出如下内容: 这个信息告诉我们没有找到log4j.properties文件。如果没有这个文件,程序运行出错的时候,就没有打印...

chapin
2014/10/21
659
0
eclipse编译hadoop源码

由于开发mapreduce的时候,有时需要看源码,再次down下来,编译了下,仅作为学习记录 首先需要安装ant,svn(我用的是eclipse的插件); svn地址:http://svn.apache.org/repos/asf/hadoop/co...

东岸往事
2013/01/05
342
0
Hadoop实战之MapReducer项目结构分析

一.MapReducer项目结构分析 1.前言 参考本例子前: 1.需要确保搭建好了hadoop集群环境。 2.安装了eclipse开发hadoop的环境。 3.这是关于MapReducer中的Mapper、Reduce、Job三个类的学习分析。...

itbiggod
2018/05/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Cannot resolve org.springframework.boot:spring-boot-starter-web:unknown

没有指定版本好,本地库里面:spring-boot-starter-web的版本太多导致maven不能选择。 具体配置如下,version要选择自己适配的。 <dependency> <groupId>org.springframework.boot</grou......

观海562
12分钟前
3
0
荣耀笔记本装Win10系统攻略,一文教你快速入门

     荣耀MagicBook科技尝鲜版发布已经有一段时间了,这个预装了Linux版本的笔记本在原来已经极具性价比的基础上又便宜了300元,而荣耀笔记本如何安装Win10系统俨然成为了热门话题。对于...

梅丽莎好
39分钟前
4
0
CentOS7 部署 redis 5.0.6 集群

环境 操作系统: CentOS7.7,关闭 firewalld 和 selinux Redis: 5.0.6 master 实例 10.0.4.110:6371 10.0.4.110:6372 10.0.4.110:6373 slave 实例 10.0.4.111:6371 10.0.4.111:6372 10.0.4.1......

俊赛潘安-才比管乐
今天
47
0
怎么录制电脑上视频素材的声音

随着短视频的不断发展人们越来越喜欢利用空闲时间观看一些短视频用以打发零碎的时间,不少人发现这个机遇也匆匆走上制作短视频的道路,在制作短视频时配音是至关重要的,那你知道怎么在视频素...

cenfeng123
今天
6
0
[springboot 开发单体web shop] 6. 商品分类和轮播广告展示

商品分类&轮播广告 因最近又被困在了OSGI技术POC,更新进度有点慢,希望大家不要怪罪哦。 上节 我们实现了登录之后前端的展示,如: 接着,我们来实现左侧分类栏目的功能。 商品分类|Produc...

IsaacZhang
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部