1.总述
我们知道分布式的主要作用是拆分任务,分发给集群中的pc来并行处理。对于这个功能而言,于是引起了如下几个问题或者说分布式系统需要实现的几个功能点:
- 如何分发任务——那必然设计到多机通讯的RPC功能,当然有很多成熟的RPC框架可以使用,如阿里巴巴的hsf、dubbo(开源)、Facebook的thrift(开源)、Google grpc(开源)、Twitter的finagle(开源)等。
- 如何处理高并发场景下的并行计算——那必然设计到并发控制、负载均衡、多线程等
- 如何面临子任务失败的问题——那必然涉及到复制容错的实现
- 如何处理大批量数据——大数据下,内存肯定存不下,必然涉及到存储功能、数据持久化功能的实现
- 如何处理多服务器场景下,由于某任务需要多系统配合,必然涉及到多阶段任务提交,那如果某个系统在任务执行完成但是还没响应之前,该系统服务器就宕机了,这样就带来了数据的不一致问题——于是需要解决一致性问题。
更详细的解释一下一致性问题:

2.MapReduce
对于上面提到的功能点,有很多不同的分布式系统来解决这些问题,其中MapReduce就是一个成熟的分布式架构系统。下面从这篇经典的MapReduce论文中来简单理解一下:

当用户程序通过调用MapReduce从而提交程序到分布式集群中处理任务计算时,下面是具体的执行步骤:
-
首先是MapReduce会对要处理的数据进行分割,按照用户指定的大小(HDFS中默认是64MB)进
62




被折叠的 条评论
为什么被折叠?



