hadoop 1.0 和 hadoop 2.0 的区别
一、从 Hadoop 整体框架来说
Hadoop1.0 即第一代 Hadoop,由分布式存储系统 HDFS 和分布式计算框架 MapReduce 组成,其中 HDFS 由一个 NameNode 和多个 DateNode 组成,MapReduce 由一个 JobTracker 和多个 TaskTracker 组成。
Hadoop2.0 即第二代 Hadoop 为克服 Hadoop1.0 中的不足:针对 Hadoop1.0 单 NameNode 制约 HDFS 的扩展性问题,提出 HDFS Federation,它让多个 NameNode 分管不同的目录进而实现访问隔离和横向扩展,同时彻底解决了 NameNode 单点故障问题;针对 Hadoop1.0 中的 MapReduce 在扩展性和多框架支持等方面的不足,它将 JobTracker 中的资源管理和作业控制分开,分别由 ResourceManager(负责所有应用程序的资源分配)和 ApplicationMaster(负责管理一个应用程序)实现,即引入了资源管理框架 Yarn。同时 Yarn 作为 Hadoop2.0 中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度,不仅限于 MapReduce 一种框架,也可以为其他框架使用,如 Tez、Spark、Storm 等
二、从 MapReduce 计算框架来讲
MapReduce1.0 计算框架主要由三部分组成:编程模型、数据处理引擎和运行时环境。它的基本编程模型是将问题抽象成 Map 和 Reduce 两个阶段,其中 Map 阶段将输入的数据解析成 key/value,迭代调用 map()函数处理后,再以 key/value 的形式输出到本地目录,Reduce 阶段将 key 相同的 value 进行规约处理,并将最终结果写到 HDFS 上;它的数据处理引擎由 MapTask 和 ReduceTask 组成,分别负责 Map 阶段逻辑和 Reduce 阶段的逻辑处理;它的运行时环境由一个 JobTracker 和若干个 TaskTracker 两类服务组成,其中 JobTracker 负责资源管理和所有作业的控制,TaskTracker 负责接收来自 JobTracker 的命令并执行它。
MapReducer2.0 具有与 MRv1 相同的编程模型和数据处理引擎,唯一不同的是运行时环境。MRv2 是在 MRv1 基础上经加工之后,运行于资源管理框架 Yarn 之上的计算框架 MapReduce。它的运行时环境不再由 JobTracker 和 TaskTracker 等服务组成,而是变为通用资源管理系统 Yarn 和作业控制进程 ApplicationMaster,其中 Yarn 负责资源管理的调度而 ApplicationMaster 负责作业的管理。
三、具体不同
1) 组成部分
Hadoop1.0 由 HDFS 和 MapReduce 组成,Hadoop2.0 由 HDFS 和 YARN 组成。
2) HDFS 可扩展性
Hadoop1.0 中的 HDFS 只有一个 NameNode,制约着集群文件个数的增长,Hadoop2.0 增加了 HDFS 联盟的架构,可以将 NameNode 所管理的 NameSpace 水平划分,增加了 HDFS 的可扩展性。
3) HDFS 的可靠性
Hadoop1.0 中的 HDFS 只有一个 NameNode,存在着单点故障的问题,Hadoop2.0 提供了 HA 的架构,可以实现 NameNode 的热备份和热故障转移,提高了 HDFS 的可靠性。
4) 可支持的计算框架
Hadoop1.0 中只支持 MapReduce 一种计算框架,Hadoop2.0 因为引入的 YARN 这个通用的资源管理与任务调度平台,可以支持很多计算框架了。
5) 资源管理和任务调度
Hadoop1.0 中资源管理和任务调度依赖于 MapReduce 中的 JobTracker,JobTracker 工作很繁重,很多时候会制约集群的性能。
Hadoop2.0 中将资源管理任务分给了 YARN 的 ResourceManage,将任务调度分给了 YARN 的 ApplicationMaster。
评论