原理的事情,以前我并没有认识到其重要性,现在突然想起的一句话:工具的使用,我知其然,但是不知其所以然,自然在遇到问题时,无法根本地解决问题
- MR v1:
编程模型:Map 阶段和 Reduce 阶段
数据处理引擎:MapTask 和 ReduceTask
运行时环境: JobTracker (资源管理与作业控制) 和 TaskTracker (接受JobTracker并具体来执行)
MR v2:
编程模型以及数据处理引擎与MR v1是一样的。
唯一不同的是运行环境:MR v2是运行于 Yarn 之上的 MapReduce 计算框架。YARN(资源管理与调度)和 ApplicationMaster(作业控制)YARN
集成了很多框架都需要的核心的功能,可以支持多种计算框架的资源管理器。MR v1 的局限性:
扩展性差(JobTracker 兼具资源管理与作业的调度,容易负载过大)
可靠性差(Mater/Slave 架构中,Master的单点故障)
资源利用率低(Slot资源分配模型)
无法支持多种计算平台。
HA的机制来保证机器来提供持续性稳定的服务。 离线处理框架和批处理,这种方式是无法满足真实的业务的。所以就应用而生的产生了流式处理和迭代次数非常多,对于内存要求比较高的计算任务,这个就是Storm 和 Spark。