前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop1和Hadoop2的区别

Hadoop1和Hadoop2的区别

作者头像
我脱下短袖
发布2019-12-23 12:23:48
9940
发布2019-12-23 12:23:48
举报
文章被收录于专栏:算法无遗策

Hadoop1和Hadoop2的区别主要在于下方面:

Namenode

JobTracker 和 YARN

HDFS联合

HDFS快照

序列化方式

支持SSD感知

HDFS IO方面的改进

支持更多的操作系统

Namenode

NameNode其实是Hadoop的一个目录服务,它包含着整个集群存储的文件的元数据。

早期发行的Hadoop1版本将所有HDFS目录和文件的元数据存储到一个NameNode单点。整个集群的数据状态取决于这个单点的成败。随后的版本添加了一个secondary NameNode节点,作为冷备份的从NameNode节点。Secondary NameNode节点周期性地将写日志(edit log)和NameNode的映象文件(image file)合并,这样做有两个优点:首先,由于主NameNode节点在启动的时候不需要完全合并写日志和映象文件,因此主NameNode节点的启动时间缩短了;其次,从NameNode节点复制NameNode的所有信息,这样当NameNode节点出现不可恢复的故障时,数据丢失会降到最低。但是,secondary NameNode并不是一个热备份节点,这意味着故障切换时间和恢复时间较长,且集群可用性会受到影响。

Hadoop2做出了改进,有了NameNode的热备节点。当主NameNode节点故障了,从NameNode就能够在自动转变成主NameNode,这就意味着hadoop集群可以提供无数据丢失且不间断的NameNode服务,并且自动故障切换也比较容易实现。

热备份的关键在于维护它的数据尽可能与主NameNode节点保持一致,可以通过读取主NameNode的写日志文件并在备份节点上执行来实现,并且延时也是非常低的。写日志文件的共享可以使用以下两种方法来实现:

在主NameNode和从NameNode节点间使用共享的网络文件系统(Network File System,NFS)存储目录:主NameNode往共享目录中写入日志,而从NameNode监听这个共享目录的变更消息,然后拉取这些变更。

使一组JournalNode(quorum of Journal Nodes):主NameNode将写日志发送到部分JournalNode以记录信息,而从NameNode持续监听这些JournalNode,从而更新和同步主NameNode的状态。

JobTracker 和 YARN

Hadoop1采用集中式作业流控制,然而集中式系统由于其负载的单点问题,很难实现扩展。一旦JobTracker(作业跟踪器)出现故障,系统中所有的作业都必须重新启动,这对整个集中式组件造成了极大压力。由于计算模型是和集群的资源紧密联系的,所以只能支持MapReduce一种计算模型。这种紧密的耦合导致开发者强行适配其他的计算模型,从而出现了与MapReduce设计意图相悖的使用方式。按照这种模式,Hadoop很难与其他类型的集群进行集成。

Hadoop2引入了YARN。YARN的主要设计目标是将大家比较关注的资源管理(resource management)和应用执行(application execution)之间的耦合隔离,然后其他的应用模式就可以在Hadoop集群上执行了。增强不同计算模型和各种应用之间的交互,使得集群的资源得到高效的利用,同时也能更好地与企业中已经存在的计算结构集成在一起。

HDFS联合

Hadoop1中,HDFS和块管理层紧紧地耦合在一起,难以集成其他的存储服务。

在Hadoop2实现了一个更为通用的存储模型。一个通用的块存储(block storage)层已经从文件系统层隔离出来。这种隔离使得其他存储服务有机会被集成到Hadoop集群中。这种通用存储模型使得HDFS联合(HDFS Federation)功能得以实现。这个功能允许多个HDFS命名空间使用相同的底层存储设备,且联合的NameNode节点提供了文件系统层面的隔离功能。在第10章中,我们会详细介绍这个特性。

HDFS快照

Haddoop2 引入了快照(snapshot)。快照是文件系统的整体或部分目录在某个时间点的只读镜像(image),通常是为了以下三个原因:

防止用户的错误操作导致的数据损坏或丢失、备份、容灾

快照仅在NameNode上实现,它不会涉及数据从一个数据节点复制到另一个数据节点,而仅仅是复制了块列表以及文件的大小。生成一个快照的操作几乎是瞬间完成的,它不会影响NameNode节点的性能。

序列化方式

Hadoop1的RPC通信协议是使用Java的Writables序列化实现的,但在Hadoop2中是基于Protocol Buffers实现的。这个改进不仅很容易保持向后兼容,而且帮助集群中的不同组件实现了滚动升级(rolling the upgrades)。另外,RPC也允许在客户端实现重试功能。

支持SSD感知

Hadoop1是不感知存储设备的类型的,这意味着机械硬盘和SSD(固态硬盘)被一样对待。用户无法对数据的布局做任何干预。2014年发布的Hadoop2版本能够识别存储设备的类型,并且应用程序可以获取到这些信息。这样,应用程序就可以通过这些信息来优化它们的数据存取和布局策略。

HDFS IO方面的改进

Hadoop1是通过HDFS客户端访问文件系统的。Hadoop2开始支持NFSv3,促进了NFS网关组件的诞生。现在,HDFS可以挂载(mount)到用户本地兼容的文件系统上,他们可以直接往HDFS下载或上传文件。往已有的文件追加内容是可以的,但是随机写(random write)是不支持的。同时,Hadoop2的I/O也进行了大量的改进。例如,在Hadoop1中,当客户端运行在某个数据节点上时,它需要通过TCP来读取本地数据。但是,有了本地快捷读取(short-circuit local reads),客户端就可以直接读取本地的数据;通过特定的接口还可以实现零复制(zero-copy)数据读取;读或写数据的CRC校验码计算方法也进行了优化。

支持更多的操作系统

Hadoop 2.X天然支持微软的Windows系统。这个转变使得微软的Windows服务器有极好的机会进入大数据处理领域。当然,部分原因得归功于Hadoop开发使用的Java编程语言有很好的可移植性,但更重要的原因在于Hadoop对计算和存储的通用性的增强,使其能支持包括Windows在内的系统。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法无遗策 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Namenode
  • JobTracker 和 YARN
  • HDFS联合
  • HDFS快照
  • 序列化方式
  • 支持SSD感知
  • HDFS IO方面的改进
  • 支持更多的操作系统
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档