Hadoop 1.x和Hadoop 2.x,Hadoop 1.x局限性和Hadoop 2.x YARN优点之间的区别
在本文中,我们将详细讨论Hadoop 1.x和Hadoop 2.x之间的区别,Hadoop 1.x架构的缺点或者局限性以及Hadoop 2.x架构如何解决Hadoop 1.x局限性。
Apache Hadoop的最新版本是2.7.0。
Hadoop V.1.x组件
Apache Hadoop V.1.x具有以下两个主要组件
- HDFS(HDFS V1)
- MapReduce(MR V1)
在Hadoop V.1.x中,这两个也称为Hadoop的两个支柱。
Hadoop V.2.x组件
Apache Hadoop V.2.x具有以下三个主要组件
- HDFS V.2
- 纱(MR V2)
- MapReduce(MR V1)
在Hadoop V.2.x中,这两个也被称为Hadoop的三大支柱。
Hadoop 1.x限制
Hadoop 1.x具有许多局限性或者缺点。
Hadoop 1.x的主要缺点是其架构中的MapReduce组件。
这意味着它仅支持基于MapReduce的批处理/数据处理应用程序。
Hadoop 1.x具有以下局限性/缺点:
它仅适用于Hadoop系统中已经存在的大量数据的批处理。
它不适用于实时数据处理。
它不适用于数据流。
每个群集最多支持4000个节点。
它具有单个组件:JobTracker,可以执行许多活动,例如资源管理,作业计划,作业监视,重新计划作业等。
JobTracker是单点故障。
它不支持多租户支持。
每个群集仅支持一个名称节点和一个名称空间。
它不支持水平可伸缩性。
它仅运行Map/Reduce作业。
它遵循HDFS中的插槽概念来分配资源(内存,内存,CPU)。
它具有静态贴图和缩小插槽。
这意味着,一旦将资源分配给Map/Reduce作业,即使某些插槽处于空闲状态,也无法重新使用它们。
For Example:- Suppose, 10 Map and 10 Reduce Jobs are running with 10 + 10 Slots to perform a computation. All Map Jobs are doing their tasks but all Reduce jobs are idle. We cannot use these Idle jobs for other purpose.
注意:-总之,Hadoop 1.x系统是一个单一目的系统。
我们只能将其用于基于MapReduce的应用程序。
Hadoop 1.x和Hadoop 2.x之间的差异
如果我们观察Hadoop 1.x和2.x的组件,则Hadoop 2.x体系结构具有一个另外的新组件:YARN(又是另一个资源协商器)。
它是BigData Hadoop系统的改变游戏规则的组件。
- 新组件和API
如下图所示,重新构建了Hadoop 1.x并引入了新组件来解决Hadoop 1.x的局限性。
- Hadoop 1.x作业跟踪器
如下图所示,Hadoop 1.x Job Tracker组件分为两个组件:
- 资源经理:
管理集群中的资源
应用主管:
To manage applications like MapReduce, Spark etc.- Hadoop 1.x仅支持一个用于管理HDFS文件系统的名称空间,而Hadoop 2.x支持多个名称空间。Hadoop 1.x仅支持一种编程模型:MapReduce。
Hadoop 2.x使用YARN组件支持多种编程模型,例如MapReduce,Interative,Streaming,Graph,Spark,Storm等。Hadoop 1.x在可伸缩性方面有很多限制。
Hadoop 2.x通过新架构克服了这一限制。Hadoop 2.x具有多租户支持,但Hadoop 1.x没有。
Hadoop 1.x HDFS使用固定大小的插槽机制进行存储,而Hadoop 2.x使用可变大小的容器。
Hadoop 1.x每个群集最多支持4,000个节点,而Hadoop 2.x每个群集最多支持10,000个以上的节点。
Hadoop 2.x如何解决Hadoop 1.x局限性
Hadoop 2.x通过使用新架构解决了Hadoop 1.x的大多数限制。
通过将MapReduce组件职责分离为不同的组件。
通过引入用于资源管理的新YARN组件。
通过分离组件的职责,它支持多个名称空间,多租户,更高的可用性和更高的可伸缩性。
Hadoop 2.x YARN的优点
Hadoop 2.x YARN具有以下优点。
- 高度可扩展
- 高可用性
- 支持多种编程模型
- 支持多租户
- 支持多个命名空间
- 改进的集群利用率
- 支持水平可伸缩性