好程序员大数据学习路线分享 MAPREDUCE , 需求:统计大量的文本文件中的单词出现的次数
- 1 )整个运算需要分阶段
- 阶段一:并行局部运算
- 阶段二 :汇总处理,不同的阶段需要开发不同的程序
- 2 )阶段之间的调用
- 3 )业务程序( task 程序)如何并发到集群并启动程序
- 4 )如何监控 task 程序的运行状态,如何处理异常
- :: 这些问题是开发分布式程序都会面临的问题,完全可以封装成框架 ::
MR 的结构
- 一个完整的 MapReduce 运行时有三类实例进程:
- 1 ) MRAppMaster : 负责整个程序的过程调度和状态调度
- 2 ) mapTask :负责 map 阶段的整个数据处理流程
- 3 ) ReduceTask :负责 reduce 阶段的整个数据处理流程
MR 设计框架
::MAPERDUCE 详细框架 ::
- 1 )资源如何分发? :: 放到 HDFS::: 中不能由客户端发送,如果配置 1000 台机器,也不能做 pipeline ,所以,可以把 jar 放在 HDFS 中的一个目录下。
- 2 )虽然有上千台机器,现在 job 只需要 20 台机器即可完成,由谁决定是哪 20 台机器? ::ResourceManager:: 作为 master
- 3)worker--NODEMANAGER, 执行应用程序,监控应用程序的资源使用情况( cpu ,磁盘,网络,硬盘)并且向调度器 ResourceManager 汇报

:: 作业提交流程 ::
- 1 )客户端提交作业给 resourcemanager
- 2 ) resourcemanager 返回 jobid ,存储路径 path 信息
- 3 )客户端将 job.jar 、 job.split (确定需要运行多少 task )、 job.splitinfo 等资源上传到 HDFS 的存储路径
- 4 )上传到 hdfs 完成后,客户端通知 resourcemanager 启动 job
- 5 ) resourcemanager 将 job 加入到 job* 等待队列 * ,然后 nodemanager 启动 container ,将资源下载到 container 内,向客户端发出请求启动 master
- 6)Appmaster 向 resourcemanager 请求 maptask 的资
- 7 ) resourcemanager 分配资源,从 hdfs 下载 jar 到 container 中, master 启动 maptask ,通过心跳机制,检查 job.split
- 8 ) maptask 执行完成,通知 Appmaster ,释放 maptask 资源。
## 分片机制
:: 如何确定需要运行多少 task (并行度) ::

- 决定需要多大的并行度
- map 阶段并行度:客户端首先查看一下待处理数据目录下的数据量
/data/a.txt 1G
/data/b.txt 800M
- 循环遍历:对每个文件看文件有多少个 block ,将 block 数量累加到计数器
- 返回一任务规划描述文件: job.split :
- [ ] split0: /data/a.txt 0-128M
- [ ] split1: /data/a.txtx 128-256M
… ..
- [ ] split8: /data/b.txt 0-128M
写入HDFS 中
- 分片和分块不同:
- 分片是逻辑概念,给 task 一个数据处理的范围
- 存在冗余( 10% ),偏移量和数据大小
- 特性:移动计算( jar 包中封装的计算)而不是移动数据
编写MR 程序的步骤:
1 、用户编写程序分为三个部分: Mapper 、 Reducer 、 Driver
2 、 Mapper 的输入数据是 kv 对的形式(数据类型可自定义)
3 、 Mapper 的输出数据是 kv 对的形式(数据类型可自定义)
4 、 Mapper 中的业务逻辑写在 map ()方法中
5 、 Map ()方法对每一对 kv 值调用一次
6 、 Reducer 的输入数据是 kv 对的形式(数据类型可自定义)
7 、 Reducer 的输出数据是 kv 对的形式(数据类型可自定义)
8 、 Reducer 中的业务逻辑写在 reduce ()方法中
9 、 ReduceTask 进程对每一组相同的 key 的 <k,v> 调用一次 reduce ()方法
10 、用户自定义的 Mapper 、 Reducer 类都要继承各自的父类
11 、整个程序需要一个 Driver 来进行提交,提交是一个描述了各种必要信息的 job 对象
- 案例: wordcount
- 需求:有一批数据文件( TB 或者 PB 级别的数据),如何统计这些文件中的单词出现次数
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69913892/viewspace-2654615/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/69913892/viewspace-2654615/
2511

被折叠的 条评论
为什么被折叠?



