调度架构中的两层调度的第二层调度是由框架完成的,通常就是计算框架,比如 Hadoop、Spark 等;
程序员基于这些计算框架,可以完成不同类型和规模的计算。
分布式计算的本质就是在分布式环境下,多个进程协同完成一件复杂的事情;
每个进程各司其职,完成自己的工作后,再交给其他进程去完成其他工作;
对于没有依赖的工作,进程间是可以并行执行的。
1 MapReduce
核心思想:分而治之,JDK的Fork-Join也是此思想的框架
步骤:
1 分解原问题(Map):将原问题分解为若干个规模较小,相互独立,且与原问题形式相同的子问题;
2 求解子问题:若子问题规模较小且容易被解决则直接求解,否则递归地求解各个子问题;
3 合并解(Reduce):将各个子问题的解合并为原问题的解
MapReduce 主要包括以下三种组件:
Master(MRAppMaster):负责分配任务,协调任务的运行,并为 Mapper 分配 map() 函数操作、为 Reducer 分配 reduce()函数操作;
Mapper worker:负责 Map 函数功能,即负责执行子任务;