MaoReduce个人整理
分布式运算程序的编程框,用于开发基于 Hadoop的数据分析的核心框架
使用: 用户编写的业务逻辑代码和自带默认组件一个完整的分布式运算程序, 并发运行在一个 Hadoop集群上
优点:
易于编写: 用户只关心, 业务逻辑 实现框架的接口
良好的扩展性: 可以动态增加服务器, 解决动态资源不够的问题
高容错性: 任何一台机器挂掉, 可以将任意转移到其它节点上
适合海量数据计算 (TB/PB) 几千台服务器共同计算
缺点:
不擅长实时计算 Mysql
不擅长流式计算 Sparkstreaming flink
不擅长DAG有向无环图计算 spark
Map阶段的并发MapTask, 完全并发运行, 互不相干
Reduce阶段的并发ReduceTask, 完全互不相干, 但是它们的数据依赖于上一个阶段的所有MapTask并发实例的输出
MaoReduce编程模型只能包含一个Map阶段和Reduce阶段, 如果用户的业务逻辑非常复杂, 那就只能多个MaoReduce程序, 串行运行
MrAppMaster: 负责整个程序的过程调度及状态协调
MapTask: 负责Map阶段的整个数据处理流程
ReduceTask: 负责Reduce阶段的整个数据处理流程
Java类型 | Hadoop Writable |
---|---|
Boolean | BooleanWritable |
Byte | ByteWritable |
Int | IntWritable |
Float | FloatWritable |
Long | LongWritable |
Double | DoubleWritable |
String | Text |
Map | MapWritable |
Array | ArrayWritable |
Null | NullWritable |
用到的txt数据
|
(1). 将MapTask传给我们的文本内容先转换成String
|
(2). 根据空格将一行切分成单词
|
(3). 将单词输入为<单词, 1>
|
(1). 汇总各个key的个数
|
(2). 输出该key的总次数
|
Driver
(1). 获取配置信息, 获取job对象实例
(2). 指定本程序的jar保所在的本地路径
(3). 关联Mapper/Reducer业务类
(4). 指定Mapper输出数据的kv类型
(5). 指定最终输出的数据的kv类型
(6). 指定job的输入原始文件所在目录
(7). 指定job的输出结果所在目录
(8). 提交作业
作者: 我叫史迪奇
本文来自于:
https://sdq3.link/MaoReduce.html博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议