写点什么

hadoop 1.0 和 hadoop 2.0 的区别

发布于: 2021 年 04 月 30 日

一、从 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。

用户头像

专注于大数据技术研究 2020.11.10 加入

运营公众号:五分钟学大数据。大数据领域原创技术号,深入大数据技术

评论

发布
暂无评论
hadoop 1.0 和 hadoop 2.0 的区别