Hadoop2——Hadoop程序实现

1 安装hadoop程序

1.1 linux上安装环境,就是软件包,跟mysql本质上1样

看尚硅谷的课程

1.2 windows上安装环境(这样才能在windows中跑hadoop程序,测试java写的hadoop程序是否可用)

参考下面的资料自己在电脑上成功安装:
Hadoop-3.0.0版本Windows安装

2 项目构建(和普通项目基本一样)

和普通项目构建只有3处不同:
(1)需要导入hadoop的JAR包,包含几十个jar包
(2)重写map方法和reduce方法
(3)运行在安装有hadoop的环境上
在这里插入图片描述

2.1 创建1个普通的项目

2.2 导入Hadoop的JAR包

2.2.1 手动导入

直接添加外部依赖库
在这里插入图片描述

2.2.2 maven导入

1 看尚硅谷的课程
2 使用Maven搭建Hadoop开发环境

2.3 一共就写5个方面的内容,分别编写split, InputFormat和outputFormat,Mapper和Partitioner和Reducer,排序sort+合并combine,Driver提交任务

在这里插入图片描述

2.3.1 切分任务split

定义分成几个mapper任务;

2.3.2 输入输出格式InputFormat和outputFormat

(1)定义mapper输入输出的键值对;
(2)定义reduce输入输出的键值对;

2.3.3 重写Mapper和Partitioner和Reducer

主要程序逻辑

(1)不同mapper各自实现自己的功能,输出数据;
(2)Partitioner将mapper输出进行分组,然后不同组对应不同reduce处理;
(3)Reducer对每个Partitioner数据进行处理;n个Partitioner就对应n个Reduce;

2.3.4 排序sort+合并combine

1、排序过程有2次
(1)mapper执行任务结束,会自动调用sort方法对输出的结果进行排序;
(2)在Partitioner内部,不同mapper的输入再次进行排序;

2、combine是合并,将相同键值对合并为1个键值对,其中值为1个列表;
功能:3个<Car,1>合并为1个<Car,[1,1,1]>,键相同的合并为1个。
在这里插入图片描述

2.3.5 主函数逻辑类Driver提交任务

2.4 在安有hadoop的Windows上测试或者在linux上测试代码

2.5 打包成JAR包

2.6 在linux环境上部署运行(必须使用hadoop命令)

两步:
1 su yarn切换到yarn用户
2 hadoop jar EXEMPLE_RUNNABLE.jar …

如果打包成普通jar包,那么需要在运行时指定main方法入口:
% hadoop jar EXEMPLE.jar MainClassName
好处是可以随意指定jar包中需要运行的main方法

如果打包成runnable jar包,在打包时就指定了main方法入口:
% hadoop jar EXEMPLE_RUNNABLE.jar …

3 其它需要知道的重要的内容

3.1 分区patiner

3.2 合并combiner

3.3 shuffle

3.3 序列化和反序列化

不同节点传输数据需要落盘,现在一个节点上的map处理好的key,value在你的内存中,如何让另一个节点上面的Reduce获取到呢?
(1)先需要把map输出的key,value存到硬盘中;
(2)再通过通信让处理reduce的这个节点读取你的盘里面的数据。
落盘和读取就叫序列化和反序列化,你就叫它写和读就行,很简单。

4 几个小案例

4.1 wordCount代碼案例

Hadoop Map/Reduce教程,案例

4.2

1 这个案例非常好:hadoop 启动wordcount实例,包括hadoop自带jar包和eclipsejar包。

2 MapReduce经典案例实战

3 MapReduce参数详解

5 hadoop和java运行jar包命令

5.1 hadoop

5.1.1 指定主函数

// 主函数包括两个参数
hadoop jar study_demo.jar com.ncst.hadoop.MaxTemperature /input/sample.txt /output

5.1.2 默认主函数

// 主函数包括两个参数
hadoop jar study_demo.jar /input/sample.txt /output

5.2 java命令

java -jar
或者 java -cp

6 linux中使用hadoop命令大全

Hadoop常用命令 - 一只小白two - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓码bigdata

如果文章给您带来帮助,感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值