对Hadoop了解的朋友都知道,Hadoop1.x是Hadoop版本当中的第二代开源版本,主要修复Hadoop0.x版本中的一些问题,随着大数据技术的更新迭代该版本已淘汰。随着Hadoop2.x的出现,该架构发生了重大变化,引入了yarn平台的许多新特性,是目前使用的主流版本。
Hadoop3.x较Hadoop1.x和Hadoop2.x有什么区别呢?为了深入了解Hadoop3.x,我们来详细看看Hadoop3.x。
一、Hadoop3.x简介Hadoop 3.x是基于JDK1.8开发的,较其他两个版本而言,在功能和优化方面发生了很大的变化,其中包括HDFS 可擦除编码、多Namenode支持、MR Native Task优化等。
据Apache hadoop 的最新消息,Hadoop3.x将会调整方案架构,将Mapreduce 基于内存+io+磁盘,共同处理数据。其中,在Hadoop3.x中改变最大的是HDFS,它通过最近Block块进行计算,根据最近计算原则,将本地Block块加入到内存,先计算,然后通过IO,共享内存计算区域,最后快速形成计算结果,其计算速度比Spark快10倍。
二、Hadoop 3.x新特性Hadoop 3.x在功能和性能方面对Hadoop内核进行了多项重大改进,主要包括通用性的改进、HDFS的改进、MapReduce的改进、YARN资源的改进等:
(一)通用性的改进1、对Hadoop内核精简,其中包括去除过期的API和实现,将默认组件实现替换成最高效的实现。
2、Classpath isolation防止不同版本jar包冲突
3、Shell脚本重构,启动脚本和Hadoop2.x不同,Hadoop3.x对Hadoop的管理脚本进行了重构,修复了大量的bug增加了新特性,并且增加了动态命令。
(二)HDFS的改进1、HDFS纠删码
在Hadoop3.X中,HDFS实现了Erasure Coding这个新功能,Erasure coding纠删码技术简称EC,是一种数据保护技术。最早用于通信行业中数据传输中的数据恢复,是一种编码容错技术。HDFS支持数据的擦除编码,这使得HDFS在不降低可靠性的前提下,能够节省一半存储空间。
2、支持多个NameNodes
最初的HDFS NameNode high-availability实现,仅仅提供了一个Active NameNode和一个Standby NameNode,并且通过将编辑日志复制到三个JournalNodes上,这种架构能够容忍系统中的任何一个节点的失败。在实际开发中,一些部署需要更高的容错度,可以通过这个新特性来实现,它允许用户运行多个Standby NameNode。
(三)MapReduce的改进MapReduce任务级本地优化:提高MapReduce的速度,为MapReduce增加了C/C++的map output collector实现(包括Spill,Sort和IFile等),通过作业级别参数调整就可切换到该实现上。对于shuffle密集型应用,其性能可提高约30%。MapReduce内存参数自动推断:在Hadoop 2.0中,为MapReduce作业设置内存参数非常繁琐,一旦设置不合理,则会使得内存资源浪费严重,在Hadoop3.x中避免了这种情况。(四)YARN 资源类型YARN 资源模型(YARN resource model)已被推广为支持用户自定义的可数资源类型(support user-defined countable resource types),它支持 CPU 和内存。比如集群管理员可以定义诸如 GPUs、软件许可证(software licenses)或本地附加存储器(locally-attached storage)之类的资源。YARN 任务可以根据这些资源的可用性进行调度。
Hadoop3.x 对HDFS、MapReduce、YARN等都有较大升级。并且引入了一些重要的功能和优化,包括HDFS 可擦除编码、多Namenode支持、MR Native Task优化、YARN基于cgroup的内存和磁盘IO隔离、YARN container resizing等。想要了解更多,记得关注哦~~