【MapReduce】
1. easily writing applications
2.process vast amounts of data:
1.in-parallel on large clusters (thousands of nodes) of 【以并行方式处理数据】
2.commodity hardware in a reliable 【了解】
3.fault-tolerant manner.
【什么是并行处理?】
多个task
单核 和 多核
【什么是容错?】
有重试机制
【mapreduce介绍】:
1.用的不多 但是思想很重要
2.easily writing applications:
非常多的接口
业务逻辑+MR api =》 开发完 mr程序 =》提交到yarn运行我们的程序
3.mr 使用与 离线数据计算 【不适合流式数据计算】
3.mapreduce 去 统计wordcount
【问题】:
1.什么是Map阶段?
2.什么是Reduce阶段?
3.Map task 个数由什么东西决定的?
切片的数量
4.Reduce task 个数由什么东西决定的?
1.mr 用户自己决定
2.默认reduce task个数是 1
3.reduce task 个数 最终文件输出的时候 就有多少个文件
5.什么是shuffle?
6.reduce阶段一定要有吗?
7.partition 分区 什么是分区?为什么要分区?
8.input 文件切片又是什么?
大数据数据处理三段论:
1.input
2.处理
3.output
4.mapreduce 整个流程?
(input) <k1, v1> -> map -> <k2, v2> -> reduce -> <k3, v3> (output)
1.整个阶段都是对 kv进行开发
2.每个阶段输出都是kv
3.kv 数据类型 have to be serializable:
1.mplement the Writable interface
deserializable
serializable 场景就是把数据进行网络传输
2. key classes have to implement the WritableComparable:
key既要实现序列化+排序
value 只需实现序列化
4.mapreduce 为例 分析 wordcount 案例
input:文件里面的数据 一行一行读取
按照分隔符 进行拆分 每个单词 ,每个单词赋值为1
x,x,x,y =》 (x,1)(x,1)(x,1)(y,1)
k => 表示的 单词
v => 表示的 次数
reduce: 归约 =》聚合
把相同的key “拉倒一起”,“做一些事情”
把相同的key “拉倒一起”:shuffle
“拉倒一起”:
(x,<1,1,1>)
(y,<1>)
“做一些事情”: sum
(x,3)
(y,1)