Hadoop 3.x版本是Hadoop版本中的下一个重要里程碑。关于Hadoop 3.x在Hadoop 2.x基础上增强了哪些功能,很多人都在考虑这个问题。因此,在本文中,我们将介绍Hadoop3中的新增功能以及它与旧版本的区别。
Hadoop 3的新增功能是什么?探索独特的Hadoop 3功能
Hadoop 3的新增功能?
以下是Hadoop3中进行的10项更改,这些更改使其独特且快速。看看Hadoop 3.x的新增功能:
1、Hadoop3.0支持的最低Java版本是JDK 8.0
他们已经使用Java 8运行时版本编译了所有Hadoop jar文件。用户现在必须安装Java8才能使用Hadoop3.0。具有JDK7的用户必须将其升级到JDK8。
2、HDFS支持擦除编码
Hadoop3.x使用擦除编码来提供容错能力。Hadoop2.x使用复制技术来提供相同级别的容错能力。让我们探讨两者之间的区别。
首先,我们将研究复制。让我们采用默认的复制因子3。在这种情况下,对于6个块,我们必须总共存储6*3,即18个块。对于每个复制的块,存储开销为100%。因此,在我们的情况下,存储开销将为200%。
让我们看看擦除编码中会发生什么。对于6个块,将计算3个奇偶校验块。我们称此过程为编码。现在,每当一个块丢失或损坏时,就会从剩余的块和奇偶校验块中进行计算。我们称此过程为解码。在这种情况下,我们总共存储了9个块,其中6个块占了50%的存储开销。因此,我们可以用更少的存储空间获得相同数量的容错能力。但是,在CPU和网络方面始终存在编码和解码过程的开销。因此,它用于很少访问的数据。
3、YARN时间轴服务v.2
Yarn时间线服务是Hadoop3中的新增功能。时间线服务器负责存储和检索应用程序的当前.和历史信息。此信息有两种类型:
已完成申请的一般信息
- 队列名称
- 用户信息
- 每个应用程序的尝试次数
- 有关每次尝试运行的容器的信息
- 由ResourceManager存储的有关已完成应用程序的通用数据,可通过Web UI访问。
每个框架有关正在运行和已完成的应用程序的信息
- 地图任务数
- 减少任务数
- Counters
- 应用程序开发人员通过Timeline客户端发布到TimeLine Server的信息
REST API会查询此数据,以按应用程序或框架特定的UI进行呈现。
TimeLine服务器v.2解决了v.1版中的主要缺陷。问题之一是可伸缩性。TimeLine服 务器v.1具有读取器/写入器和存储的单个实例。它不能扩展到超过几个节点。而在版本2中,时间轴服务器具有分布式写入器体系结构和可扩展的后端存储。它将数据的收集(写入)与数据的提供(读取)分开。此外,每个YARN应用程序使用一个收集器。它具有一个作为独立实例的读取器,该读取器通过RESTAPI服务器查询请求。时间轴服务器v.2使用HBase进行存储,可以将其扩展到巨大的大小,从而为读取和写入提供了良好的响应时间。
4、支持机会容器和分布式计划
Hadoop 3引入了执行类型的概念。如果目前没有可用资源,则这些容器将在NodeManager中等待。机会容器的优先级低于保证容器。如果假设有保证的容器到达机会容器执行的中间,则随后将被抢占。这恰好为保证容器腾出了空间。
5、支持两个以上的NameNode
到目前为止,Hadoop支持单个活动NameNode和单个备用NameNode。将编辑复制到三个日志节点后,此体系结构允许一个NameNode发生故障。
但是某些情况需要高度的容错能力。通过配置五个日记帐节点,我们可以拥有三NameNodes的系统。这样的系统将容忍两个NameNode的故障。因此,通过引入对两个以上NameNode的支持,Hadoop3.0使系统具有更高的可用性。
6、多个服务更改的默认端口
在Hadoop3.0之前,许多Hadoop服务的默认端口在Linux临时端口范围(32768一61000)中。因此,很多时候这些服务在启动时将无法绑定。因为它们会与其他应用程序冲突。.他们已将这些服务的默认端口移出了临时范围。服务包括NameNode, Secondary NameNode,DataNode和KeyManagementServer。
7、Intra一DataNode平衡器
DataNode管理许多磁盘。在写操作期间,这些磁盘被均匀填充。但是,当我们添加或删除磁盘时,会导致严重的偏差。在HDFS平衡器地址间数据偏斜,而不是帧内节点。
节点内平衡器解决了这种情况。CLI 一 hdfs diskbalancer调用此平衡器。
8、重做守护程序和任务堆管理
守护程序的堆管理和Map一Reduce任务有很多更改:
有新的方法可以配置守护程序堆大小。系统根据主机的内存自动调整。HADOOP_ HEAPSIZE变 量不再使用。取而代之的是我们有HEAP_ MAX_ SIZE和HEAP_ _MIN_ SIZE变量。此外,他们还删除了内部变量JAVA_ HEAP_ SIZE。他们还删除了默认堆大小,该默认堆大小允许JVM自动调整。全局和守护程序堆大小的所有变量都支持单位。如果该变量只是一个数字,则它期望大小以兆字节为单位。另外,如果要启用旧的默认值,请在hadoop一env.sh中配置HADOOP_ HEAPSIZE_ MAX。
如果mapreduce.map/ reduce.memory.mb的值设置为默认值一1。然后,它将自动从为mapreduce.map/reduce.java.opts指定的Xmx变量中推断出值。Xmx就是堆大小值系统属性。这种反向也是可能的。假设未为mapreduce.map/reduce.java.opts键指定Xmx值。系统从mapredcue.map/reduce.memory.mb键获得其值。如果我们不指定任何值,则默认值为1024MB。对于明确指定此值的配置和作业代码,将不受影响。
9、纱线资源模型的概括
他们已经对Yarn资源模型进行了概括,以包含除CPU和内存以外的用户定义资源。这些用户定义的资源可以是软件许可证,GPU或本地连接的存储。纱线任务是根据这些资源安排的。
我们可以扩展Yarn资源模型以包含任意“可数”资源。可计数的资源是由容器消耗的资源,系统在完成后将其释放。CPU和内存都是可计数的资源。同样,GPU或图形处理单元以及软件许可证也是可数的资源。默认情况下,Yarn跟踪每个节点,应用程序和队列的CPU和内存。纱线可以扩展以跟踪其他用户定义的可数资源,例如GPU和软件许可证。GPU与容器的集成增强了数据科学和AI用例的性能。
10、S3A客户端的一致性和元数据缓存
现在的S3A客户端具有以快速且一致的方式存储文件和目录的元数据的功能。它通过使用.DynamoDB表执行此操作。我们可以将此新功能称为S3GUARD。它缓存目录信息,以便S3Aclient可以更快地查找。此外,它还可以恢复S3列表操作和对象状态之间的不一致。使用S3GUARD创建文件后,我们总能找到它。S3GUARD是实验性的,我们可以认为它是不稳定的。
我们探索了Hadoop 3的许多新功能,这些功能使其变得独特且受欢迎。