Hadoop3教程(二):HDFS的定义及概述

这篇具有很好参考价值的文章主要介绍了Hadoop3教程(二):HDFS的定义及概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(40)HDFS产生的背景和定义

随着实际生产环境中的数据越来越大,在一台服务器上无法存储下所有的数据,那么就要把数据分散到多台服务器的磁盘里存放。但是像这样做跨服务器的数据管理和维护是很难的,所以就迫切需要一种方式,来协调管理多台机器上的文件,这就是分布式文件管理系统。

HDFS就是最有名气的一种分布式文件管理系统,除此之外还有Google的GFS、淘宝自研的TFS等。

HDFS(Hadoop Distributed File System),就是分布式文件管理系统的一种,它本质上是一个文件系统。

它可以分布式的(在多台服务器节点上),以目录树的形式来存储和定位文件。

跟windows的NTFS文件系统是一样的。

HDFS的使用场景:适合一次写入,多次读出的场景。如果是需要频繁update的场景,其实是不适合HDFS。当然,只是不适合,不是不能用,完全可以用delete + 重新insert的方式,来实现update。

(41)HDFS的优缺点

HDFS的优点:

1) 高容错性

  • 自动保存多个副本(多个节点保存多个副本)
  • 副本丢失后,可以自动恢复

2) 适合处理大数据(只要资源够,处理上限很高)

  • 能够处理PB级别的数据;
  • 文件数量,百万级以上;

3) 可以构建在廉价的机器上,通过多副本机制,提高可靠性。

HDFS的缺点:

1) 低延时数据访问不合适,毫秒级存储数据,那是不可能的;

2)无法高效的存储大量的小文件:

  • 小文件会占用NameNode大量的内存来存储文件目录和块信息。每个文件都要在NameNode中创建一个保存元数据的地方(索引),这个大小是固定的,150byte,即使是小文件也是,所以大量小文件很容易就把NameNode占满。
  • 小文件过多的话,寻址时间会超过读取时间,违反HDFS的设计目标;

3) 不支持并发写入、文件随机修改

  • 一个文件只能有一个写,不允许多线程一起写;
  • 仅支持数据的追加,不支持随机修改;

(42)HDFS组成架构

HDFS里主要涉及4个组件:

  • NameNode
  • DataNode
  • Client
  • SecondaryNameNode

1)NameNode(NN),是HDFS里的Master,管理者,主要作用:

  • 管理HDFS的名称空间
  • 配置副本策略
  • 管理数据块(block)的映射信息(可以理解成目录),默认情况下,一个文件块是128M,一条目录信息(一个文件块的元数据)是150Byte;
  • 处理客户端读写请求;

2)DataNode,就是Slave。NameNode负责下命令,DataNode负责实际执行。

  • 存储实际的数据块;
  • 执行数据块的读写操作;

3)Client,就是客户端

  • 文件切分。文件在上传HDFS的时候,Client将文件切分成一个一个的块。这个块的大小,是由NameNode规定的,默认情况下,NN规定一个文件块是128M,企业中通常使用128M或者256M。
  • 与NameNode交互,获取文件位置信息;
  • 与DataNode交互,读写数据;
  • 可以提供一些命令来管理HDFS,比如NN格式化;
  • 可以提供命令来访问HDFS,执行增删改查;

4)Secondary NameNode,即2NN,并非是NameNode的热备份,当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。所以实际工作中,一般不会用2NN来做容灾,而是采用NameNode的高可用模式。

  • 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode;
  • 在紧急情况下,可以辅助恢复NameNode,但并不完全一致,NN始终保留有2NN所不知道的信息(非实时同步);

这里的紧急恢复,其实就是把2NN里保存的Fsimage和Edits复制到NameNode下,但毕竟有版本差。

(43)HDFS文件块大小(面试重点)

HDFS中的文件在物理上是分块(Block)储存的,块的大小可以通过参数dfs.blocksize来规定,可以在hdfs-default.xml中查看这个参数。

Hadoop1.x中块的默认大小是64M,而2.x和3.x版本中是128M。

这个blocksize代表着块的最大大小,如果数据只有1KB,那形成的块也只有1KB。

有几个时间的概念需要介绍下:

  • 寻址时间:即查找到目标block的时间;

  • 传输时间:数据拷贝或者写入的时间。

一般来讲,寻址时间为传输时间的1%时,整个过程是最佳状态。至于为什么,不知道,教程说是专家说的

比如说,寻址时间为10ms,则传输时间为1s时,整个过程处于最佳状态。

传输时间主要依赖于磁盘的传输速率,目前普通磁盘的传输速率普遍为100MB/s,固态的话,可能能达到200M~300M。

所以这里有个讲究,磁盘的传输速率,对块大小的设置其实是有影响的,比如说这里,普通磁盘是100MB/s,为了实现1s左右的传输时间,blocksize一般设置为128M;如果是固态磁盘200M~300M,blocksize一般设置为256M。

据教程里介绍,128M和256M是目前企业中的主流块大小,一般中小型企业用128M,大型企业会采用256M。

那为什么块的大小,不能设置的太小,也不能设置的太大呢?

在源数据大小一定的情况下

  • 如果HDFS的块设置的太小:

会增加寻址时间,程序会花很长的时间在找块的开始位置上。

  • 如果块大小设置的太大:

极端点,比如说所有数据都在一个块里,定位块的时间是降低了,但是针对这块数据的磁盘IO会明显变大,极大影响数据处理的速度。因为这样子失去了并行处理的优势,改成串行处理了。

按我理解就是,以前可以多个进程读多个块,现在是只有一个块,只能一个进程,肯定很慢,hdfs的分块也失去了意义。

总结:HDFS块的大小主要取决于磁盘的传输速率。所以说磁盘IO才是制约速度的那块短板。文章来源地址https://www.toymoban.com/news/detail-725453.html

参考文献

  1. 【尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放】

到了这里,关于Hadoop3教程(二):HDFS的定义及概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HDFS编程实践(Hadoop3.1.3)

    1.目录操作 在HDFS中为hadoop用户创建一个用户目录 显示HDFS中与当前用户hadoop对应的用户目录下的内容: 创建一个input目录: 可以使用rm命令删除一个目录 上面命令中,“-r”参数表示如果删除“input”目录及其子目录下的所有内容,如果要删除的一个目录包含了子目录,则必

    2023年04月13日
    浏览(29)
  • Hadoop3.x基础(2)- HDFS

    来源:B站尚硅谷 1)HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。 HDFS只是分布式文件管理系统中的一种

    2024年02月22日
    浏览(32)
  • springboot集成hadoop3.2.4HDFS

    记录springboot集成hadoop3.2.4版本,并且调用HDFS的相关接口,这里就不展示springboot工程的建立了,这个你们自己去建工程很多教程。 完整pom配置如下: 加入以下配置 name-node是这个服务的地址,可以在hadoop的配置文件中找,或者直接看hadoop集群namenode网页也可以看到端口号。 我

    2024年02月07日
    浏览(31)
  • 大数据技术之Hadoop(HDFS)

    1)HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是 分布式文件管理系统 。HDFS只是分布式文件管理系统中的一种。 2)HDFS定义

    2024年02月04日
    浏览(30)
  • 大数据技术之Hadoop(HDFS)——超详细

    1.1 HDFS产出背景及定义 1)HDFS产生背景 先给大家介绍一下什么叫HDFS,我们生活在信息爆炸的时代,随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这

    2024年02月03日
    浏览(40)
  • Hadoop大数据技术-通过shell命令访问HDFS

    HDFS shell大致可以分为操作命令、管理命令、其他命令三类。 注意:当命令以“$”开头时,当前用户为普通用户;以“#”开头时,当前用户为root用户。 操作命令是以“ hdfs dfs ”开头的命令,用户可以通过执行这些命令,完成对文件的查找、上传、删除等操作。 [-p]:表示如

    2023年04月11日
    浏览(31)
  • 大数据技术之Hadoop:HDFS集群安装篇(三)

    目录 分布式文件系统HDFS安装篇 一、为什么海量数据需要分布式存储 二、 分布式的基础架构分析 三、 HDFS的基础架构 四 HDFS集群环境部署 4.1 下载安装包 4.2 集群规划 4.3 上传解压 4.4 配置HDFS集群 4.5 准备数据目录 4.6 分发hadoop到其他服务器 4.7 配置环境变量 4.8 为普通用户授

    2024年02月14日
    浏览(35)
  • 大数据技术之Hadoop:使用命令操作HDFS(四)

    目录 一、创建文件夹 二、查看指定目录下的内容 三、上传文件到HDFS指定目录下 四、查看HDFS文件内容 五、下载HDFS文件 六、拷贝HDFS文件 七、HDFS数据移动操作 八、HDFS数据删除操作 九、HDFS的其他命令 十、hdfs web查看目录 十一、HDFS客户端工具 11.1 下载插件 11.2 本地安装Had

    2024年02月09日
    浏览(33)
  • 大数据技术之Hadoop:HDFS存储原理篇(五)

    目录 一、原理介绍 1.1 Block块 1.2 副本机制 二、fsck命令 2.1 设置默认副本数量 2.2 临时设置文件副本大小 2.3 fsck命令检查文件的副本数 2.4 block块大小的配置 三、NameNode元数据 3.1 NameNode作用 3.2 edits文件 3.3 FSImage文件 3.4 元素据合并控制参数 3.5 SecondaryNameNode的作用 四、HDFS的读

    2024年02月09日
    浏览(27)
  • HDFS Hadoop分布式文件存储系统整体概述

    整体概述举例: 包括机架 rack1、rack2 包括5个Datanode,一个Namenode( 主角色 )带领5个Datanode( 从角色 ),每一个rack中包含不同的block模块文件为 分块存储模式 。块与块之间通过replication进行 副本备份 ,进行冗余存储,Namenode对存储的 元数据进行记录 。该架构可以概括为一个 抽象

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包