题目
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%的存储空间。