当前位置:   article > 正文

HDFS分布式文件系统知识总结_hdfs edit数据过大

hdfs edit数据过大

一.分布式文件系统HDFS

随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。
HDFS全称是Hadoop Distributed File System,它是一个分布式文件系统,用于存储文件,通过目录树来定位文件,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色,如NameNode、DataNode,各种角色有各自的功能。HDFS适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。

二.HDFS的特点及适用场景

2.1 HDFS的高容错性

数据自动保存多个副本。HDFS通过增加副本的形式,提高容错性,某一个副本丢失以后,可以自动恢复。HDFS可构建在廉价机器上,通过多副本机制,提高可靠性。

2.2 HDFS的适用场景

HDFS适合处理文件数量非常多,单个文件比较大的数据。HDFS能够处理规模达到GB、TB、甚至PB级别的数据。
也有很多不适合HDFS使用的场合,比如低延时数据访问,毫秒级的存储数据,HDFS是做不到的。如果数据是由大量小文件组成的,那么HDFS也不适用,这是因为HDFS架构的问题,存储大量小文件会占用NameNode大量的内存来存储文件目录和块信息。这样是不可取的,因为NameNode的内存总是有限的;同时小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。除此之外,HDFS还不支持并发写入、文件随机修改。使用HDFS时,一个文件只能有一个写,不允许多个线程同时写;HDFS仅支持数据append(追加),不支持文件的随机修改。

三.HDFS架构

3.1 HDFS集群中的主要角色

HDFS集群中各主机的角色主要有NameNode(nn)和DataNode(dn),Client,和SecondNameNode(2nn)。

NameNode是Master,它是集群的管理者。负责管理HDFS的名称空间、配置副本策略和数据块(Block)映射信息,同时还可以处理客户端读写请求。

DataNode是Slave,NameNode下达命令,DataNode执行实际的操作。DataNode主要负责存储实际的数据块和执行数据块的读/写操作。

Client负责与用户交互,同时它还有其他功能,1.文件切分,文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传;2.与NameNode交互,获取文件的位置信息;3.与DataNode交互,读取或者写入数据;4.提供一些命令来管理HDFS,比如NameNode格式化;4.可以通过Client使用一些命令来访问HDFS,比如对HDFS增删查改操作;

SecondaryNameNode负责辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ;在紧急情况下,可辅助恢复NameNode。

在这里插入图片描述

3.2 NameNode和Secondary Namenode的工作原理

FsImage和Edits

在HDFS集群中,元数据放在内存中,在磁盘中备份元数据的FsImage,防止因为断电,造成元数据丢失。当在内存中的元数据更新时,同时更新FsImage的效率非常低,所以HDFS引入Edits文件(只进行追加操作,效率很高)。每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到Edits中。这样,一旦NameNode节点断电,可以通过FsImage和Edits的合并,恢复元数据。

为了避免长时间添加数据到Edits中,导致文件数据过大,效率降低的问题,HDFS会定期进行FsImage和Edits的合并,合并操作由NameNode完成,由于NameNode还有其他的任务,比如指挥DataNode工作等,这会使NameNode的压力倍增,所以HD

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号