【Hadoop】Hadoop 3.x 新特性总览

news2024/11/18 1:45:56

Hadoop 3.x 新特性剖析系列1

    • 1. 概述
    • 2. 内容
      • 2.1 JDK
      • 2.2 EC技术
      • 2.3 YARN的时间线V.2服务
        • 2.3.1 伸缩性
        • 2.3.2 可用性
        • 2.3.3 架构体系
      • 2.4 优化Hadoop Shell脚本
      • 2.5 重构Hadoop Client Jar包
      • 2.6 支持等待容器和分布式调度
      • 2.7 支持多个NameNode节点
      • 2.8 默认的服务端口被修改
      • 2.9 支持文件系统连接器
      • 2.10 DataNode内部负载均衡

1. 概述

从功能上来说,Hadoop3比Hadoop2有些功能得到了增强,具体增加了哪些,后面再讲。首先,我们来看看Hadoop3主要带来了哪些变化:

  • JDK:在Hadoop2时,可以使用JDK7,但是在Hadoop3中,最低版本要求是JDK8,所以低于JDK8的版本需要对JDK进行升级,方可安装使用Hadoop3
  • EC技术:Erasure Encoding 简称EC,是Hadoop3给HDFS拓展的一种新特性,用来解决存储空间文件。EC技术既可以防止数据丢失,又能解决HDFS存储空间翻倍的问题
  • YARN:提供YARN的时间轴服务V.2,以便用户和开发人员可以对其进行测试,并提供反馈意见,使其成为YARN Timeline Service v.1的替代品。
  • 优化Hadoop Shell脚本
  • 重构Hadoop Client Jar包
  • 支持随机Container
  • 支持多个NameNode
  • 部分默认服务端口被改变
  • 支持文件系统连接器
  • DataNode内部添加了负载均衡

2. 内容

2.1 JDK

在Hadoop 3中,所有的Hadoop JAR包编译的环境都是基于Java8来完成的,所有如果仍然使用的是Java 7或者更低的版本,你可能需要升级到Java 8才能正常的运行Hadoop3。如下图所示:
在这里插入图片描述

2.2 EC技术

首先,我们先来了解一下什么是Erasure Encoding。如下图所示:

在这里插入图片描述

一般来说,在存储系统中,EC技术主要用于廉价磁盘冗余阵列,即RAID。如上图,RAID通过Stripping实现EC技术,其中逻辑顺序数据(比如:文件)被划分成更小的单元(比如:位、字节或者是块),并将连续单元存储在不同的磁盘上。

然后,对原始数据单元的每个Stripe,计算并存储一定数量的奇偶校验单位。这个过程称之为编码,通过基于有效数据单元和奇偶校验单元的解码计算,可以恢复任意Stripe单元的错误。当我们想到了擦除编码的时候,我们可以先来了解一下在Hadoop2中复制的早期场景。如下图所示:
在这里插入图片描述

HDFS默认情况下,它的备份系数是3,一个原始数据块和其他2个副本。其中2个副本所需要的存储开销各站100%,这样使得200%的存储开销,会消耗其他资源,比如网络带宽。然而,在正常操作中很少访问具有低IO活动的冷数据集的副本,但是仍然消耗与原始数据集相同的资源量。

对于EC技术,即擦除编码存储数据和提供容错空间较小的开销相比,HDFS复制,EC技术可以代替复制,这将提供相同的容错机制,同时还减少了存储开销。如下图所示:

在这里插入图片描述
  EC和HDFS的整合可以保持与提供存储效率相同的容错。例如,一个副本系数为3,要复制文件的6个块,需要消耗6*3=18个块的磁盘空间。但是,使用EC技术(6个数据块,3个奇偶校验块)来部署,它只需要消耗磁盘空间的9个块(6个数据块+3个奇偶校验块)。这些与原先的存储空间相比较,节省了50%的存储开销。

由于擦除编码需要在执行远程读取时,对数据重建带来额外的开销,因此他通常用于存储不太频繁访问的数据。在部署EC之前,用户应该考虑EC的所有开销,比如存储、网络、CPU等。

2.3 YARN的时间线V.2服务

Hadoop引入YARN Timeline Service v.2是为了解决两个主要问题:

  • 提高时间线服务的可伸缩性和可靠性;
  • 通过引入流和聚合来增强可用性

下面首先,我们来剖析一下它伸缩性。

2.3.1 伸缩性

YARN V1仅限于读写单个实例,不能很好的扩展到小集群之外。YARN V2使用了更具有伸缩性的分布式体系架构和可扩展的后端存储,它将数据的写入与数据的读取进行了分离。并使用分布式收集器,本质上是每个YARN应用的收集器。读则是独立的实例,专门通过REST API服务来查询

2.3.2 可用性

对于可用性的改进,在很多情况下,用户对流或者YARN应用的逻辑组的信息比较感兴趣。启动一组或者一系列的YARN应用程序来完成逻辑应用是很常见的。如下图所示:
在这里插入图片描述

2.3.3 架构体系

YARN时间线服务V2采用了一组收集器写数据到后端进行存储。收集器被分配并与它们专用的应用程序主机进行协作,如下图所示,属于该应用程序的所有数据都被发送到应用程序时间轴的收集器中,但是资源管理器时间轴收集器除外。
在这里插入图片描述
对于给定的应用程序,应用程序可以将数据写入同一时间轴收集器中。此外,为应用程序运行容器的其他节点的节点管理器,还会向运行应用程序主节点的时间轴收集器写入数据。资源管理器还维护自己的时间手机线收集器,它只发布YARN的通用生命周期事件,以保持其写入量合理。时间的读取器是单独的守护进程从收集器中分离出来的,它旨在服务于REST API查询操作。

2.4 优化Hadoop Shell脚本

Hadoop Shell脚本已经被重写,用来修复已知的BUG,解决兼容性问题和一些现有安装的更改。它还包含了一些新的特性,内容如下所示:

所有Hadoop Shell脚本子系统现在都会执行hadoop-env.sh这个脚本,它允许所有环节变量位于一个位置;
守护进程已通过*-daemon.sh选项从*-daemon.sh移动到了bin命令中,在Hadoop3中,我们可以简单的使用守护进程来启动、停止对应的Hadoop系统进程;
触发SSH连接操作现在可以在安装时使用PDSH;
${HADOOP_CONF_DIR}现在可以任意配置到任何地方;
脚本现在测试并报告守护进程启动时日志和进程ID的各种状态;

2.5 重构Hadoop Client Jar包

Hadoop2 中可用的Hadoop客户端将Hadoop的传递依赖性拉到Hadoop应用程序的类路径上。如果这些传递依赖项的版本与应用程序使用的版本发送冲突,这可能会产生问题。

因此,在Hadoop3中有新的Hadoop客户端API和Hadoop客户端运行时工件,它们将Hadoop的依赖性遮蔽到单个JAR中,Hadoop客户端API是编译范围,Hadoop客户端运行时是运行时范围,它包含从Hadoop客户端重新定位的第三方依赖关系。因此,你可以将依赖项绑定到JAR中,并测试整个JAR以解决版本冲突。这样避免了将Hadoop的依赖性泄露到应用程序的类路径上。例如,HBase可以用来与Hadoop集群进行数据交互,而不需要看到任何实现依赖。

2.6 支持等待容器和分布式调度

在Hadoop3 中引入了一种新型执行类型,即等待容器,即使在调度时集群没有可用的资源,它也可以在NodeManager中被调度执行。在这种情况下,这些容器将在NM中排队等待资源启动,等待荣容器比默认容器优先级低,因此,如果需要,可以抢占默认容器的空间,这样可以提供机器的利用率。如下图所示:

在这里插入图片描述

默认容器对于现有的YARN容器,它们由容量调度分配,一旦被调度到节点,就保证有可用的资源使它们执行立即开始。此外,只要没有故障发生,这些容器就可以允许完毕。

等待容器默认由中心RM分配,但还增加了支持以允许等待容器被分布式调度,该调度群被实现于AM和RM协议的拦截器。

2.7 支持多个NameNode节点

在Hadoop2中,HDFS NameNode高可用体系结构有一个Active和Standby NameNode,通过JournalNodes,该体系结构能够容忍任何一个NameNode失败。

然而,业务关键部署需要更高程度的容错性。因此,在Hadoop3中允许用户运行多个备用的NameNode。例如,通过配置三个NameNode(1个Active NameNode和2个Standby NameNode)和5个JournalNodes节点,集群可以容忍2个NameNode节点故障。如下图所示:
在这里插入图片描述

2.8 默认的服务端口被修改

早些时候,多个Hadoop服务的默认端口位于Linux端口范围以内。除非客户端程序明确的请求特定的端口号,否则使用的端口号是临时的,因此,在启动时,服务有时会因为与其他另一个应用程序冲突而无法绑定到端口。

因此,具有临时范围冲突端口已经被移除该范围,影响多个服务的端口号,即NameNode、Secondary NameNode、DataNode等如下所示:
在这里插入图片描述

2.9 支持文件系统连接器

Hadoop现在支持与微软 Azure数据和阿里云对象存储系统的集成。它可以作为一种替代Hadoop兼容的文件系统,首先添加微软Azure数据,然后添加阿里云对象存储系统。

2.10 DataNode内部负载均衡

单个数据节点配置多个数据磁盘,在正常写入操作期间,数据被均匀的划分,因此,磁盘被均匀填充。但是,在维护磁盘时,添加或者替换磁盘会导致DataNode节点存储出现偏移,这种情况在早期的HDFS文件系统中,是没有被处理的。如图下图所示,维护前和维护后不均衡的情况:

在这里插入图片描述

现在Hadoop3通过新的内部DataNode平衡功能来处理这种情况,这是通过hdfs diskbalancer CLI来进行调用的。执行之后,DataNode会进行均衡处理,如下图所示:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据量过大,使用saveBatch保存数据太慢如何解决:

数据量过大,使用saveBatch保存数据太慢如何解决: 在使用mybatis-plus的saveBatch方法时发现保存太慢,会生成一大堆的insert,而不是一批一批的,影响因素可能有两个,如下: 1. mybatis-plus使用s…

一文读懂SCADA系统的组件功能及应用

什么是SCADASCADA是一个功能强大的控制系统,旨在收集,分析和可视化来自工业设备的数据。SCADA系统自动提取、监控、处理、分发、记录和显示从远程现场设备(如传感器、工厂机器、电机、泵、阀门)和工业企业、制造设施、核电站和炼油厂等资产密集型环境中的…

kkFileView 文件在线预览部署

一、什么是kkFileView kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等。 官方地址kkFi…

MasterSlave概念与配置与eeprom信息擦除解决步骤

目录 一、Master&Slave概念与配置​ 1.Master&Slave概念​ 2.期待协商结果​ 3.RENIX配置​ 4.帮助文档​ 二、eeprom信息擦除解决步骤​ 1.使用SSH管理软件连接​​网络测试仪​​ 2.使用“cd /opt/eeprom”命令进入eeprom文件夹 3.进入eeprom文件夹 4.重启…

GPU云服务器CentOS环境下的配置教程

CnetOS环境部署 CentOS是支持自动安装的cuda以及相关驱动的,我们就直接安装吧 测试环境 登录后首先检查系统是否有支持 CUDA 编程的 GPU,使用如下命令查看当前GPU的型号。可以识别出NVIDIA T4 lspci | grep -i nvidia输入nvidia-smi,这里…

KernelShark分析内核任务执行过程

一、KernelShark简介 KernelShark是一个非常实用的工具,其可以搭配 trace-cmd 使用,将内核的任务执行过程以直观的形式展现出来。下面的文档中详细的介绍了KernelShark的使用方法和功能,这里不再详细描述 https://www.kernelshark.org/Docum…

C语言--模拟实现库函数strcpy

目录前言strcpy实现的基本原理函数的模拟实现代码优化assert--断言const关键字strcpy的返回值结语前言 本章内容我们将通过相关函数来实现库函数中的strcpy。 strcpy实现的基本原理 C语言 strcpy()函数用于对字符串进行复制(拷贝)。需要的头文件为 &l…

IPtables进行端口复用

目录第一种方式:ICMP做遥控开关1、创建端口复用链2、创建端口复用规则,将流量转发至22端口3、开启开关4、关闭开关5、lets do it第二种方式:利用tcp数据包的关键字做遥控开关1、端口复用链2、端口复用规则(与上面一致)3、开启开关4、关闭开关…

手机上怎么制作动图?两招教你手机在线制作gif动画

想要在手机上制作gif动态图片,还不想下载软件的时候要怎么办呢?很简单,下面给大家分享两招在线gif制作(https://www.gif.cn/)的工具,不需要下载任何软件。小白也能轻松上手,支持原画质导出&…

STM32 (十五)ESP8266WIFI

简介1 ESP8266wifi 模块低功耗串口WiFi模块ESP8266内置一个Tensilica(泰思立达) Xtensa架构的32位处理器L106,具有5级流水线(ARM CortexM3是3级流水线),最大时钟速度为160MHz,可以使用高达16MB的外部SPI Flash。 该模块…

Kotlin Navigation开发

前言 其实小编之前一直都是用的Java来开发Android,但是工作需求,开始了Kotlin的编程,接触到了JetPack,发现其中的Navigation特别有意思,今天来给大家分享一下,我们做一个四个页面吧,从APP的 欢…

2023年PMP考试如何备考?

下面我给各位正在学习备考或者正在犹豫是否报名的朋友分享下我的想法和学习经验,希望对各位朋友有帮助。 一, 关于读PMBOK 在整个学习和备考期间我总共读了五遍PMBOK,第一遍是粗略的读,在读的时候一定要有耐心,因为在…

电商系统的高质量容量保障是怎样“炼成”的?

一分钟精华速览 容量保障的目标是保证服务在大量用户访问时,依然可以正常为用户提供服务。比如,在“双11”购物节的超高访问量下,各电商系统依然能够稳定地运行,可以说容量保障是所有技术人都应当具备的技能。 知名技术博主老张…

【0-1背包变式题】何以包邮(来自Acwing寒假每日一题)

⭐️前面的话⭐️ 本篇文章介绍来自一道0-1背包的变式原题,展示语言java/C。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由未见花闻原创,…

振弦采集模块监测传感器频率值不稳定

振弦采集模块监测传感器频率值不稳定 基本概念 振弦传感器:(vibrating wire sensor)是以拉紧的金属钢弦作为敏感元件的谐振式传感器。当弦的长度确定之后,其固有振动频率的变化量即可表征钢弦所受拉力的大小。根据这一特性原理&a…

2023华数杯B题社会稳定预警研究的材料支撑以及解题思路【全网独家社会稳定预警研究材料支撑】

B题社会稳定预警研究 材料支撑:(动态链接,后期会一直不断新增支撑论文进去) 社会稳定预警研究材料支撑合集下载 部分截图如下:(还会不断更新) 题目问题B:社会稳定预警研究 人类和…

【C语言】文件相关函数详解

🌇个人主页:平凡的小苏 📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情 🛸C语言专栏:https://blog.csdn.net/vhhhbb/category_12174730.html 小苏希望大家能从这篇文章中收获到许…

C++类基础(四)

访问限定符与友元 ● 使用 public/private/protected 限定类成员的访问权限 //main.cpp struct Str { //结构体默认的访问权限,可以省略 //public:int x 0; private:int y 0; };int main() {Str m_str;//OK: 在同一个翻译单元内,结构体struct Str { .…

单车价值超整车售价?智能汽车「新赛道」扎堆供应商

汽车网络安全赛道正在进入新周期。 1月初,HL Mando与全球汽车网络安全方案提供商Argus Cyber Security达成协议,扩大网络安全技术合作。前者将Argus CAN入侵检测系统(IDS)解决方案应用于刹车和转向等电气化系统产品。 目前&#x…

希尔排序基本思想示例及代码

希尔排序是插入排序的一种,直接插入排序相关内容可见: https://blog.csdn.net/weixin_43978384/article/details/128836898?spm1001.2014.3001.5502 1、算法思想 希尔排序又称“缩小增量”的排序,属于插入排序的一种。希尔排序的基本思想是…