Hadoop-分布式文件系统HDFS

      最后更新:2022-06-21 07:40:26 手机定位技术交流文章

      目录

      HDFS简介

      HDFS特点

      HDFS相关概念

      1.块

      2.名节点和数据节点

      HDFS体系结构

      1.HDFS系统结构概览

      2.HDFS命名空间管理

      3.通信协议

      4.HDFS系统结构的限制

      常见的HDFS壳式命令

      HDFS简介

      分布式文件系统 (Hadoop Distributed File System, HDFS) Hadoop 这个项目的两个核心组成部分之一是针对谷歌文件系统 (Google File System, GFS) 的开源实现, 研究如何存储在计算机集群上 HDFS 它具有处理超大数据、流体处理的优点,并且可以在廉价的商业服务器上运行。 HDFS 设计的开始是运行在一个大型、廉价的服务器集群上,因此设计认为硬件故障是正常的,这可以确保整个文件系统可用性和可靠性在某些硬件故障的情况下仍然能够得到保证。

      HDFS特点

      HDFS 要实现以下目标:

      兼容廉价的硬件设备

      流数据读写

      大数据集

      简单的文件模型:写一次,读多次

      强大的跨平台兼容性

      HDFS 特别设计在实现上述优点的同时,也具有一定的应用局限性,主要包括以下方面:

      不适合低延误数据访问

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

      不支持多用户写字和任意修改文件

      HDFS相关概念

      1.块

      HDFS 默认一个块 64MB 文件被分成多个块,块作为存储单位

      该块比正常文件系统大得多,可以减少处理成本

      HDFS 抽象块概念的使用可以带来下列明显的好处:

      支持大规模文件存储 一个大的文件可以被分割成多个文件块,而不同的文件块可以被分配到不同的节点,因此文件的大小不受单一节点的存储容量限制,并且可以比网络中的任何节点的存储容量大得多

      简化系统设计 首先,它大大简化了存储管理,因为文件块大小是固定的,所以计算一个节点能存储多少文件块是很容易的;其次,它促进了元数据的管理,元数据不需要与文件块一起存储,也可以由其他系统管理

      适合数据备份 :每个文件块可以冗余地存储在多个节点上,大大提高了系统容忍性和可用性

      2.名节点和数据节点

      名称节点:

      负责管理分布式文件系统命名空间( Namespace ),保留了两个核心数据结构,即 FsImage EditLog

      FsImage 用于维护文件系统树的所有文件和文件夹的元数据
      操作日志文件 EditLog 记录所有创建、删除、重命名文件的操作

      名称节点记录数据节点的位置信息,每个块在每个文件中

      名称节点是负责管理文件系统命名空间和客户端访问文件的中央服务器

      名称节点的启动过程:

      1. 当名称节点开始时,它将 FsImage 文件的内容被载入内存,然后再执行 EditLog 文件中的操作允许存储中的元数据与实际的同步,存储中的元数据存在以支持客户端的读取操作。
      2. 一旦一个文件系统元数据的映射已成功地创建在内存中,则创建了一个新的 FsImage 文件和一个空的 EditLog 文件
      3. 名称节点起来之后, HDFS 更新操作将重写到 EditLog 文件中,因为 FsImage 文件一般都很大( GB 如果所有更新操作都到 FsImage 添加到文件中,会使系统运行非常缓慢,但如果您到 EditLog 这不是在文件中写的,因为 EditLog 每次执行写字操作后,在向客户端发送成功代码之前, edits 文件都需要同步更新

      但是这个过程有一个问题名称节点运行期间 EditLog 不断变大的问题

      • 在运行名称节点时, HDFS 所有更新都直接写到 EditLog 中,久而久之, EditLog 文件将会变得很大
      • 尽管这并不明显地影响名称节点运行的时间,但当名称节点重新启动时,首先需要更改名称节点 FsImage 视频的所有内容都存储在内存中,然后逐一执行 EditLog 中的记录,当 EditLog 当文件非常大时,它会使名称节点开始运行非常缓慢,在此期间 HDFS 系统处于安全模式,无法提供外部写字操作,影响用户使用

      如何解决?答案是: SecondaryNameNode 第二名称节点

      第二名称节点 HDFS 用于在节点中存储名对的架构的组件 HDFS 备份元数据信息,减少重新启动名节点所需的时间。 SecondaryNameNode 一般在机器上单独运行

      这里不过多介绍SecondaryNameNode的工作概述如下:

      第二名节点SecondaryNameNode函数:

      1. 用于在节点中保存名称的双子 HDFS 元数据信息的备份
      2. 定期合并 FsImage EditLog 文件,减少重新启动名节点所需的时间。

      数据节点:

      1. 数据节点是分布式文件系统 HDFS 工作节点负责存储和读取数据,根据客户端或名称节点的调用存储和检索数据,并定期向名称节点发送存储的块列表
      2. 每个数据节点的数据将存储在每个节点上 Linux 文件系统中

      HDFS体系结构

      1.HDFS系统结构概览

      HDFS 采用了主从( Master/Slave )结构模型,一个 HDFS 该群由一个名称节点组成( NameNode )和多个数据节点( DataNode )(如图 3-4 所示)。名称节点是负责管理文件系统命名空间和客户端访问文件的中央服务器。集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读 / 在名称节点统一调用下创建、删除和复制数据块的请求。 每个数据节点的数据实际上是本地存储的 Linux 文件系统中的

      2.HDFS命名空间管理

      1. HDFS 命名空间包含目录、文件和块
      2. HDFS 这是一个传统的层次性文件系统,所以用户可以创建、删除目录和文件、将文件转移到目录之间、重新命名文件等,就像使用正常文件系统一样

      3.通信协议

      1. HDFS 这是一个分布式文件系统,部署在集群中,因此需要通过网络传输大量的数据
      2. 所有的 HDFS 通信协议都是构建在 TCP/IP 协议基础之上的
      3. 客户端通过可配置的端口启动名称节点 TCP 与客户端协议和名称节点连接和交互
      4. 名称节点和数据节点与数据节点协议交互
      5. 通过客户端与数据节点进行交互 RPC Remote Procedure Call 设计上,名称节点不会自启动 RPC 而不是从客户和数据节点来响应 RPC 请求

      4.HDFS系统结构的限制

      HDFS 仅设置一个名称节点,这大大简化了系统设计,但也带来了一些明显的限制,具体地说:

      1 命名空间的限制 :名节点存储在内存中,所以名节点能容纳的对象(文件、块)的数量由内存空间的大小限制。

      2 性能的瓶颈 分布式文件系统总吞吐量仅限于一个名称节点。

      3 隔离问题 由于该群中只有一个名称节点,只有一个名称空间,所以无法分离不同的应用程序。

      4 集群的可用性 一旦这个唯一的名称节点失败, 整个组就会变得无用.

      常见的HDFS壳式命令

      (1)查看帮助
      hdfs dfs -help

      (二)查看当前目录信息
      hdfs dfs -ls /

      (3)上传文件
      hdfs dfs -put / local path /hdfs path

      (4)剪切文件
      hdfs dfs -moveFromLocal a.txt /aa.txt

      (5)下载文件到本地位置
      hdfs dfs -get /hdfs path /local path

      (6)合并下载
      hdfs dfs -getmerge /hdfs path folder / merged files

      (7)创建文件夹
      hdfs dfs -mkdir /hello

      (8)创建多层次文件夹
      hdfs dfs -mkdir -p /hello/world

      (9)移动hdfs文件
      hdfs dfs -mv /hdfs path /hdfs path

      (10)复制HDF文件
      hdfs dfs -cp /hdfs path /hdfs path

      (11)删除 hdfs文件
      hdfs dfs -rm /aa.txt

      (12)删除 hdfs文件夹
      hdfs dfs -rm -r /hello

      (13)查看 hdfs中的文件
      hdfs dfs -cat / file
      hdfs dfs -tail -f / file

      检查在文件夹中有多少文件
      hdfs dfs -count / folder

      (15)查看hdfs的总空间
      hdfs dfs -df /
      hdfs dfs -df -h /

      (16)修改副本数
      hdfs dfs -setrep 1 /a.txt

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

          热门文章

          文章分类