Hadoop分布式文件体系(一)

[复制链接]
发表于 2025-12-21 08:00:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1. HDFS筹划目标

  1.错误检测和快速、自动的规复。
  2.支持大文件存储和访问。
  3.包管数据的划一性。
  4.移动盘算,而不是移动数据。
  5.异构软硬件平台间可移植。
2. HDFS组件

  HDFS的组件由Namenode,Datanode,Secondary Namenode构成。
组件功能NamenodeHDFS的守卫历程,用来管理文件体系的定名空间,负责记录文件是怎样分割成数据块,以及这些数据块分别被存储在哪些数据节点上,而且对内存和IO举行会合管理。Datanode文件体系的工作节点,根据必要存储和检索数据块,而且定期向Namenode发送它们所存储的块的列表Secondary Namenode辅助配景步伐,与Namenode举行通讯,以便定期生存HDFS元数据的快照,用以备份和规复数据  在Namenode的数据文件夹中,fsimage生存了元数据镜像文件(文件体系的目次树),而edits生存了元数据的操纵日记(针对文件体系做的修改操纵记录)。Namenode内存中存储的元数据可以用fsimage+edits表达。任何对文件体系元数据产生修改的操纵,Namenode都会使用一种称为Editlog的事件日记举行记录。Namenode在当地操纵体系的文件体系中存储这个Editlog。

  Secondary Namenode负责定时从Namenode上获取fsimage和edits举行归并,然后再发送给Namenode,淘汰Namenode的工作量。
  HDFS接纳master/slave主从布局,一个HDFS集群由一个Namenode和肯定命量的Datanode构成。Namenode实行文件体系的名字空间操纵,好比打开、关闭、重定名文件或目次,也负责确定命据块到详细Datanode节点的映射。Datanode负责处理惩罚文件体系客户端的读写哀求,在Namenode的同一调理下举行数据块的创建、删除和复制。HDFS架构如下图所示。

  Namenode在内存中生存着整个文件体系的名字空间和文件数据块映射的映像,这个关键的元数据布局筹划得很紧凑。当Namenode启动时,它从硬盘中读取Editlog和FsImage,将全部Editlog中的事件作用在内存中的FsImage上,并将这个新版本的FsImage从内存中生存到当地磁盘上并删除旧的Editlog。这个过程称为一个查抄点。
  Datanode将HDFS数据以文件的情势存储在当地的文件体系中,它并不知道有关HDFS文件的信息。它把每个HDFS数据块存储在当地文件体系的一个单独的文件中。Datanode并不在同一个目次创建全部的文件,现实上,它用摸索的方法来确定每个目次的最佳文件数目,而且在恰当的时间创建子目次。在同一个目次中创建全部的当地文件并不是最优的选择,这是由于当地文件体系大概无法高效地在单个目次中支持大量的文件。当一个Datanode启动时,它会扫描当地文件体系,产生一个这些当地文件对应的全部HDFS数据块的列表,然后作为陈诉发送到Namenode,这个陈诉是块状态陈诉。
  文件写入流程:
  1.客户端向Namenode发起文件写入哀求。
  2.Namenode根据文件巨细和文件块设置情况,返回给客户端所管理部门Datanode的信息。
  3.客户端将文件分别成多个块,根据Datanodede的所在信息,按序次写入到每一个Datanode块中。
  文件读取流程:
  1.客户端向Namenode发起文件读取的哀求。
  2.Namenode返回文件存储的Datanode的信息。
  3.客户端读取文件信息。
3. HDFS数据复制

  HDFS将每个文件存储成一系列的数据块,除了末了一个以外,全部数据块都是同样巨细的,Hadoop3.X默认数据块巨细为128MB。文件的全部数据块都有副本。HDFS的文件都是一次性写入的,而且严格要求在任何时间都只能有一个写入者。
  Namenode全权管理数据块的复制,它周期性地从集群中的每个Datanode吸收心跳信号和块状态陈诉。吸收到心跳信号意味着该Datanode节点工作正常。块状态陈诉包罗了该Datanode上全部数据块的列表。
  HDFS接纳机架感知的战略。大多数情况下,副本数目为3。HDFS将一个副本存放在当地机架的节点上,一个副本存放在同一机架的另一个节点上,末了一个副本存放在差别机架的节点上。HDFS会只管让读取步伐读取离它近来的的副本。
4. HDFS坚固性

  HDFS中常见的堕落情况有Namenode堕落,Datanode堕落和网络割裂。HDFS提供了多种错误规复本事,包管了体系的坚固性。
4.1 磁盘数据错误,心跳检测和重新复制

  每个Datanode节点周期性向Namenode发送心跳信号。网络割裂导致一部门Datanode与Namenode失去接洽。Namenode通过心跳信号的缺失来检测这一情况,并将这些近来不再发送心跳信号的Datanode标记为死机,不会再将新的IO哀求发送给它们。任何存储在死机上的数据不再有用。Datanode的死机大概会引起一些数据块的副本数目低于指定值,Namenode不绝地检测这些必要复制的数据块,一旦发现就启动复制操纵。
4.2 集群平衡

  HDFS支持数据平衡战略。假如某个Datanode节点上的空闲空间低于特定的临界点,按照平衡战略体系就会自动地将数据从这个Datanode移动到其他空闲的Datanode。当对某个文件的哀求忽然增长时,也大概启动一个筹划创建该文件新的副本,而且同时重新平衡集群中的其他数据。
4.3 数据完备性

  从某个Datanode获取的数据块大概是破坏的,破坏大概是由于Datanode的存储装备错误,网络错误大概软件毛病引起的。HDFS客户端软件实现了对HDFS文件内容的校验和查抄。当客户端创建一个新的HDFS文件时,会盘算这个文件每个数据块的校验和,并将校验和作为一个单独的埋伏文件生存在同一个HDFS名字空间下。当客户端获取文件内容后,它会校验从Datanode获取的数据以及相应的校验和与文件中的校验和是否匹配,假如不匹配,客户端可以选择从其他Datanode获取该数据块的副本。
4.4 元数据磁盘错误

  FsImage和Editlog是HDFS的焦点数据布局。假如这些文件破坏,整个HDFS实例都将失效。因而,Namenode可以设置成支持维护多个FsImage和Editlog的副本。任何对FsImage和Editlog的修改都将同步到它们的副本上。这种多副本的同步操纵大概会低沉Namenode每秒处理惩罚的名字空间事件数目。然而这个代价是可以担当的,由于纵然HDFS的应用是数据麋集的,它们也非元数据麋集的。当Namenode重启的时间,它会选择近来的完备的FsImage和Editlog来使用。
4.5 快照

  快照支持某一特定时间的数据的复制备份。使用快照,可以让HDFS在数据破坏时规复到已往一个已知精确的时间点。
5. HDFS数据构造

  HDFS数据构造包罗HDFS的数据块复制、流水线复制、文件的删除和规复等机制,保障了HDFS高效和可靠地存储数据。
5.1 数据块存储

  HDFS支持文件的一次写入,多次读取的语义。一个典范的数据块巨细为128MB,因而HDFS中的文件总是按照128MB被切分成差别的块,每个块尽大概地存储于差别的Datanode中。
5.2 流水线复制

  当客户端向HDFS文件写入数据时,一开始是写到当地临时文件中。假设该文件的副本系数设置为3,当当地临时文件累积到一个数据块的巨细时,客户端会从Namenode获取一个Datanode列表用于存放副本,然后客户端开始向第一个Datanode传输数据。第一个Datanode一小部门一小部门(4KB)地担当数据,将每一部门写入当地堆栈,而且同时传输该部门到列表中第二个Datanode。第二个Datanode也是如许吸收并举行写入,同时传输给第三个Datanode。末了第三个Datanode也是如许担当并举行写入。
  Datanode能流水线地从前一个节点担当数据,而且同时转发给下一个Datanode,数据以流水线的方式从前一个Datanode复制到下一个Datanode。
5.3 文件的删除和规复

  当用户或应用步伐删除某个文件时,这个文件并没有立即从HDFS中删除。HDFS会将这个文件重定名转移到/trash目次。只要文件还在/trash目次中,该文件就可以被敏捷地规复。文件在/trash中生存的时间是可以设置的,当凌驾这个时间,Namenode就会将该文件从名字空间中删除,删除文件会使该文件相干的数据块被开释。
  假如用户盼望规复删除的文件,可以欣赏/trash目次找回该文件。/trash目次仅仅生存被删除文件的末了副本。在/trash目次上HDFS会应用一个特别战略来自动删除文件,这个默认战略是删除/trash中生存时间凌驾6小时的文件。
参考

吴章勇 杨强著 大数据Hadoop3.X分布式处理惩罚实战
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表