HDFS必须要了解的知识点

举报
huangruie 发表于 2020/02/21 18:22:06 2020/02/21
【摘要】 HDFS 就是Hadoop 分布式文件系统,也是Hadoop的三大重要组件之一,它主要是处理大数据场景下数据的增、删、改、查,因此它的场景特点有:数据量非常大、一般适合存储读写大文件、对于文件数据的可靠性要求较高。HDFS主要的三大组件分别是Client、Namenode、Datanode;其中Client作为HDFS对外提供服务的一个接口,能否让用户的分布式操作和在一台主机操作一样的方便,...
  1. HDFS 就是Hadoop 分布式文件系统,也是Hadoop的三大重要组件之一,它主要是处理大数据场景下数据的增、删、改、查,因此它的场景特点有:数据量非常大、一般适合存储读写大文件、对于文件数据的可靠性要求较高。

  2. HDFS主要的三大组件分别是Client、Namenode、Datanode;其中Client作为HDFS对外提供服务的一个接口,能否让用户的分布式操作和在一台主机操作一样的方便,对于用户来说,分布式系统是无感知的;其次,Client还有数据切片功能,我们在数据写入前通过Client对文件进行分片处理,减轻Namenode的处理数据负担;Namenode是作为元数据(如数据存储位置、分片数量等)的存储方,从Hadoop 2.x开始就不用SecondNamenode ,而采用主备方式 Active Namenode和StandBy Namenode ;Datanode是存储真实数据的节点,一般数据经过分片存储到Datanode之后,Datanode会将数据复制多份(一般三份)同步给其他Datanode ,这样也减轻了Client的写入负担。

  3. 对于读的流程,Client 去Namenode里面去查找元数据,根据元数据信息去各个Datanode里面去读取数据。

  4. 对于写的流程,Client会将数据进行分片,然后将请求传到Namenode ,Namenode 首先会将操作记录在editlog(editlog主要作用是如果Namenode突然故障的话,内存里的操作数据会丢失,它用来将内存里的数据进行持久化操作),同时editlog会被记录到JournalNode(用来同步主备Namenode之间的editlog)中,Standby Namenode会将editlog同步到自己这里,并形成fsImage(整体内存快照);而Client接受到NameNode的分配信息后,会按照NameNode分配的节点进行写操作。

  5. NameNode出现故障后的流程:首先NameNode出现故障,会由Standby Namenode进行接替,同时内存的数据会将最近最近一次存储的fsImage和从Jounalnode同步过来的editlog进行一次合并(这种的好处是不会让editlog无限增大,增加故障后加载读取editlog的负担,这种增量更新也能快速的让Standby Namenode尽快接替工作)

总结:1.HDFS是一个分布式文件系统,简单理解就是多台机器组成的一个文件系统

          2.HDFS有3个重要模块,Client对外提供统一操作接口,NameNode用来协调和管理数据(存储元数据,指导Client如何将分片数据存储在Datanode上),是一              个典型的master-slave架构,Datanode用来真正存储数据

          3.HDFS会对大文件进行切块,并且每个切块会存储备份,保证数据的高可用,适合存储大数据

          4.Namenode通过fsimage和editlog来实现数据恢复和高可用

          5.HDFS不适用于大量小文件存储(因为所有文件的元数据都存在于Namenode中,大量小文件会造成Namenode太大负担),不支持并发写入(HDFS的写流程非常复杂,并发写入会特别复杂,所以不支持),不支持文件随机修改(只支持覆盖,由于文件被切片,需要先找到内容在哪个块,再读入内存,修改完成之后再更新所有备份导致效率低下),查询效率大概在秒级(设计之初是用来做离线计算的,所以查询效率不高)

  


 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。