分布式计算是把一个需要巨大计算能力的任务分解成若干部分,然后分配给多个计算机来处理,处理完的结果汇总在一起得到最终的结果。
- 并行和并发的区别
- 并行计算是在时间上同时运行的计算,并发是在一段时间内处在运行和等待的计算。比如说有两台服务器(进程),并行的数量是2,并发可以是1000, 这样是指在两台服务器上可以有1000个计算在运行,不过只有2个是在同时运行,其他的都是在等待资源。
- 分布式计算和并行计算的区别
- 并行计算分为时间上的并行和空间上的并行。时间上的并行是流水线技术,在流水线上A-B-C,当机器完成A任务之后,将结果传输到计算B的机器,这个时候A将继续计算,而不是计算A的机器空闲直至C结束才开始下一轮,这样能更加充分的利用资源;空间上的并行是多个处理器并发的执行计算
- 分布式计算是将数据分成多份,分配给多个处理器,每个处理器将负责所有逻辑的计算,汇总所有处理器的结果就是最终的结果。
- 并行计算的延伸是超算,而分布式计算的延伸是云计算。超算是基础,云计算是架构。
- 分布式计算框架的关键支撑
- 分片算法。随着数据计算量越来越大,单机计算所需要的时间越来越长,效率低下,分片算法会将数据分成多份,然后同步到多台机器上分别计算,这样就可以加速计算的运行。但是有着不足--不能负载均衡,如果是平均分片,有些机器的计算能力强,提前计算结束,那么后面会一直空闲。
- 消息队列。分片算法能够带来更加快速的计算,如果能够解决缺点,那将会更加的高效,消息队列则弥补了缺点。通过单独的程序将计算任务推送到消息队列,然后负责计算的机器来消费队列中的计算任务。这样就具备了分布式计算的特征:计算任务的分发,扩容和容灾。
- 常见分布式计算框架
- Hadoop: HDFS 文件存储系统,Map Reduce 计算框架,Yarn 资源管理系统
- Spark: RDD 核心,DAG 计算框架,内存中计算,Yarn和Mesos 资源管理
- Strom: Spout 消息源,Bolt 计算