第3章 分布式文件系统HDFS(精心梳理 详解HDFS )

      最后更新:2022-04-05 14:12:26 手机定位技术交流文章

      一个在众多服务器上分发文件的网上文件系统称为分发文件系统。一般而言,分布式文件系统是按“服务员/服务员(客户/服务员)”模式建造的。客户使用指定的通信协议在网络上与服务器进行通信。提出文件访问请求,通过配置访问许可,客户和服务器可以限制请求方进入某些数据储存区块。

      分布式文件系统架构

      通用操作系统(如Windows和Linux),磁盘空间通常分为512位元/文件系统称为“磁盘组”的组。它是可以在文件系统中读写最小的单位。文件系统中的块块( Block) 通常是磁盘大小的整数倍 。也就是说,读写数据的数量必须是磁盘块大小的多个整数倍数。

      块构思也用于分布式文件系统。该文件分为几节。区块是读写数据的基本单位。HDFS区块的默认大小为64M。与传统的文书工作相反,分发文件系统包括:如果文件大小小于数据块,它并不涉及整个数据区块的储存能力。

      在物理结构方面,分布式文件系统由计算机集群中的两种节点组成:

      • 名称 节点/ 主节点

      名称节点负责生成、 删除、 重命名文件和目录, 以及处理数据节点和区块映射 。 客户端只能先访问名称节点, 然后再读取匹配位置位置所需的区块, 才能先访问名称节点, 然后在匹配位置读取所需的区块 。

      • 数据节点( 数据节点) / 从节点( Slave 节点) 数据节点( DataNode) / from 節点( Slave 节点)

      数据节点负责数据储存和读取;当数据保存时,基于节点名称的分布存储,数据随后由客户直接写入相关数据节点;在阅读时,从名称节点,客户端会收到数据节点和文件块的地图。在此之后,可在正确位置进入区块。根据名称节点命令,数据节点也可以生成、删除和复制数据块。

      分布式文件系统通常是多拷贝存储系统,块被复制成许多副本,并存放在单独的节点上,结点含有同一文件块的不同副本,分散在不同的架子上。

      分布式文件系统的设计规格

      分布式文件系统的设计规格主要包括透明性、并发控制、文件复制、硬件和操作系统异构性、可伸缩性、容错以及安全需求等。

      设计需求

      具体含义

      HDFS的实现情况

      透明性

      在准入、地点、绩效和适应性方面的透明度。

      获取方面的透明度:用户不需要区分哪些是本地的,哪些是边远的,他们可以使用同样的程序获取本地和远处的文件资源。

      地点透明度:无论文件副本数量和实际储存位置如何,改变路径名称对用户都是透明的,用户不会注意到更改,而且总是可以使用相同的路径名称访问同一个文件。

      性能和灵活性:这是指系统节点数目的增加或减少,以及对用户透明的业绩变化,用户不知道节点何时增加或删除。

      只有有限程度的开放准入是可能的,完全支持地点、业绩和灵活性方面的透明度。

      并发控制

      客户阅读和撰写文件不应妨碍其他客户阅读和撰写同一档案。

      机制非常简单。 在任何特定时刻, 只有一个应用程序被允许写入文件 。

      文件复制

      档案的若干份副本可以存放在不同地点。

      HDFS利用了多拷贝方法。

      硬件和操作系统异异构性

      有了各种操作系统和机器,就可以实现相同的客户和服务器终端应用程序。

      以JAVA编程语言创建,具有很强的跨平台兼容性

      可伸缩性

      允许动态插入或删除节点 。

      一个分布式文件系统群集,其可扩缩性很大,其基础是一台庞大而廉价的计算机。

      容错

      当客户或服务有问题时,确保文件服务得到适当使用。

      多拷贝机制、自动故障检测和回收方法

      安全

      保障系统的安全性

      安全性较弱

      HDFS演变过程

      图1说明标准文件系统如何通过直接在服务器上存储数据文件来处理巨大的数据。

      图1 传统文件系统

      如图1所示,传统档案系统在数据储存方面有两个挑战:

      • 当数据数量增加时,必须解决储存瓶颈问题。
      • 由于文件数量庞大,上载和下载费时;

      为了减轻传统的文件系统储存方面的困难,第一个要审议的项目是放大。扩容有两种形式,一种是纵向扩容,即第一个是增加磁盘和内存;第二个是水平扩展。即增加服务器数量。通过扩大规模,有可能建立分布式储存。这种碎屑是分发文件存储的前身 。如图2所示。

      图2:分布式文件系统的发展

      在解决了分布式档案系统的存储瓶颈之后因此,还需要提高文件上载和下载的效率。标准技术是将一个巨大的文件分成许多数据片段。平行存储数据块。以下是30G文本文件的一个例子。将其切分成3块,每块大小为10G(实际中,每件数据约为100米),每件数据约为100米。保存到文件系统 。如图3所示。

      图3:分布式文件系统的发展

      从图3可以看出,第一个服务器设计为持有30千兆字节文件。目前,每个服务器只需存储 10 G 数据块就可以完成它的任务 。因此,上载下载的效率得到提高。然而,这些文件通过数据区块独立保存在服务器集群中。那么,我们如何获得整个文件?针对这个问题,需要考虑安装另一个服务器。该数据库用于跟踪被砍断的数据区块及其存放地点。如图4所示。

      图4显示了HDFS文件系统原型。

      从图4可以看出,为了处理其他服务器,文件储存系统增加了服务器A。服务器 A 记录从文件中删除了多少数据块 。每个服务器上保存这些数据碎片。这意味着当客户访问服务器A时,他或她将无法下载数据文件。可以使用类似的搜索目录来查找数据。

      通过前面的操作,所有这些问题似乎都已解决。然而,有一个重要问题必须解决。那时服务器上出现了一台机器 存储数据碎片我们没有足够的机会获得文件。这个问题被称为一个单一点失败问题。针对这个问题,为克服问题,可实施备用系统。如图5所示。

      图5说明了HDFS档案系统。

      从图5可以看出,每个服务器存储两个数据区块。进行备份。blk-001和blk-002储存在服务器B上。blk-002和blk-003储存在服务器C上。服务器D是找到Blk -001和Blk -003的地方此时,当服务器 C 失败时,对于客户访问下载,我们也可以通过服务器B和D获得整个数据区块。之后,建立了一个基本的HDFS分布式文件系统。

      在这种情况下,服务器A被称为名称节点,它在文件系统的所有文件和目录中存储重要信息,而服务器B、C和D被称为数据节点,用于存储数据块。

      HDFS前世今生

      Doug Cutting于2002年8月建造了Nutch,并在SourceForge上托管。

      Google文件系统,2003年10月发表的论文,Google文件系统,

      2004年,Nutch复制了NDFS(Nutch分配文件系统,NDFS)。

      2006年2月,Nutch的NDFS和MapReduce分别成为名为Hadop的Apache Lucene项目的次级项目;创造者Dong Cutting加入了雅虎。

      HDFS的特点

      优点

      • 兼容廉价的硬件设备
      • 流数据读写

      通用档案系统主要用于随机阅读和书写以及人的互动。HDFS使某些便携式操作系统接口更容易使用。控制(POSIX),这样可以快速和方便地进入文件系统。

      • 大数据集
      • 简单的文件模型

      HDFS有一个直截了当的文件概念, 其基础是“一个写,多个读数 ”, 这意味着一旦文件关闭, 就无法再次写入, 只能读取 。

      • 强大的跨平台兼容性

      HDFS是用JAVA编程语言撰写的,具有跨平台兼容性。

      不足

      • 不适合短时档的数据存取。

      HDFS主要用于大规模数据批量处理,使用现有数据阅读,数据吸收率高,但也意味着大量延迟。 HDFS是需要低时延误的应用程序的最好解决办法。

      • 无法有效存储大量小文件

      小文件是大小小于一个区块(64M)的文件。太多的文件对该系统的成长和业绩造成严重破坏。首先,为了处理文件系统中的元数据,HDFS使用名称节点。元数据保存在记忆中。如果文件过多,这是一个人第一次获得自己的数据,以便取用自己的数据。它还超出存储记忆的范围。其次,无法使用 MapReduce 处理大量小文件。地图上的杂务将会过多。管理支出大幅度增加。因此,处理大量小文件的速度大大慢于处理相同大小的大文件的速度。再次,查阅大量小文件比查阅一些大件文件要慢得多。查阅了大量小文件。需要从一个数据节点转到另一个数据节点。严重影响性能。

      • 不允许多用户写入或更新文件 。

      HDFS 仅允许每个文件只允许一位作家, 并且只允许对文件采取额外行动; 不允许随机写入操作 。

      HDFS的相关概念

      为了优化磁盘性能,在古典文件系统中的读写经常在数据块单位而不是字节中进行。

      HDFS中也使用区块的概念。标准区块大小为 64MB 。HDFS 文档将分成许多块。每个区块都作为单独的单元保存。HDFS区面积很大其目的是减少搜索现场的费用。HDFS费用既包括磁盘搜索费用,也包括磁盘搜索费用。它还考虑到查明数据区块的费用。

      当客户需要查阅文件时首先从名称节点获取构成此文件的数据区块位置列表 。接下来,根据位置列表,您将接收真正存储数据区块的数据节点的位置。根据数据区块信息,最后一个数据节点在本地 Linux 文件系统中找到相关文件。然后把数据发回给客户

      区块大小不应设置得太大, 因为 MapReduce 中的地图任务通常一次只处理一个区块的数据, 如果创建的任务太少, 操作的流程性能将会降低 。

      HDFS使用抽象区块概念可以提供以下明显的好处:

      • 支持大规模文件存储

      文件以区块保存,大文件破碎成多个区块,各节传送到不同的节点,使文件的大小不受单个节点存储容量的限制,可能远远大于网络中任何节点的存储容量。

      • 简化系统设计

      首先,HDFS利用区块概念大大简化储存管理。因为文件块的大小是不变的,因此,确定节点可以持有多少块区块很简单;第二,这使得元数据处理更容易。元数据不必与文件块一起保存 。其他系统可能管理元数据。

      • 适合数据备份

      每个区块都可能是多余的,储存在许多节点上,大大加强了系统的容忍和效用。

      名称节点

      命名负责创建、删除和重命名文件和目录的节点。

      HDFS 中的名称节点控制分布式文件系统(Namespace)和两个关键数据结构( FsImaage 和 EditLog)的命名空间 。

      FsImaage 保存文件系统树的元数据以及文件树内的所有文件和目录。

      操作日志文件 EddieLog 记录创建、删除、重命名等所有活动。

      每个文件中的数据节点的位置由名称节点记录,客户端只能通过访问名称节点来识别所请求的文件块的位置,然后在正确位置读取所需的文件块。

      名称节点中的信息不会永久保存, 但每次系统启动时都会读取并修改以检索 。

      名称节点的启动

      当启用名称节点时, FsImaage 的内容会被导入到内存中, 然后在 EditLog 文件 中进行操作, 使元数据在内存中保持更新, 并与真实数据同步 。

      一旦前述动作完成( 在内存中成功生成了文件系统元数据放大), 将生成一个新的 FsImaage 文件和空的 EditLog 文件 。

      当标准启动成功时, HDFS 的更改将写入 EddieLog, 而不是立即写入 FsImaage 。 我不知道你在说什么 。就分布式档案系统而言,Fsimage 文件往往很大(超过GB临界值),非常大的文件通常很大(超过GB临界值),而且非常大。如果所有更改都直接在FsImaage文件中进行,则不可行。此后,该系统的运作将非常缓慢。相对而言,编辑日志的大小往往大大低于 FsImaage 。更新向 EditLog 写入的操作非常有效 。

      在启动期间,名称节点处于“安全模式”,只能从外部提供读写操作。

      启动程序完成后,系统退出安全模式,进入正常运行模式,向外部世界提供阅读和写作活动。

      数据节点

      数据节点( DataNode) 是 HDFS 分布式文件系统用于数据存储和读取的工作节点 。

      根据客户端或名称节点的时间表保存和检索数据节点。

      将定期保存的区块列表发送到名称节点。

      每个数据节点中的数据都保存在节点本地 Linux 文件系统中。

      第二名称节点

      要解决的问题

      在整个命名节点的一生中,HDFS 更改被直接放入 EditLog 文件 。因此,编辑日志文件的规模将逐步扩大。正常运行期间,通常情况下,更大的 EditLog 文档对系统没有重大影响。但是,当名称节点 重新启动,Fsimage 必须装入内存 。然后是执行 EddieLog的记录, 逐条文章。应不断更新《图表》。这时,如果编辑日志是大的,这将导致程序极为缓慢,同时,在整个启动过程中,名称节点总是在“安全模式”中。向外部世界提供适当的书面材料是不可行的。影响用户的使用。

      具有的功能

      第二名节点是HDFS设计的基本组成部分,有两个目的:

      (1) 它可以通过降低编辑日志文件大小和尽量减少重新启动名称节点所需的时间,完成与 FsImaage 合并的编辑日志。

      1. 第二个名称节点与名称节点定期互动,要求终止编辑日志文件,并将新到达的写作操作暂时附在新的编辑日志上。
      2. 第二个名称节点通过 HTTP Get 从名节点获取 FsImaage 和 EditLog 文件 。相应目录下,再加载到内存中。
      3. 第二个名称节点将 FsImaage 和 EditLog 文件加载到内存中, 并逐条运行文章程序以保持 FsImaage 更新 。
      4. 第二个名称节点合并了最近提供给第一个名称节点的 FsImage.ckpt 文件 。
      5. 名称节点得到了最新的 FsImaage 。 在 cockpt 文件之后, 旧 FsImaage 文件将被替换为 EditLog 。 新文件将用来替换 EditLog 文件, 降低 EditLog 文件的大小 。

      (2) 它可以用作名称节点的“检查点”,将元数据储存在名称节点上。

      第二个名称节点仅仅是名称节点 T1 点的数据备份 。发生故障后,无法为名称节点存储数据;同时,无法为名称节点保存数据。HDFS的设计方式它也不允许直线系统切换到第二个名称节点。因此,第二个名称节点只是作为名称节点的“检查点”功能。它作为“热备份”是无效的。

      元数据

      HDFS 文件系统被称为元数据。关于文件和文件夹属性的信息 。HDFS实现时,它对镜像文件(FsImaage)和日志文件(EditLog)采用备份技术。文件的图像文件包含以下信息:修改的时间、访问的时间、数据区块的大小以及构成文件的数据区块的存储。该目录的镜像文件叉子包括时间修改、访问控制权限等信息。日志文件包含对 HDFS 更改的信息 。

      HDFS的体系结构

      HDFS使用主/奴隶结构概念。HDFS 集群由名称节点和许多数据节点组成。作为中心服务器,使用名称节点。管理文件系统命名空间和客户访问内容。组群中的数据节点通常是执行数据节点进程的节点。它负责处理档案系统客户的阅读和写作请求。根据一致的名称节点时间表创建、删除和复制数据块。每个数据节点的数据都真正保存在 Linux 本地文件系统中。每个数据节点周期性地向名称节点传送“心跳”信息。报告自己的状态,如果数据节点不能及时在他们的心中转发信件, 将会被指定为“ 死亡机器 ” 。它将不再收到任何额外的一/一/一/一/一/一/一/二请求。

      用户可以使用 HDFS 中的文件名保存和访问文件,就像他们在传统文件系统中所做的那样。

      • 将文件名传送到名称节点 。
      • 要根据文件名检索相应的数据块,请使用名称节点。
      • 确定每个数据项存储地点的数据节点位置。
      • 将数据节点的位置传送给客户端。
      • 为了获得数据,客户可以直接访问这些数据节点。

      命名空间管理

      HDFS 的命名空间由目录、文件和区块组成。

      命名空间以促进HDFS文件夹、文件和区块的形成、修改、删除等的基本功能被称为命名空间管理。

      目前HDFS设计只包括一个名称空间和一个名称节点,负责管理整个HDFS组群的名称空间。

      HDFS使用经典的等级档案系统。用户可以访问标准文件系统。创建并删除文件夹和文件 。将文件传输到文件夹、 重命名文件等等 。但是,HDFS尚未提供磁盘配额和档案查阅特权。它也无法使文件与硬和软连接(这样做会有帮助)。

      通信协议

      TCP/IP是HDFS通信协议的基础。

      客户端通过指定的端口主动启动 TCP 与名称节点的连接,并通过客户协议使用客户端与名称节点进行通信,通过指定的端口主动启动与名称节点的TCP 连接,并通过客户协议与名称节点进行通信。

      要在名称节点和数据节点之间进行通信,请使用数据节点协议。

      客户端使用远程进程呼叫(RPC)与数据节点进行通信。

      命名节点并不自动启动RPC,而是回答客户端和数据节点对RPC的询问。

      体系结构的局限性

      1、命名空间的限制

      由于名称节点保存在记忆中,名称节点可以容纳的项目数量受内存空间数量的限制。

      2、性能的瓶颈

      个人名称节点在分布式文件系统中的通过量有限。

      3、隔离问题

      由于该组只有一个名称节点和一个名称空间,因此无法将各种应用程序分开。

      4、集群的可用性

      如果此单名节点失败, 整个组群将无法运行 。

      HDFS的存储原理

      HDFS储存概念包括数据冗余、数据储存战略、数据错误和回收。

      数据的冗余存储

      HDFS对多余的数据储存采用多拷贝方法,以保证系统的可容性和可用性,一个数据区块的一些副本往往分散在不同的数据节点之间。

      多副本方式的优点:

      • 加快数据传输速度

      当许多客户同时必须查阅同一档案时,每个客户都可以从一个不同的数据块的复制件中单独读取数据,大大加快了数据传输。

      • 容易检查数据错误

      使用多份副本的数据传输出错,很容易判断数据通过HDFS数据节点之间的网络传输的情况。

      • 保证数据的可靠性

      即使数据节点失败,也不存在数据损失。

      数据存取策略

      数据存放

      HDFS采用基于机库(Rack)的数据储存方法。

      若干飞机架架往往设在单一的HDFS集群内。架架之间数据连接需要一个开关或路由器。在同一架架上计算机之间的连接不需要开关或路由器。这表明,架子上的机器之间的通信信条比架子之间的机器电信带要宽。

      HDFS中的每一数据节点默认指定在一个单独的架子上。缺陷:当数据写入时,无法完全利用同一内部机器之间的带宽。好处包括数据具有很大的可靠性,而且能够同时阅读各种架子的数据。数据存取速度大大加快,使系统内的负载平衡和误差处理容易得多。

      HDFS的缺省冗余系数是3。每个文件块将同时存储在三个不同地点。其中,在同一机构,两个副本分别存放在同一台电脑上。第三个副本被放在一个有不同架子的系统上;这确保了在架子异常的情况下恢复数据。还可使数据更易于读和写。

      以下是HDFS拷贝安置政策:

      • 如果在组群中开始写作,为开始程序,第一个副本放在数据节点上。实现就近写入数据。开始从该组之外书面提出请求是不可行的。此外,CPU没有因数据节点而负担过重,数据节点在集群内有足够的磁盘空间。作为继续一份副本的交存地点
      • 第二个复制件将存储在另一个数据节点上,而不是第一个数据节点上。
      • 第三件复制件将安装在同一机库的其他节点上,与第一件放在同一机库的其他节点上。
      • 如果有更多副本,则继续随机从组群中选择数据节点储存。

      数据读取

      HDFS为确定数据节点的机库身份提供了一个API,客户也可以使用API计算自己的机库身份。

      客户端读取数据时,应储存名称节点数据区块不同副本的地点清单。列表包含可找到副本的数据节点。API用于识别客户以及数据节点所属的飞机身份。当发现数据区块复制件与客户具有相同的机器识别码时,这是第一次 我能够确定 有多少人 已经访问过数据。如果没有发现,要阅读数据,请选择随机副本。

      数据复制

      流线复制机制是HDFS数据复制战略的基础。

      在 HDFS 中, 一种向客户撰写文件的方法 。

      • 文件最初由本地撰写,然后分为多个区块,其大小由 HDFS 设定参数确定。
      • 每个区块都向 HDFS 群集的名称节点发送书面请求,该节点根据系统中每个数据节点的使用情况,向客户提供数据节点列表。
      • 数据首先由客户端输入列表中的第一个数据节点。同时,该列表将发送到第一个数据节点。在第一个数据节点得到4KB信息后写入本地,此外,向清单上第二个数据节点发送连接请求。向第二个数据节点传输 4KB 数据和列表至 4KB 数据节点(根据 HDFS 的可用性、复制系数和机架感知,数据节点是完全随机的)
      • 当第二个数据节点接收 4KB 数据时,该数据节点在本地写成,并向列表中的第三个数据节点发送连接请求,从而创建数据复制流程。
      • 最后,在文件完成后,数据复制将同时进行。

      数据错误与恢复

      HDFS创建了相关技术,以查明数据错误和自动恢复,重点是以下三个案例:

      名称节点出错

      为了确保名称节点的安全,Hadop采用两种机制:

      • 名称节点上的元数据信息应与其他文件系统同步。
      • 运行第二个名称节点, 在名称节点死后, 运行节点 node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node node

      当名称节点失败时,从远端安装的网络文件系统获取备份元数据信息,并在第二个名称节点上恢复,然后作为名称节点使用。

      数据节点出错

      当数据节点因网络故障或节点分解而被贴上“死亡机器”标签时,数据点被贴上“死亡机器”标签。可能会有问题这是由于特定数据节点的各种功能造成的。因此,一些数据区块的复制件数量将小于冗余系数。名称节点经常监测局势。在发现某一数据的副本小于冗余系数后,可确定某一数据的副本数小于冗余系数。如果选中, 数据冗余副本将启动 。为它生成新的副本。HDFS和其他分布式文件系统之间最重要的区别是能够移动重复数据。

      数据出错

      客户在阅读了数据后,能够了解到底发生了什么。将使用MD5和SHA-1来验证数据区块。选择哪些数据应该读取在文件被创建时,每个文件块将由客户端分析 。然后将此信息保存到同一目录中的秘密文件 。客户阅读档案时,出现以下情况:如果您选择这样做, 您将首先读取信息文件 。然后利用此数据文件来验证每读取的一小块数据。如果校验出错,用户会要求不同的数据节点读取文件块 。文件块被报告为名称节点出错 。名称节点定期验证和复制块块。

      HDFS 可靠性保护

      HDFS的主要设计目标之一是确保发生损失时数据储存的持久性。 HDFS包括完善的冗余备份和故障恢复机制。

      • 冗余备份

      将数据写入不止一个数据节点, 当一些节点停止机器时, 数据也可以从其他节点中回收, 并传输到其他节点, 使备份数达到设定值 。

      • 副本存放

      HDFS使用Rack-aware方法来增加数据的可靠性、可用性和互联网宽带的使用。当复制因子为3时,HDFS 复制存储技术是在另一个节点(在集束内完成)或随机一个节点(在集束外执行)存储初始副本。 doneS 复制存储技术是在另一个节点(在集束内完成)或随机一个节点(在集束外执行)放置第一副本。第二本储存在任何其他当地的机库节点中。第三个副本被安装到其他的架子节点上如果整个机库坠毁,此方法将防止数据丢失。机架的高带宽特效也可能得到充分利用。

      • 心跳检测

      该组中的每一个数据节点都会发送关于心跳和块状报告的命名节周期报告。根据这些报告, " 命名点 " 检查地图和其他文件系统元数据。当节点未能从数据节点节点获得心跳报告时,数据节点将被命名为计算机 。不将额外的 IO 操作发送到名称节点的数据节点 。同时,数据节点机器可能导致数据复制。由于各种原因,经常触发复制,包括:没有数据节点,数据副本受损,数据节点上的磁盘错误,或复制系数增加。

      • 安全模式

      就HDFS而言,它最初将贯穿整个模式。在这个模式中,是数据块不允许的写操作。如果数据节点上数据区块的份数低于某一阈值,名称节点将检测数据节点上数据区块的份数。然后它会是一个完整的模式。并开始副本的复制,如果份数超过最低份数,此后将自动退出安全模式。我不知道你在说什么 安全模式 我不知道你在说什么 临界点 Pct (默认值 0 99f)因此,在数据节点节点在99f后被击败1比0之后,会进入安全模式。

      • 数据完整性检测

      HDFS已完成HDFS文件内容(CRC环校准码)的核查和测试。在编译数据文件时数据区块的校验总和也可以写入隐藏文件(% 1) 。当客户检索到文件时,它将确保从数据节点节点检索的数据库的匹配检查和匹配检查与隐藏文件的检查和一致性相一致。如果不一致,因此,客户会认为数据库已经损坏。其他数据节点节点将获取数据板 。并提供名称节点数据节点的数据块信息。

      • 回收站

      从 HDFS 丢弃的文件保存在一个文件夹( / trash) 中, 以帮助数据恢复 。 当删除的时间超过指定的时间阀( 默认 6小时) 时, HDFS 完全删除数据块 。

      • 映像文件和事务日志

      这两类数据构成HDFS的基础。

      • 快照

      高可用性 HDFS(HA:高可用性)

      HDFS HA 是用来解决 NameNode 单点故障问题的。

      HDFS 联邦是用来解决 NameNode 内存瓶颈问题的。

      单点错误Name 无无

      SPOF(单一文件点)是单一故障点的缩略语。

      对于HDFS分发的档案系统,名称节点是系统的中心节点 。元数据以不同格式储存。它还维持档案系统的名称空间和客户查阅文件的机会。但是,1. 照片来自Flickr用户pic.有一个单一的名称节点 。如果单名节点失效,最终,它将使整个集群无法运作。它被称为“单一点失败”。

      虽然,HDFS1. 0 中有一个二名节点(二名节点)。尽管如此,第二个名称节点不是名称节点的备份节点。它的作用与名称节点不同。第二个名称节点的主要作用是周期性地获取空间镜像文件( FsImaage) 的名称,并从名称节点更改日志( EditLog) 。当节点被组合时,请提供名称节点,这是我这辈子第一次见到一位女士要防止日志文件编辑日志变得太大,无法关闭临时文件夹:%s。FsImaage, 合并命名空间镜像文件, 将副本存放在第二个名称节点上 。当名字的节点不再有效时用于恢复,使用二名节点中的FsImaage。

      虽然第二个名称节点可以防止数据丢失,但它与第二个名称节点不同。然而,它对可用性没有影响。无法使用热备份选项 。也就是当名称节点失效时该系统无法实时过渡到第二个名称节点,以便向外部世界提供快速服务。仍然需要恢复停产。因此,HDFS 1.0的用意是有一个单一的失败点。

      当名节点发生单点失败时,标准程序是重新启动一个带有元数据备份的单一名称节点。 元数据备份可以来自 :

      • 创建多功能系统备份
      • 第二名节点检查站文件

      新名称节点开始时,客户端和 DataNode 名称的节点信息必须重新配置。此外,重新启动通常需要很长的时间,小规模集群有时需要几分钟甚至小时才能重新启动,而重新开始需要时间的原因一般如下:

      • 将元数据镜像文件装入内存需要更长的时间 。
      • 需要编辑日志重放 。
      • 在安全模式之外写入时,需要数据节点的状态报告,必须满足某些要求。

      Hadop的HA方案

      Hadoop2.x 中采用了高可用( High Availability HA )架构。 使得 HDFS 1.0 NameNode 一点问题已经解决。

      HDFS NameNode 图表描绘了总的高可用率框架。

      在典型的高可用率组群中通用配置,有两个名称节点,其中的一个名称节点已投入使用。另一个处于待命状态(待命状态)。所有客户查询都由当前名称节点外部处理。作为备用节点,使用处于待命状态的名称节点。维持足够的系统元数据。在名称节点失效的情况下,这一特性有助于迅速恢复。也就是说,使用HDFS HA,备用名节点提供“热备份”。如果活动名称节点失效,这是一个人第一次立即切换到备用名称节点。该系统的典型外部服务将不受影响。

      因为备用名称节点是当前名称节点的“热备份”,因此,活动名称节点的状态信息必须实时与备用名称节点同步。两个名称节点的状态是同步的 。可以通过使用共用储存系统做到这一点。类似于网络文件系统法定人数 新闻经理,NSFS动物守护者或QJM数据将通过主动名称节点在共享存储系统中更新。待命节点将监测系统。以新书的写法来说首先,数据是从公共储存系统中读取的,并输入到自己的记忆中。这将保证活动名称节点状态完全同步 。

      此外,数据区块的地图信息通过名称节点保存到实际储存位置。也就是说,每个数据块的数据节点都存储在其中。当一个新的 HDFS 数据节点进入数据组时,它向名称节点发送它包含的数据区块列表 。然后利用“心跳”机制定期发出这一通知。保证地名节点块绘图是最新的。因此,为了在失败的情况下实现快速过渡,关键的是,待命节点必须掌握关于分组中每个区段位置的最新信息。为了做到这一点,数据节点必须使用两个名称节点(即活动名称节点和备份名称节点)的地址设置,并同时向两个命名节点播放街区的位置和心跳信息为了避免"两个管家"的现象他还希望确保任何时刻只有一个名称节点活动。否则,如果有两个活动名称节点,在HDFS集群里,有"两个管家"这可能导致数据丢失或其他不合规定之处。动物园维护者执行了这项任务。动物园维护者可以确保任何一个时刻只有一个名称节点提供外部服务。

      failover :错误的转让、错误的转让

      正如我们所看到的,节点的高容量结构的名称被细分为以下部分:

      普通医管局通常在典型的医管局组群中安装两种不同的计算机,作为名称节点。

      在任何一个时刻,只有一个节点可以运行,而另一个处于待命状态。

      活动名称节点负责所有客户端动作, 而备用名称节点只是充当奴隶, 存储状态信息, 以便您可以在需要时快速转换 。

      ZKFailover 控制器是主要的随时可开关控制器。

      ZKFailover 控制器是一个独立的过程,它控制着命名节点的主要预设开关。

      ZKFailover主计长能够实时确认Norde的名字的健康状况。当主名节点失败时, 使用 Zookeper 进行自动初选并切换 。当然,名称节目前提供一个独立于Zookeper的手工预设开关。

      Zookeper群组旨在作为主要随时可调换控制器的主要选举支助。

      ZKFillauver主计长的主要职责

      • 健康监测

      定期向每个名称的节点发送健康检测指令,以便定期监测,评估一个名称节点是否健康,如果机器失灵,ZKFailover主计长将称它为不健康。

      • 会话管理

      如果节点的名称健康, ZKFailover 主计长将保持 Zookeper 会话活动 。

      如果名称节点已经使用,然后Kfc将拥有世界上两类人中的一类,以及Zookeper的两类短期兹诺德。挂挂节点时,此znode 将退役 。备份名称节点将接收此锁定 。升级为主NN,同时标为活动状态 。

      当带有名称节点的引擎首次被激活时, 它再次登记 Zookeper 并发现znode 被锁定, 所以它返回回循环以确保高度可靠 。

      Hadop2.x 仅允许设置最多两个名称的节点, 但 Hadop3.x 允许配置两个以上名称的节点, 而 Hadop3.x 允许设置最多两个名称的节点, 但 Hadop3.x 允许配置两个以上名称的节点 。

      Master选举

      如前所述,捕捉锁定技术是通过在Zookeper保留一种短小的ZNode来完成的,该ZNode指定了活跃的节点名称。

      共享存储系统中的Quorum《日刊》节点

      为了保持 Stanby 节点和活动节点同步,两者都与称为 JN 的一组单独进程互动。

      活动节点对命名空间所作的任何修改都将向大多数JNs广播。

      备用节点可以定期读取 JNs 的修改, 并观看编辑日志的修改 。

      编辑版由备用节点接收,并应用到自己的命名空间。

      当发生故障开关时,待命状态将确保它读过JN的所有修改,然后将自己升至活动状态,确保名称空间在失败开关(两个名称节点)之前的状况完全同步。

      节点数据节点

      除了通过共享存储系统交换关于 HDFS 的元数据信息外,主名称节点和现成名称节点必须共享 HDFS 数据区块和数据节点之间的绘图连接。

      数据节点将同时向主名称节点和主名称节点提供位置信息。

      使用 HAName 节点设置两个 HDFS 组 。分别是活跃的和不活跃的。一旦活动名称节点失败,继续提供服务的任务已下放给待命部队。用户缺乏明显的中断感。通常需要从几秒钟到几分钟的任何地方。

      医管局的基本认识逻辑如下:

      1 编辑日志存储主要共享 。

      主名节点和备用名节点共享一个 EditLog, 当主准备开关被翻转时, 备用同步数据会与 EditLog 同步, 并重放它 。

      共有储存通常有两种选择:

      • NFS(网络文件系统)是网络文件系统的缩写。
      • QJM是Quorum杂志经理仲裁日志管理人的简称。
      • 或者,苏克普

      QJM特别用于执行HDFS HHA。它用来以高可用率提供 EditLog 。QJM管理一个《日刊》节点小组。《日刊》大多数节点必须通过编辑日志撰写。通常使用3个节点,因此,允许节点失效。就像动物保护者一样应当指出,QJM没有雇用ZK。尽管HDFS Ha利用ZK投票支持其所有人Namnode,但HDFS Ha还是利用ZK投票支持其所有人。通常建议利用QJM。

      2 数据节点必须同时向母体主体提交区块报告。

      因为 Block 地图数据保存在内存(而不是在磁盘上),以便 Active NameNode 挂掉之后,新的 NameNode 您可以快速启动。 您不需要等待 。 DataNode Block Report DataNode 需要同时向主备两个 NameNode 发送 Block Report

      3 客户端必须设置失败模式( 以对用户透明的方式撤销备份模式 ) 。

      NameNode 客户不知道开关是由客户库处理的。 客户在配置文件中使用的 HDFS URI 是一条逻辑路径, 翻译为一对名称节点地址。 客户将尝试每个名称节点地址, 直到它成功 。

      4 Sandby接管了二级名称节点 。

      如果没有HA配置, HDFS 将自己作为次要名称节点运行一个守护进程。 它会检查点, 合并镜像文件, 定期编辑日志 。

      如果主

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/21539.html

          热门文章

          文章分类