hadoop1和hadoop2对比

1、结构
hadoop1:HDFS、MapReduce
hadoop2:HDFS、MapReduce、Yarn

2、作业调度流程和作业调度器
hadoop1:
client(多个) —— submitJob—— JobTracker(对应nameNode,单个) ——assignTask——TaskScheduler(维护taskList,单个,为JobTracker的一部分)——initJob——TaskTracker(对应nodeManager,多个,维护task,向JobTracker汇报Task和资源情况,JobTracker会根据这些信息再次分发Task)

缺点:JobTracker完成太多的任务,导致资源开销非常大,如果任务太多,会导致CPU繁忙、内存溢出等情况,而且JobTracker是单点的,不能高可用

hadoop2:
client(多个)——submitJob——ResourceManager(对应nameNode,可配置HA高可用)———initJob——AppMaster(对应nodeManager,维护本次任务需要的资源和TaskList,向resourceManager汇报Job的信息和资源信息)——划分container(对应nodeManager,对资源进行隔离,防止任务滥用资源)

优点:任务分散在各个nodeManager节点上,ResourceManager的资源开销不会过大,而且ResourceManager可配置HA高可用,不容易出现单点故障

3、高可用
hadoop1:
NameNode不可配置高可用,SecondaryNameNode只能是作为NameNode备份,并协助NameNode工作(合并 editlogs并拷贝到NameNode),如果NameNode挂掉了,SecondaryNameNode并不能作为NameNode节点启动,也就是说,集群会停止工作。作为备份,NameNode节点可以通过SecondaryNameNode恢复数据。

JobTracker不可配置高可用,如果JobTrack挂掉了,那任务就不能被继续执行,集群会停止工作。

hadoop2:
NameNode可以配置高可用,会形成两个NameNode,一个是Active状态,另一个standby状态。如果Active节点挂机,那standby的状态会转换成Active状态。它们状态通过ZooKeeper、ZKFailoverController、HealthMonitor共同维护。editlogs通过JournalNode(和zookeeper一样,作为独立的进程,是高可用集群,消耗资源低)写入到本地磁盘,实现元数据共享。(还有别的数据共享方式)

ResourceManager可配置高可用,会形成两个ResourceManager,一个是Active状态,另一个standby状态。如果Active节点挂机,那standby的状态会转换成Active状态。状态通过ZooKeeper集群维护。

总结:
hadoop1的NameNode和JobTracker容易出现单点故障从而导致集群不可用,JobTracker在任务比较多的时候容易出现JobTracker节点(也就是nameNode节点)CPU繁忙和OOM。而Hadoop2的NameNode和ResourceManager都可以配置HA高可用,使得集群高可用,ResourceManager更是不会出现像JobTracker一样资源消耗大,从而使集群拥有更好的扩展性和计算能力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值