Hadoop和Hadoop2有很大的区别,区别在于:1、YARN区别;2、架构区别;3、高可用性区别;4、多计算引擎区别;5、分离处理和调度区别;6、资源分配区别。Hadoop和Hadoop2之间的最大不同是YARN。YARN 是“ Yet Another Resource Negotiator ”的缩写。Hadoop 仅仅是HDFS和MapReduce计算框架的组合。
1、YARN区别
Hadoop和Hadoop2之间的最大不同是YARN。YARN 是“ Yet Another Resource Negotiator ”的缩写。Hadoop 仅仅是HDFS和MapReduce计算框架的组合。正如我们所看到的,在 Hadoop中,YARN位于HDFS层(依赖于服务器本地存储)和计算框架(如 MapReduce 、 Spark )之间。
YARN 的主要功能是进行资源管理和调度。在Hadoop中,MapReduce是你实际可使用的少数的计算框架,它直接与HDFS进行交互。在Hadoop中,MapReduce以与Hadoop中类似的方式执行数据处理。那么哪个Hadoop组件在Hadoop中执行了集群资源管理和任务调度呢?MapReduce执行数据处理和集群资源管理的双重任务。
2、架构区别
Hadoop 使用 MRvl 而 Hadoop 使用 MRv2 (也称为 YARN )。在 Hadoop 2 中,有一个全局 ResourceManager 进程来管理集群中的资源,且它运行在主节点上。工作节点上将有单独的 NodeManager 进程来执行数据处理任务。
在 Hadoop中,有一个单独的进程 JobTracker 来管理作业。每个工作节点运行个工作于特定节点的 TaskTracker 进程来实际执行作业。Hadoop中的 JobTracker 负责执行调度和任务管理功能。在 Hadoop 2 中, JobTracker 被分为调度和资源管理两个功能:
ResourceManager 处理调度任务;
ApplicationMaster 负责特定应用的资源管理。
Hadoop 2 中的 ResourceManager 管理着以前由 Hadoop 中的 JobTracker 执行的几个关键功能。更准确地说, ResourceManager 执行 JobTracker 的一些任务,新的特定应用的 ApplicationMaster 负责 JobTracker 其余的工作。在 Hadoop 中, JobTracker 在繁忙的集群中超负荷运转,因为它同时负责资源管理和任务调度双重任务。JobTracker 资源管理和作业调度/监控两个关键功能的分离减轻了专用守护程序的工作压力。
Hadoop 2 中的 NodeManager 执行 Hadoop 中运行在每个节点上的 TaskTracker 负责的所有任务。NodeManager 进程在集群中的工作节点上运行,并作为代理监视当前节点上任务的执行 ResourceManager 在 Hadoop 中作为纯调度器使用,它与 MapReduce 之间没有特殊连接。而在 Hadoop中, JobTracker 与 MapReduce 是高度耦合的。
3、高可用性区别
Hadoop2具有超高的可用性,可让你运行Standby NameNode和Standby ResourceManager 服务,这两者都对集群运行至关重要。在Hadoop 中,NameNode 只有一个,存在单点故障风险。 如果NameNode服务器不可用,则对HDFS的所有访问都将被中断,导致整个集群不可用。
4、多计算引擎区别
在 Hadoop中,无论使用MapReduce、Hive、Pig还是Python、Ruby的流模型,你只能使用MapReduce作为处理引擎。 根本没有可用的替代引擎。Hadoop 2提供了多种处理引擎,如MapReduce、Apache Spark、Apache Tez等。
Hadoop 2 不仅支持批处理,而且支持多种应用类型。虽然MapReduce可以胜任多种类型的工作,但是它并不适合所有的大数据用例。
Hadoop一个经常为人诟病的地方是高延迟。在Hadoop 2中,可以根据特定的用例类型,选择合适的计算引擎。Hadoop 用批处理的方式处理海量数据,在这种情况下,时间延迟并不是问题。
虽然Hadoop 1非常善于处理甚至包含 PB 级信息的大型非结构化数据集,但在实时数据集的实时分析中并不十分有效。Hadoop 2打破了Hadoop 以批处理为中心的这种定位。
5、分离处理和调度区别
Hadoop 2中的YARN (下一代MapReduce,被称为YARN或MRv2 )标志着Hadoop在执行基本工作时有了根本性的不同。
YARN 被设计为一个通用的分布式应用程序管理框架,而不是像 MapReduce 在 Hadoop 1 中作为一体化资源管理器和性能引擎。
实际上,在更多情况下, YARN 被称为“ Hadoop 操作系统”,因为它执行如下功能:维护了一个可以使批处理、交互式和实时处理等计算引擎同时访问相同 HDFS 数据的多租户环境。监控和管理应用的负载。Hadoop 2中的 MapReduce (也称为 MRv2 )保留了它的处理能力,并成为了一个纯粹的分布式计算框架。
6、资源分配区别
最初, Hadoop 1 没有在同时运行的各种作业之间采用复杂的方式进行资源分配,而是采用了先进先出的资源分配模型,这也意味着,长时间运行的作业会长期占用资源,这会有潜在的风险,会导致小而重要的作业因为长而不重要的作业占用资源而无法启动。在 Hadoop 的后续版本中,引入了名为“公平调度器”和“容量调度器”的复杂作业调度程序。在 Hadoop 1 中,使用插槽( slots )的方式来管理资源,而在 Hadoop 2 中,则使用容器( container )来管理资源。最后,Hadoop 1和Hadoop 2在扩展能力上的最大差别在于,Hadoop 1集群只可以扩展到大约5000个节点,而Hadoop 2集群可以扩展到10000个节点。
延伸阅读:
什么是Hadoop?
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
Hadoop起源于Apache Nutch项目,始于2002年,是Apache Lucene的子项目之一。2004年,Google在“操作系统设计与实现”(Operating System Design and Implementation,OSDI)会议上公开发表了题为MapReduce:Simplified Data Processing on Large Clusters(Mapreduce:简化大规模集群上的数据处理)的论文之后,受到启发的Doug Cutting等人开始尝试实现MapReduce计算框架,并将它与NDFS(Nutch Distributed File System)结合,用以支持Nutch引擎的主要算法。由于NDFS和MapReduce在Nutch引擎中有着良好的应用,所以它们于2006年2月被分离出来,成为一套完整而独立的软件,并被命名为Hadoop。到了2008年年初,hadoop已成为Apache的拔尖项目,包含众多子项目,被应用到包括Yahoo在内的很多互联网公司。
文章标题:Hadoop和Hadoop2有很大的区别么,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37838