一、Maven的引入
想用MapReduce编程,需要引入hadoop的jar包
Maven的作用:导包的新技术,包和包之间是有依赖关系的,帮助我们管理依赖(即导包),是一款项目构建工具,帮助我们标准化项目结构,帮我们打包
Maven的使用:
①安装maven:不用安装,IDEA和新版本的Eclipse已经集成maven了,而且IDEA为在校学生提供了一年的免费使用,可以通过校园邮件申请。
②创建一个maven项目
③配置依赖关系(通过配置文件)
二、IDEA--Maven集成开发环境的使用
(Ⅰ)IDEA的基本使用
配置JDK:File-ProjectStructure-SDKs-"+"-JDK-选择JDK安装目录-OK-Apply
更改字体:File-Settings-Editor-Font -Size
更改主题:File-Settings-Appearance-Theme,也可以自己从网上下载主题
下载远程仓库的索引:
(Ⅱ)Maven Project
1.maven项目的目录结构:
2.maven的三点坐标:用三个参数来锁定唯一的一个项目
①groupid 组id,相当于包名,一般是公司域名的倒写
②artifactid 构件id,相当于类名,代表项目名称
③version 版本
3.pom.xml配置文件(Project Object Model)
编写依赖(导包)
一个dependencies里可以写多个dependency
3.库:maven通过maven的库对所有的依赖进行管理
分类:
①本地库
本地库默认在C:\Users\HR\.m2\repository
修改:通过maven的配置文件
将settings.xml文件中
②远程库:
maven有全球的中央仓库,会通过pom文件解析项目中需要的jar包去本地库引用,如果本地库没有,自动从中央仓库下载
最容易出现的问题: maven的问题几乎只有一个——库的问题。库在复制的时候可能会文件损坏导致maven无法使用或者在下载的时候网络中断导致下载文件缺失。
简单粗暴解决办法:把库删了重新下
4.maven的生命周期:maven的很多功能都是插件形式的,包括生命周期
clean:清除所有生成的资源,即删除target目录
validate:
compile:对maven项目进行编译,如果成功说明编译没有问题,编译后的字节码文件在target-classes下
test:用于集成测试,一般和junit结合,会测试test目录下的代码
package:打包,将maven项目中的所有代码打成jar包,放在target下
verify:
install:用于将打好的jar包安装到本地库
site:
deploy:
每个生命周期执行前都会将之前所有的生命周期执行一次
三、MR的基本运行机制
MapReduce并行的计算框架
map和reduce是计算的两个阶段:map将数据以键值对的形式传给reduce,reduce拿到数据后将相同的键合并,组成值的集合
四、MapReduce的HelloWorld
1.windows下配置MR运行
①把log4j.properties放到项目的resource目录下,可以看到更详细的提示信息
②要在环境变量中配置HADOOP_HOME,注意:配置完成后重启IDEA才能生效
未配置环境变量出现的错误如下图:
③要在hadoop安装路径的bin下添加winutils.exe(未添加出现的错误在上图中同一位置)
④在C:\Windows\System32下添加hadoop.dll文件
缺dll文件会出现的错误如下图:
2.MR的编程:
①添加hadoop的依赖 2.6.1
②需要写两个类用于完成Map和Reduce两个阶段的任务,关于Map阶段的类需要继承Mapper类,关于Reduce阶段的类要继承Reducer类
③提交MR任务(只有少量数据没有集群,只是在windows下测试,原理和代码是真的)