MR基础原理
1.mapreduce 处理大数据,处理大数据的不一定是mapreduce
2.传统处理大数据的场景:hash方法
2.1 a=5 -----a%3,取余的方式,余数会<=3,找到不同的桶号,负载均衡,分发压力,通过这个hash方法。
2.2 Hash 代码示例
#导入一个随机数库
import random
print random.random()
0.33966638322
print random.random()
0.63803832923
print random.random()
0.38981373893
#让这些数字*100之后,
print random.random()*100
33.966638322
print random.random()*100
63.803832923
print random.random()*100
38.981373893
#再int 一下改变一下字符串类型。就变成了整数
print int(random.random()*100)
33
print int(random.random()*100)
63
print int(random.random()*100)
38
#要是再进行取余,假如有6个桶,那对6取余,hash运算,必然把这些请求到了6个桶
#其中的一个,实现的分流
print int(random.random()*100)%6
3
print int(random.random()*100)%6
5
print int(random.random()*100)%6
3.一致性hash方法:支持动态增长,更高级的划分方法
假设int 的取值范围是0-65536,若是你再加1,那就从最大值变成了最小值,那这个数就是最小值1,环形hash。编程是想。
最大值和最小值收尾相接,就变成了一个环形
4.大数据类型
大数据量:mysql分库分表,hash方式
大流量:其实也是hash,流量hash分流
大计算:mapreduce是一个框架,解决大计算的问题,云计算
云计算技术难点:
1.单机必须变成集群,处理能力更强
2.稳定性和容错能力
3.数据一致性
强一致性:每个节点的数据必须一样,才能提供服务
弱一致性:有一个机器数据更新了就可以提供服务,提供服务的速度快。其实部分机器 还未更新数据,
5.MapReduce 框架
作业调度:集群作业,大家一起提交任务,mr负责调度
分而治之思想
数钱的例子