目前,hadoop官网提供的最新版本是2021年1月9日发布的3.2.2版本。本文主要讨论1.x、2.x和3.x的主要区别。
1.hadoop 1.x
(1)基本组件:
hdfs:数据存储
mapreduce:分析计算和资源调度
common:辅助工具
(2)HDFS存储机制


(3)MapReduce工作机制:


client,用来提交MapReduce作业。
jobtracker,用来协调作业的运行。
tasktracker,用来处理作业划分后的任务。
HDFS,用来在其它实体间共享作业文件。
(4)问题


单NameNode设计带来诸多问题:单点故障、内存受限,制约集群扩展性和缺乏隔离机制等;此外,JobTracker兼顾资源管理和任务调度,负担过重,容易造成单点故障。
2.hadoop 2.x
(1)基本组件
hdfs:数据存储
mapreduce:分析计算
yarn:资源调度
common:辅助工具
(2)MapReduce工作机制


(3)Yarn资源调度机制


ResourceManager主要作用:处理客户端请求;监控nodemanager;启动或监控ApplicationMaster;资源的分配和调度
NodeManager主要作用:管理单个节点上的资源;处理来自ResourceManager的命令;处理来自MRAppMaster的命令
ApplicationMaster的作用:负责数据的切分;为应用程序申请资源并分配给内部的任务;任务的监控与容错
Container:Yarn中资源的抽象,封装了多维度的资源,如CPU、磁盘、网络带宽等
(4)Hadoop HA
HDFS-HA(解决NameNode单点故障问题):NameNode HA with QJM


Yarn-HA(解决ResourceManager单点故障问题):


(5)联邦机制
单Active NN的架构使得HDFS在集群扩展性和性能上都有潜在的问题,当集群大到一定程度后,NN进程使用的内存可能会达到上百G,NN成为了性能的瓶颈。为了解决这个问题,Hadoop 2.x提供了HDFS Federation, 示意图如下:


a.多个NN共用一个集群里的存储资源,每个NN都可以单独对外提供服务
b.每个NN都会定义一个存储池,有单独的id,每个DN都为所有存储池提供存储
c.DN会按照存储池id向其对应的NN汇报块信息,同时,DN会向所有NN汇报本地存储可用资源情况
d.如果需要在客户端方便的访问若干个NN上的资源,可以使用客户端挂载表,把不同的目录映射到不同的NN,但NN上必须存在相应的目录
3.hadoop 3.x
hadoop 3.x在2.x版本的基础上,做了如下变动:
(1)最低Java版本从7升级到8
(2)引入纠删码(Erasure Coding)
主要解决数据量大到一定程度磁盘空间存储能力不足的问题。
纠删码能勾在不到50%数据冗余的情况下提供和3副本相同的容错能力,因此,使用纠删码作为副本机制的改进是自然而然,也是未来的趋势.
(3)重写了Shell脚本
重写了Shell脚本,修改了之前版本长期存在的一些错误,并提供了一些新功能,在尽可能保证兼容性的前提下,一些新变化仍然可能导致之前的安装出现问题。
例如:
a.所有Hadoop Shell脚本子系统现在都会执行hadoop-env.sh这个脚本,它允许所有环节变量位于一个位置;
b.守护进程已通过*-daemon.sh选项从*-daemon.sh移动到了bin命令中,在Hadoop3中,我们可以简单的使用守护进程来启动、停止对应的Hadoop系统进程;
(4)引入了新的API依赖
Hadoop3.0引入了提供了hadoop-client-api 和hadoop-client-runtime依赖将下级依赖隐藏起来,一定程度上来解决依赖冲突的问题
(5)MapReduce任务的本地化优化
MapReduce引入了一个NativeMapOutputCollector的本地化(C/C++)实现,对于shuffle密集的任务,可能提高30%或者更高的性能
(6)支持超过两个NN
(7)许多服务的默认端口改变了
Hadoop3.x之前,多个Hadoop服务的默认端口位于Linux临时端口范围(63768~61000). 这意味着在启动时,由于与另一个应用程序冲突,服务有时无法绑定到端口.
在Hadoop3.x中,这些可能冲突的端口已移出临时范围,受影响的有NameNode ,
SecondaryNamenode , DataNode 和 KMS
(8)添加对Microsoft Azure Data Lake 和 阿里云对象存储系统的支持
(9)DataNode内部实现Balancer
之前的DataNode Balancer只能实现DN之间的数据平衡,Hadoop3.x实现了内部的数据平衡。
(10)重做的后台和任务堆内存管理
已实现根据服务器自动配置堆内存,HADOOP_HEAPSIZE变量失效。简化MapTask 和ReduceTask的堆内存配置,现已不必同时在配置中和Java启动选项中指定堆内存大小,旧有配置不会受到影响。
(11)HDFS实现服务器级别的Federation分流
对于HDFS Federation, 添加了一个对统一命名空间的RPC路由层 。 和原来的HDFS Federation没有变化,只是目前挂在管理不必在客户端完成,而是放在的服务器,从而简化了HDFS Federation访问。
(12)Yarn的时间线服务升级到V2
Yarn的时间线服务是MRJobHistory的升级版,提供了在Yarn上运行第三方程序的历史支持,该服务在Hadoop3.0升级为第二版
(13)容量调度器实现API级别的配置
现在容量调度器可以实现通过REST API来改变配置,从而让管理员可以实现调度器自动配置。
(14)Yarn实现更多种资源类型的管理
Yarn调度器现已可以通过配置实现用户自定义的资源管理。现在Yarn可以根据CPU和内存意外的资源管理其任务队列

Hadoop系列五之版本差别相关推荐

  1. Hadoop系列五:Hadoop之Zookeeper篇

    ZooKeeper安装和运行 Zookeeper是一个高性能.分布式的.开源分布式应用协调服务,具有命名服务.配置管理.同步和组服务等基本功能.Zookeeper服务自身组成一个集群(2n+1个服务允 ...

  2. Hadoop系列 (六):Spark搭建

    文章目录 Hadoop系列文章 Spark简介 Spark搭建 Scala安装 Spark安装 Spark启动 Spark界面 Spark简单使用 Spark Shell PySpark Shell ...

  3. Hadoop系列 (九):Sqoop详细介绍

    文章目录 Hadoop系列文章 Sqoop简介 Sqoop架构 Sqoop数据导入 Sqoop数据导出 Sqoop安装部署 版本介绍 前提环境 下载 安装配置 Sqoop的使用 构建测试数据 将MyS ...

  4. Hadoop系列 (三):HDFS详细介绍

    文章目录 Hadoop系列文章 HDFS简介 HDFS基本概念 分布式文件系统特点 HDFS设计目标 HDFS架构 HDFS应用场景 HDFS三大组件 NameNode SecondaryNameNo ...

  5. 查阅 arXiv 论文新神器,一行代码比较版本差别,Github 新开源!

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:量子位 AI博士笔记系列推荐 周志华<机器学习>手推 ...

  6. hadoop系列三:mapreduce的使用(一)

    一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6.4 上一篇:hadoop系列二: ...

  7. hadoop系列四:mapreduce的使用(二)

    转载请在页首明显处注明作者与出处 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6 ...

  8. JAVA面试常考系列五

    转载自 JAVA面试常考系列五 题目一 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么? 吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用程序 ...

  9. Hadoop 系列之 1.0 和2.0 架构

    Hadoop 系列之 1.0 和2.0 架构 自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背景自己也很喜欢.趁着还没有入职,给大家争取先把 Hadoop ...

  10. Hadoop 基础系列一Hadoop 系列之 1.0 和2.0 架构

    精选30+云产品,助力企业轻松上云!>>> Hadoop 系列之 1.0 和2.0 架构 自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背 ...

最新文章

  1. SH 脚本注意事项之 IF 判断
  2. 自定义MIME类型支持FLV的相关设置
  3. 00截断上传绕过_关于上传中的00截断分析
  4. 昨天添加的clustrMaps,忘了截屏,今天补上,就作为我在园子里的奠基。
  5. react-native热更新插件react-native-code-push
  6. 贪心算法(各种贪心题目)
  7. HTML/HTML5/CSS/CSS3教程速查手册地址以及如何快速直到webkit的用法
  8. (转载)mysql书籍
  9. c语言通过定义变量实现对,C语言中定义变量“#X”,X##, ##X 和“##X##”用意
  10. java构建编译区别_构建与编译(Java)
  11. Android 全局替换项目默认字体
  12. python+sklearn实现随机森林模型
  13. 在Tiny6410烧写linux内核文件和文件系统
  14. 大厂HR的新对手是Excel
  15. 图解设计模式,看完秒懂!!!
  16. 中国诗歌艺术 - MOOC课程总结版
  17. 5.17 图层面板的使用 [原创Ps教程]
  18. 隐形眼镜的评价分析报告
  19. Ubuntu 20.04.1 安装ROS-noetic 遇到的环境设置问题
  20. IE浏览器版本切换解决的问题

热门文章

  1. html5播放 h.264裸流,[转载]成功在MP4封装的H264视频中提取能播放的裸流
  2. dx11 Shaders for maya
  3. 卡巴斯基 (Kaspersky) V7.0.0.43 NCT BATE 汉化免激活特别版(附2009-12-23Key)
  4. 举例说明计算机在现实应用中的作用,【举例说明多媒体技术的应用】_论多媒体技术在日常工作生活中的应用...
  5. idea中使用eclipse快捷键的常用快捷键
  6. 综合项目之闪讯破解(六)之 如何解决程序/C++Dll的兼容性问题
  7. google服务框架 闪退_没Google服务闪退?教你解决手游谷歌服务问题
  8. Java Web程序设计——JSP技术(一)
  9. ECShop 二次开发常用网站
  10. SQL Server 搭建Northwind详细教程