wordcount
统计文件中每个单词出现的次数
需求:求wc
- 文件内容小:
shell
- 文件内容很大:
TB、GB
????如何解决大数据量的统计分析
===>url TOPN
<===wc
的延伸
工作中很多场景的开发都是wc
的基础上进行改造的
借助于分布式计算框架来解决了:mapreduce
MapReduce编程模型之执行步骤
- 准备map处理的输入数据
- Mapper处理
- Shuffle
- Reduce处理
- 结果输出
MapReduce编程模型之核心概念
Split
交由MapReduce作业来处理的数据块,是MapReduce中最小的计算单元
HDFS:blocksize 是HDFS中最小的存储单元 128M
默认情况下:他们两是一一对应的,当然我们也可以手工设置他们之间的关系(不建议)
InputFormat
将我们的输入数据进行分片(split):InputSplit [] getSplits(JobConf job,int numSplits)
TextInputFormat:处理文本格式的数据
OutputFromat
MapReduce架构之MapReduce1.x
JobTracker:JT
- 作业的管理者 管理者
- 将作业分解成一堆的任务:Task(MapTask和ReduceTask)
- 将任务分派给TaskTracker运行
- 作业的监督、容错处理(task作业挂了,重启task的机制)
- 在一定的时间间隔内,JT没有收到TT的心跳信息,TT可能是挂了,TT上运行的任务会指派到其它TT上去执行
TaskTracker:TT
- 任务的执行者 干活的
- 在TT上执行我们的Task(MapTask和ReduceTask)
- 会与JT进行交互:执行/启动/停止作业,发送心跳信息给JT
MapTask
- 自己开发的map任务交由该Task出来
- 解析每条记录的数据,交给自己的map方法处理
- 将map的输出结果写到本地磁盘(有些作业只仅有map没有reduce==>HDFS)
ReduceTask
- 将Map Task输出的数据进行读取
- 按照数据进行分组传给我们自己编写的reduce方法处理
- 输出结果写到HDFS
MapReduce架构之MapReduce2.x
(与YARN类似)