精华内容
下载资源
问答
  • HDFS存储机制

    2021-08-03 16:02:10
    System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。集群不一定是分布式的,但是分布式一定是集群。 HDFS 的设计...

    1.HDFS 概念

    • HDFS(Hadoop Distributed File
      System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。集群不一定是分布式的,但是分布式一定是集群。
    • HDFS 的设计适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据 分析,并不适合用来做网盘应用。

    2.HDFS 优缺点

    1.优点

    (1) 高容错性

    a) 数据自动保存多个副本。它通过增加副本的形式,提高容错性;
    b) 某一个副本丢失以后,它可以自动恢复。

    (2) 适合大数据处理

    a) 数据规模:能够处理数据规模达到 GB、TB、甚至 PB 级别的数据。
    b) 文件规模:能够处理百万规模以上的文件数量,数量相当之大。

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

    2.缺点

    (1) 不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
    (2) 无法高效的对大量小文件进行存储。

    a) 存储大量小文件的话,它会占用 NameNode 大量的内存来存储文件、目录和块信
    息。这样是不可取的,因为 NameNode 的内存总是有限的。
    b) 小文件存储的寻址时间会超过读取时间,它违反了 HDFS 的设计目标。

    i. 寻址时间,目前技术水平在 10ms 左右
    ii. 传输
    寻址时间/传输时间=1%,传输时间 1000ms=1s,磁盘传输速度 100M/S,计算机是2的n次方,所以 hadoop2.x 默认块的大小为 128M。
    
    (3) 不支持并发写入、文件随机修改。

    a) 一个文件只能有一个写,不允许多个线程同时写;
    b) 仅支持数据 append(追加),不支持文件的随机修改。

    3.HDFS 组成架构

    架构主要由四个部分组成,分别为 HDFS Client、NameNode、DataNode 和 Secondary
    NameNode。下面我们分别介绍这四个组成部分。

    (1) Client:就是客户端。

    a) 文件切分。文件上传 HDFS 的时候,Client 将文件切分成一个一个的 Block,然后
    进行存储;
    b) 与 NameNode 交互,获取文件的位置信息;
    c) 与 DataNode 交互,读取或者写入数据;
    d) Client 提供一些命令来管理 HDFS,比如启动或者关闭 HDFS;
    e) Client 可以通过一些命令来访问 HDFS。

    (2) NameNode:就是 Master,它是一个主管、管理者。

    a) 管理 HDFS 的名称空间;namespace
    b) 管理数据块(Block)映射信息;
    c) 配置副本策略(默认):3

         <property><!-- 指定datanode存储block的副本数量,最小值为3,否则会影响到数据的可靠性 -->
           <name>dfs.replication</name>
           <value>3</value>
         </property>
    

    d) 处理客户端读写请求。

    (3) DataNode:就是 Slave。NameNode 下达命令,DataNode 执行实际的操作。

    a) 存储实际的数据块;
    b) 执行数据块的读/写操作。

    (4) SecondaryNameNode:并非 NameNode 的热备。当 NameNode 挂掉的时候,它并不

    能马上替换 NameNode 并提供服务。
    a) 辅助 NameNode,分担其工作量;
    b) 定期合并 fsimage 和 Edits,并推送给 NameNode;
    c) 在紧急情况下,可辅助恢复 NameNode。

    4.HDFS存储

    在hdfs中所有的文件都是以 block 块的方式存放在 HDFS 文件系统当中, 在 Hadoop1当中, 文件的 block 块默认大小是 64M, hadoop2 当中, 文件的 block块大小默认是 128M, block 块的大小可以通过 hdfs-site.xml当中的配置文件进行指定:

    <property>
            <name>dfs.block.size</name>
            <value>块大小 以字节为单位</value>//只写数值就可以 默认:134217728B,即128MB
    </property>
    
    • 引入块机制的好处:
      一个文件有可能大于集群中任意一个磁盘,使用块抽象而不是文件可以简化存储子系统
      块非常适合用于数据备份进而提供数据容错能力和可用性
    • 块缓存:
      通常 DataNode 从磁盘中读取块, 但对于访问频繁的文件,其对应的块可能被显式的缓存在 DataNode 的内存中, 以堆外块缓存的形式存在.默认情况下,一个块仅缓存在一个 DataNode的内存中,当然可以针对每个文件配置 DataNode 的数量.作业调度器通过在缓存块的 DataNode 上运行任务,可以利用块缓存的优势提高读操作的性能.

    例如一个文件 130M, 会被切分成 2 个 block 块, 保存在两个 block 块里面,实际占用磁盘 130M 空间, 而不是占用256M的磁盘空间,事实上,128只是个数字,数据超过128M,便进行切分,如果没有超过128M,就不用切分,有多少算多少,不足128M的也是一个块。这个块的大小就是100M,没有剩余28M这个概念。

    文件不够一个块的大小时,也单独占用一个块,两个文件不会共用一个块。
    展开全文
  • HDFS存储机制

    千次阅读 2019-04-26 17:13:21
    HDFS存储机制,包括HDFS的写入过程和读取过程两个部分:

    HDFS存储机制,包括HDFS的写入过程和读取过程两个部分:
    1、写入过程:
    1)客户端向namenode请求上传文件,namenode检查目标文件是否已存在,父目录是否存在。

    2)namenode返回是否可以上传。

    3)客户端请求第一个 block上传到哪几个datanode服务器上。

    4)namenode返回3个datanode节点,分别为dn1、dn2、dn3。

    5)客户端请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成

    6)dn1、dn2、dn3逐级应答客户端

    7)客户端开始往dn1上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,dn1收到一个packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答

    8)当一个block传输完成之后,客户端再次请求namenode上传第二个block的服务器。(重复执行3-7步)

    2、读取过程:

    1)客户端向namenode请求下载文件,namenode通过查询元数据,找到文件块所在的datanode地址。

    2)挑选一台datanode(就近原则,然后随机)服务器,请求读取数据。

    3)datanode开始传输数据给客户端(从磁盘里面读取数据放入流,以packet为单位来做校验)。

    4)客户端以packet为单位接收,先在本地缓存,然后写入目标文件。

    展开全文
  • HDFS提供的客户端Client,向远程的Namenode发起RPC请求。 2. Namenode会检查要创建的文件是否已经存在,创建者是否有权限进行操作。 成功则会文件创建一个记录,否则会让客户端抛出异常。 3. (a)当客户端C....

    转载于作者:tracy_668 链接:https://www.jianshu.com/p/12047b780595

     

    写流程

    (7步)

    1.

    HDFS提供的客户端Client,向远程的Namenode发起RPC请求。

     

    2.

    Namenode会检查要创建的文件是否已经存在,创建者是否有权限进行操作。

    成功则会文件创建一个记录,否则会让客户端抛出异常。

     

    3.

    (a)当客户端Client开始写入文件的时候,客户端会将文件切分成多个packets,并在内部以数据队列“data queue"形式管理这些packets。

    (b)然后客户端Client向Namenode申请blocks,并获取用来存储replications的合适的datanode列表。

    namenode记录数据位置信息(元数据),告诉client存哪。

    列表的大小根据Namenode中的replication值而定。

     

    4.

    开始以pipeline的形式将所有packet按副本数replications写入。

    客户端Client把packet以流的方式写入第一个datanode,该datanode把该packet存储之后,再将其传递给在此pipeline的下一个datanode,直到最后一个datanode(这几个datanode是packets的副本存放节点),这种写数据的方式呈流水线形式。

     

    5.

    (a)最后一个datanode(最后一个packet副本)成功存储之后会返回一个ack packet(确认队列),通过pipeline传递给客户端Client。

    (b)在客户端的开发库内部维护着“ack queue”,客户端Client成功收到datanode返回的ack packet后会从“ack queue”移除相应的 packet。

    (一个pipeline是针对一个block的,如图2中第5步建立传输通道所示)

     

    6.

    如果传输过程中, 有某个datanode出现了故障, 那么当前的pipeline会被关闭(应该是针对该故障datanode会关闭), 出现故障的datanode会从当前的pipeline中移除。

    剩余的block会继续以pipeline的形式传输,同时Namenode会分配一个新的datanode, 保持replications设定的数量。

     

    7.

    客户端完成数据的写入后,会对数据流调用close(),关闭数据流。

    namenode将元数据同步到内存中。

     

    只要写入了dfs.replication.min的复本数( 默认为1),写操作就会成功, 并且这个块可以在集群中异步复制, 直到达到其目标复本数(replication的默认值为3),因为namenode已经知道文件由哪些块组成, 所以它在返回成功前只需要等待数据块进行最小量的复制。

     

    读流程

    (5步)

    1.

    客户端(client)首先调用FileSystem的open()函数打开它想要打开的文件。

    (对于HDFS来说就是通过DistributedFileSystem实例通过RPC调用请求元数据节点,得到组成文件的前几个数据块信息)

    对于每一个数据块,元数据节点返回保存数据块的datanode地址(是分批次获取的,每次是几个数据块)这些datanode会按照与客户端的接近度(距离)来排序。

    (如果客户端节点自己就是存放了目标数据块的datanode,就优先从本节点读取)

     

    2.

    DistributedFileSystem返回FSDataInputStream(支持文件seek的输入流)给客户端,客户端就能从流中读取数据了,FSDataInputStream中封装了一个管理了datanode与namenode IO的DFSInputStream。

     

    3.

    客户端调用read()方法开始读取数据,存储了文件前几个块的地址的DFSInputStream,就会链接存储了第一个块的第一个(最近的)datanode,然后DFSInputStream就通过重复调用read()方法,数据就从datanode流向了客户端。

    当该datanode中最后一个快的读取完成了,DFSInputStream会关闭与datanode的连接,然后为下一块寻找最佳节点。

    (这个过程对客户端是透明的,在客户端那边就像是读取了一个连续不断的流)

     

    4.

    块是顺序读取的,通过DFSInputStream在datanode上打开新的连接去作为客户端读取流,同样它也会请求namenode来获取下一批所需要的块所在的datanode地址。

    当客户端完成了读取就在FSDataInpuStream上调用close()方法结束整个流程。

     

    5.

    在读取过程中,如果FSDataInputStream在和一个datanode进行交流时出现了一个错误,它就去试一试下一个最接近的块,同时也会记住刚才发生错误的datanode,之后便不会再在这个datanode上进行没必要的尝试。

    DFSInputStream 也会在 datanode 上传输出的数据上核查检查数(checknums)。

    如果损坏的块被发现了,DFSInputStream 就试图从另一个拥有备份的 datanode 中去读取备份块中的数据。

     

    在这个设计中一个重要的方面是客户端直接从datanode上检索数据,并通过namenode指导来得到每一个块的最佳datanode。这种设计HDFS拓展大量的并发客户端,因为数据传输只是与集群上的所有datanode展开,namenode仅仅只需要服务于获取块位置的请求。而块位置信息是存放在内存中,所以效率很高,如果不这样设计,随着客户端数据量的增加,数据服务就会很快成为一个瓶颈 。

    展开全文
  • Hdfs存储机制

    2017-06-14 09:53:14
    1. HDFS开创性地设计出一套文件存储方式,即对文件分割后分别存放; 2. HDFS将要存储的大文件进行分割,分割后存放在既定的存储块(Block)中,并通过预先设定的优化处理,模式对存储的数据进行预处理,从而解决了...

    1. HDFS开创性地设计出一套文件存储方式,即对文件分割后分别存放

    2. HDFS将要存储的大文件进行分割,分割后存放在既定的存储块(Block)中,并通过预先设定的优化处理,模式对存储的数据进行预处理,从而解决了大文件储存与计算的需求;

    3. 一个HDFS集群包括两大部分,即NameNodeDataNode。一般来说,一个集群中会有一个NameNode和多个DataNode共同工作;

    4. NameNode是集群的主服务器,主要是用于对HDFS中所有的文件及内容数据进行维护,并不断读取记录集群中DataNode主机情况与工作状态,并通过读取与写入镜像日志文件的方式进行存储;

    5. DataNodeHDFS集群中担任任务具体执行角色,是集群的工作节点。文件被分成若干个相同大小的数据块,分别存储在若干个DataNode上,DataNode会定期向集群内NameNode发送自己的运行状态与存储内容,并根据NameNode发送的指令进行工作;

    6. NameNode负责接受客户端发送过来的信息,然后将文件存储位置信息发送给提交请求的客户端,由客户端直接与DataNode进行联系,从而进行部分文件的运算与操作。

    7. BlockHDFS的基本存储单元,默认大小是64M

    8. HDFS还可以对已经存储的Block进行多副本备份,将每个Block至少复制到3个相互独立的硬件上,这样可以快速恢复损坏的数据

    9. 用户可以使用既定的API接口对HDFS中的文件进行操作;

    10. 当客户端的读取操作发生错误的时候,客户端会向NameNode报告错误,并请求NameNode排除错误的DataNode后后重新根据距离排序,从而获得一个新的DataNode的读取路径。如果所有的DataNode都报告读取失败,那么整个任务就读取失败;

    11. 对于写出操作过程中出现的问题,FSDataOutputStream并不会立即关闭。客户端向NameNode报告错误信息,并直接向提供备份的DataNode中写入数据。备份DataNode被升级为首选DataNode,并在其余2DataNode中备份复制数据。NameNode对错误的DataNode进行标记以便后续对其进行处理

    展开全文
  • hadoop hdfs存储原理

    千次阅读 2017-08-25 10:19:43
    hadoop的hdfs存储原理,hdfs的存储原理,hdfs的底层存储原理
  • Hadoop中HDFS存储机制

    万次阅读 2016-06-29 17:12:16
    Hadoop中HDFS存储机制 HDFS(Hadoop Distributed File System)是Hadoop分布式计算中的数据存储系统,是基于流数据模式访问和处理超大文件的需求而开发的。下面我们首先介绍HDFS中的一些基础概念,然后介绍HDFS中...
  • HDFS存储: put: 1 file ==> 1...n block ==> 存放在不同的节点上的 get: 去 n node上查找这个file对应的元数据信息 block size是固定的128M大小 这个jdk文件的大小是180M,所以它是会被拆成...
  • HDFS将硬件出错视为一种常态,而不是异常,故而HDFS采用了多种机制来保证存储文件的完整性;如在hadoop2.x中采用文件副本、hadoop3.x采用纠删码机制。在此以hadoop2.x为例结合图解论述HDFS的文件读写机制。...
  • HDFS 文件读写存机制

    2021-01-26 16:12:50
    文章目录HDFS 文件(读写存)机制1.文件存储副本放置策略(以块为单位放置,而不是文件为单位)2.文件读取机制注意:3.文件写入机制1.Packet,chunk2.写入机制3.注意:4.数据写入期间datanode发生故障参考:《Hadoop ...
  • 如上图所示,HDFS也是按照Master和Slave的结构。分NameNode、SecondaryNameNode、DataNode这几个角色。  NameNode:是Master节点,是大领导。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称...
  • HDFS存储和读写原理

    2018-03-31 15:36:05
    1.1 HDFS写流程1. 使用HDFS提供的客户端开发库Client,向远程的Namenode发起RPC请求;Namenode会检查要创建的文件是否已经存在,创建者是否有权限进行操作,成功则会为文件创建一个记录(账本上记录一条),否则会让...
  • HDFS(Hadoop Distributed File System)是Hadoop分布式计算中的数据存储系统,是基于流数据模式访问和处理超大文件的需求而开发的。下面我们首先介绍HDFS中的一些基础概念,然后介绍HDFS中读写操作的过程,最后分析...
  • 首先从数据采集处&gt;存到HDFS上, 解决数据存不下问题&...副本机制 解决上传下载效率低下问题&gt;&gt;&gt;文件切块 HDFS对数据文件进行split,切成的block大小hadoop1.X 默认64M,2.X...
  • Hadoop中的HDFS存储机制

    千次阅读 2017-12-20 16:07:09
    Hadoop中HDFS存储机制HDFS(Hadoop Distributed File System)是Hadoop分布式计算中的数据存储系统,是基于流数据模式访问和处理超大文件的需求而开发的。下面我们首先介绍HDFS中的一些基础概念,然后介绍HDFS中...
  • hdfs工作机制及读写数据简要流程图

    千次阅读 2017-02-26 09:44:28
    hdfs工作机制及读写数据简要流程图
  • HDFS异构存储机制

    2019-05-24 22:02:43
    3.HDFS存储策略(异构存储) 4.HDFS异构存储原理 5.HDFS异构存储的使用 一,异构存储介绍 异构存储是Hadoop在2.6.0版本中引入了一个新特性,HBase也从1.1.0开始支持WAL的异构存储策略。 异构存储可以根据各个...
  • HDFS副本机制

    千次阅读 2017-12-19 14:03:34
    首先要说起hdfs的由来,hdfs由谷歌最先研发,其需求是单独一台计算机所能存储的空间是有限的,而随着计算机存储空间的加大,其价格是呈几何倍的增长,所以就有了hdfs的产生,hdfs架构在相对廉价的计算机上,以分布式...
  • HDFS存储原理

    2018-10-08 21:59:00
    2019独角兽企业重金招聘Python工程师...:这是我对 HDFS 存储机制的理解,由于刚开始接触 HDFS,因此文中可能会有错误,欢迎指正。 转载于:https://my.oschina.net/firepation/blog/2231607
  •  针对HDFS 不能彻底删除用户存储的数据的缺陷,文中设计了HDFS 的多安全级数据销毁机制,以达到数据的安全销毁。  3. 1 数据销毁技术  目前的数据销毁技术大致可以分两类:硬销毁技术和软销毁技术 .硬销毁技术...
  • hdfs工作机制

    2017-11-29 14:39:20
    Hadoop学习笔记(二)hdfs工作机制 一.HDFS的重要特性  1. HDFS是一个文件系统,用于存储和管理文件,通过统一的命名空间(类似于本地文件系统的目录树)。它是分布式的,服务器集群中各个节点都有自己的角色和...
  • HDFS容错机制

    千次阅读 2020-03-01 11:12:14
    对于廉价机器而言,出现网络故障、节点失效、数据损坏现象的频率并不低,所以在故障之后如何进行数据恢复和容错处理是至关重要的,HDFS提供了完善的容错机制,使得它成为一个高度容错性和高吞吐量的海量数据存储解决...
  • HDFS存储文件的特点

    千次阅读 2019-09-11 11:47:57
    HDFS(Hadoop File System),是Hadoop的分布式文件存储系统 ,但其本质上仍然是一个文件的存储系统,所以文件存储的命令大多数可以在HDS上直接使用。所以HDFS最主要的特点是存储的方式上: 1.HDFS是对数据进行分块...
  • HDFS四大机制之心跳机制

    千次阅读 2019-09-26 09:33:23
     namenode存储元数据的时候,按照存储空间:  1.硬盘  /home/hadoop/data/hadoopdata/name/current  包含3部分内容:  1)抽象目录树  2)数据和块的对应关系  3)数据块的存储位置  2.内存:  ...
  • 再理解HDFS存储机制

    2017-07-14 09:42:00
    再理解HDFS存储机制   1. HDFS开创性地设计出一套文件存储方式。即对文件切割后分别存放; 2. HDFS将要存储的大文件进行切割,切割后存放在既定的存储块(Block)中,并通过预先设定的优化处理,模式对...
  • hadoop HDFS存储原理

    万次阅读 多人点赞 2016-08-09 11:28:40
    根据Maneesh Varshney的漫画改编,以简洁易懂的漫画形式讲解HDFS存储机制与运行原理。 一、角色出演 如上图所示,HDFS存储相关角色与功能如下: Client:客户端,系统使用者,调用HDFS API操作...
  • HDFS缓存机制

    万次阅读 2016-03-13 14:41:07
    同样在HDFS中,也存在着一套完整的缓存机制,但可能使用了解此机制的人并不多,因为这个配置项平时大家比较少用而且HDFS中默认是关闭此功能的.至于是哪个配置项呢,在后面的描述中将会给出详细的分析. HDFS缓存疑问点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,481
精华内容 21,792
关键字:

hdfs存储机制