题目
Hadoop1.x、Hadoop2.x 和 3.X 的区别
答案
1)**Hadoop 1.x**
- MapReduce既负责Hadoop资源管理,又负责Hadoop的数据处理,负荷较大。
- HDFS 主要负责 Hadoop 的分布式文件存储。
2)**Hadoop2.x**
- 新增 Yarn 负责资源管理,MapReduce 只负责 Hadoop 的数据处理
- HDFS 负责 Hadoop 中的分布式文件存储
3)**Hadoop 3.x**
- Hadoop Common
- JDK 升级:Hadoop 2.x版本支持的最低JDK版本为 7。Hadoop 3.x 版本支持的最低 JDK 版本为 8
- 重构 Shell 脚本:Hadoop3.x 中的 Shell 脚本被重写,修补了许多长期存在的 Bug,提高了 Hadoop 使用时的稳定性
- 精简内核:Hadoop 3.x 剔除了过期的 API,将默认组件的实现替换成更高效的实现。
- 类路径隔离:Hadoop 3.x 提供了类路径隔离机制,防止不同版本的jar包发生冲突。
- MapReduce
- 任务本地优化:Hadoop 3.x中,为MapReduce增加了NativelMapOutputCollector组件来处理Map Task输出的键值对,包括排序、溢写和IFile序列化,对于Shuffle比较密集型的任务,可以使MapTask的执行速度性能提高2~3倍。
- 内存参数自动推断:在Hadoop 2.x中,运行MapReduce程序时设置内存参数的过程非常繁琐。而Hadoop 3.x中运行MapReduce程序时,可自动进行内存的调整。
- YARN
- YARN Timeline Service V2:YARN Timeline Service V2主要对Hadoop 2.x的YARN进行了两处优化,第一使用了更具有伸缩性的分布式体系架构,以及可扩展的后端存储,从而将数据的写入和读取进行了分离;第二采用了一组收集器负责将数据写入到后端进行存储。
- 增加 YARN 资源类型:Hadoop 3.x中,YARN资源模型已被通用化,支持用户定义CPU和内存以外的可计数资源类型。
- HDFS
- 支持多个 NameNode:Hadoop 2.x 只允许HDFS中存在一个Active(激活)状态的NameNode和一个Standby(备用)状态的NameNode。Hadoop 3.x版本允许HDFS中存在一个Active状态的NameNode和多个Standby状态的NameNode,有效提高了HDFS的可靠性。
- 引入 Erasure Coding(纠删码):Hadoop 3.x 引入了Erasure Coding,在确保 HDFS 存储数据可靠的前提下,可以节省50%的存储空间。
