Hadoop1.x和Hadoop2.x有什么区别
更新:HHH   时间:2023-1-7


这篇文章给大家分享的是有关Hadoop1.x和Hadoop2.x有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Hadoop 2.0 产生背景

  • Hadoop 1.0 中HDFS和MapReduce在高可用、扩展性等方面存在问题

    • JobTracker访问压力大,影响系统扩展性;

    • 难以支持除MapReduce之外的计算框架,比如Spark、Storm等。

    • NameNode单点故障,难以应用于在线场景;

    • NameNode压力过大,且内存受限,影响系统扩展性。

    • HDFS 存在的问题

    • MapReduce存在的问题

HDFS 2.x

  • 解决HDFS 1.0 单点故障和内存受限问题。

  • 解决单点故障

    • 参考 HDFS High Availability Using the Quorum Journal Manager

    • 参考 ZooKeeper Getting Started Guide

    • HDFS HA:通过准备NameNode解决;

    • 如果住NameNode发生故障,则切换到备NameNode。

  • 解决内存受限问题

    • HDFS Federation (联邦)

    • 水平扩展,支持多个NameNode;

    • 每个NameNode分管一部分目录;

    • 所有NameNode共享所有DataNode存储的资源。

  • 2.x仅是架构上发生了改变,使用方式不变

  • 对HDFS使用者透明

  • HDFS 1.x 中的命令和API仍可以使用

  • 主备NameNode

  • 解决单点故障

    • 主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换;

    • 所有DataNode同时向两个NameNode汇报数据块信息。

  • 两种切换选择

    • 手动切换:通过命令实现准备之间的切换,可以用HDFS升级等场合;(X)

    • 自动切换:基于Zookeeper实现。 (√)

  • 基于Zookeeper自动切换方案

    • Zookeeper Failove Controller:监控Namenode健康状态,并向Zookeeper 注册 Namenode

    • NameNode挂掉后,ZKFC为NameNode竞争锁,获得ZKFC锁的NameNode变为active

HDFS 2.x Federation

  • 通过多个namenode/namespace把元数据的存储和管理分散到多个节点中,使namenode/namespace可以通过增加机器来进行水平扩张。

  • 能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候也不会降低HDFS的性能。可以通过多个namsespace来隔离不同类型的应用,把不同类型应用的HDFS的存储和管理分派到不同的namenode中。

YARN

  • YARN - Yet Another Resource Negotiator;

  • Hadoop 2.0 新引入的资源管理系统,直接从MRv1演化而来;

    • 核心思想:将MRv1中JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和ApplicationMaster进程实现; -ResourceManager:负责整个集群的资源管理和调度;整个集群只有一个;

    • ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等;一个应用程序对应一个ApplicationMaster;

  • YARN的引入,是的多个计算框架可运行在一个集群中

    • 每个应用程序对应一个ApplicationMaster;

    • 目前多个计算框架可以运行在YARN上,比如MapReduce、Spark、Storm等。

MapReduce On YARN

  • 运行在YARN之上的MapReduce称为MRv2;

  • 将MapReduce作业直接运行在YARN上,而不是运行在由JobTracker和TaskTracker构建的MRv1系统中;

  • 在Hadoop2.0中并不存在JobTracker和TaskTracker;

MRv2的模块基本功能:

  • YARN:负责资源管理和调度;

  • MRAppMaster:负责一个应用程序/作业的任务切分、任务调度、任务监控和容错;

  • Map/Reduce Task:任务驱动引擎,与MRv1一致;

  • 每个应用程序/作业(MapReduce作业)对应一个MRAppMaster

    • 单个应用程序/作业运行失败,不会影响其他应用程序/作业,由YARN重新启动;

    • 任务失败后,MRAppMaster重新申请资源;

    • 负责应用程序/作业相关的事务,包括将从YARN分配得到的资源二次分配给内部的任务、任务切分、任务健康和容错等;

感谢各位的阅读!关于“Hadoop1.x和Hadoop2.x有什么区别”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

返回云计算教程...