暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Hadoop3.x介绍

小甜菜Pro 2022-05-19
684


  简介


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内核进行了多项重大改进,主要包括通用性的改进、HDFS的改进、MapReduce的改进、YARN资源的改进等:

通用性的改进
  • 对Hadoop内核精简,其中包括去除过期的API和实现,将默认组件实现替换成最高效的实现。

  • Classpath isolation防止不同版本jar包冲突

  • Shell脚本重构,启动脚本和Hadoop2.x不同,Hadoop3.x对Hadoop的管理脚本进行了重构,修复了大量的bug增加了新特性,并且增加了动态命令。


HDFS的改进

  • HDFS纠删码,在Hadoop3.X中,HDFS实现了Erasure Coding这个新功能,Erasure coding纠删码技术简称EC,是一种数据保护技术。最早用于通信行业中数据传输中的数据恢复,是一种编码容错技术。HDFS支持数据的擦除编码,这使得HDFS在不降低可靠性的前提下,能够节省一半存储空间。

  • 支持多个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 任务可以根据这些资源的可用性进行调度。[1]


  与Hadoop 2.x的比较

  1. Java的最小支持版本:Hadoop 2.x - Java 7;Hadoop 3.x - Java 8。

  2. 容错性:Hadoop 2.x - 通过版本复制提高容错性;Hadoop 3.x - 通过擦除编码技术实现容错性。

  3. 数据负载均衡:Hadoop 2.x - 对于数据,采用hdfs均衡器做负载均衡;Hadoop 3.x - 对于数据,采用数据内节点均衡器做负载均衡,通过HDFS磁盘均衡器CLI调用。

  4. 存储方案:Hadoop 2.x - 3副本存储方案;Hadoop 3.x - 在HDFS上支持擦除编码技术(Erasure Coding,简称EC),解决副本复制和副本存储带来的空间和资源的消耗,以EC代替副本,提供和副本存储相同的容错能力,并且存储开销不大于单副本开销的50%。

  5. 存储开销:Hadoop 2.x - 2倍额外的存储空间开销;Hadoop 3.x - 0.5倍额外的存储空间开销。

  6. 存储开销实例:Hadoop 2.x - 如果有6个block块,那么基于副本方案,将会有18个块空间被使用;Hadoop 3.x - 如果有6个block块,那么基于EC技术方案,将会有9个块空间被使用,6个数据块和3个奇偶校验块。

  7. YARN时间线服务:Hadoop 2.x - 使用老的时间线服务,有性能扩展问题;Hadoop 3.x - 升级时间线服务v2,提高了稳定性和扩展性。

  8. 默认的端口区间:Hadoop 2.x - 在hadoop2.x中,一些默认端口是linux的临时端口范围,当服务启动时,可能无法绑定造成启动失败;Hadoop 3.x - 3.x中,这些端口从临时端口范围中移出来了。

  9. 工具:Hadoop 2.x - 使用Hive Pig Tez Hama Giraph和其他hadoop工具;Hadoop 3.x - Hive Pig Tez Hama Giraph和其他hadoop工具都可以使用

  10. 兼容的文件系统:Hadoop 2.x - HDFS,FTP文件系统(将所有数据存储在远端FTP服务器上),亚马逊S3,微软Azure WASB文件系统;Hadoop 3.x - 以上及微软Azure数据湖文件系统。

  11. MR API兼容性:Hadoop 2.x - Hadoop 1.x应用程序可以兼容2.x;Hadoop 3.x - Hadoop 1.x应用程序可以兼容到3.x中。

  12. 插槽、容器:Hadoop 2.x - Hadoop 1任务运行在slot的概念中,hadoop 2任务运行在容器container概念中;Hadoop 3.x - Hadoop 3任务运行在容器概念中。

  13. 单点故障:Hadoop 2.x - 当namenode下线时,standby namenode自动上线提供服务,支持namednode单点故障恢复;Hadoop 3.x - 支持namednode单点故障恢复。

  14. HDFS联盟:Hadoop 2.x - Hadoop 1中,仅一个NameNode管理多个namespace命名空间,Hadoop 2中,多个NameNode管理多个命名空间;Hadoop 3.x - Hadoop 3中,多个NameNode管理多个命名空间。

  15. 扩展性:Hadoop 2.x - 在Hadoop 2中,单个集群可以扩展到10000个节点;Hadoop 3.x - 扩展性更好,单个集群可以扩展到大于10000个节点。

  16. HDFS快照:Hadoop 2.x - Hadoop 2添加了快照的支持,当用户错误时提供了数据的灾难恢复和保护机制;Hadoop 3.x - 也提供了快照支持[2]。


—— END ——


点击下方关注本公众号

参考文献:

[1] https://zhuanlan.zhihu.com/p/367318462

[2] https://blog.csdn.net/chenzuoli/article/details/123713129

声明:
1.转载本公众号中的文章请注明原文链接和作者,否则产生的任何版权纠纷均与本公众号无关。
2.本文中部分文章与图片均来自公开网络,仅供学习交流使用,不会用于任何商业用途,如果出处标注有误或侵犯到原著作者权益,请向邮箱xiaotiancaipro@163.com联系删除,谢谢。
文章转载自小甜菜Pro,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论