笔记1-MapReduce被淘汰原因

1、为什么MapReduce会被硅谷一线公司淘汰?

MapReduce是从纷繁复杂的业务逻辑中,为我们抽象出了 Map 和 Reduce这样足够通用的编程模型。
缺点:
1、复杂度高
    当你构造更为复杂的处理架构时,往往进行任务划分,而且每一步都可能出错。而且往往比认为的复杂的多。
2、时间性能达不到用户要求
    Google500 多页的 MapReduce 性能优化手册
    1PB的排序从12小时优化到0.5小时花了5年

思考题:如果你在 Facebook 负责处理例子中的用户数据,你会选择什么分片函数,来保证均匀分布的数据分片?
由于没有过相关的经验,从网上查了下资料,常见的数据分片有1、hash 2、consistent hash without virtual node 3、consistent hash with virtual node 4、range based
文章中使用的方法就是range based方法,缺点在于区间大小固定,但是数据量不确定,所以会导致不均匀。
其他三种方法都可以保证均匀分布的数据分片,但是节点增删导致的数据迁移成本不同。
1、hash函数节点增删时,可能需要调整散列函数函数,导致大量的数据迁移
consistent hash是将数据按照特征值映射到一个首尾相接的hash环上,同时也将节点映射到这个环上。对于数据,从数据在环上的位置开始,顺时针找到的第一个节点即为数据的存储节点
2、consistent hash without virtual node 增删的时候只会影响到hash环上响应的节点,不会发生大规模的数据迁移。但是,在增加节点的时候,只能分摊一个已存在节点的压力;同样,在其中一个节点挂掉的时候,该节点的压力也会被全部转移到下一个节点
3、consistent hash with virtual node 在实际工程中,一般会引入虚拟节点(virtual node)的概念。即不是将物理节点映射在hash换上,而是将虚拟节点映射到hash环上。虚拟节点的数目远大于物理节点,因此一个物理节点需要负责多个虚拟节点的真实存储。操作数据的时候,先通过hash环找到对应的虚拟节点,再通过虚拟节点与物理节点的映射关系找到对应的物理节点。引入虚拟节点后的一致性hash需要维护的元数据也会增加:第一,虚拟节点在hash环上的问题,且虚拟节点的数目又比较多;第二,虚拟节点与物理节点的映射关系。但带来的好处是明显的,当一个物理节点失效是,hash环上多个虚拟节点失效,对应的压力也就会发散到多个其余的虚拟节点,事实上也就是多个其余的物理节点。在增加物理节点的时候同样如此。
引用blog:http://www.cnblogs.com/xybaby/p/7076731.html

所以这样看具体采用何种方式要结合其他的因素(显示场景,成本?),如何抉择我也不是很清楚。

你可能感兴趣的:(极客时间-大规模数据处理实战)