大数据存储HDFS
HDFS主要有NameNode和多个datanode节点组成。
架构模型:
HDFS的设计思想
数据存储:元数据(metadata)+应用数据(applicationdata)
服务节点:名字节点(NameNode)+数据节点(DataNode)
服务架构:主从结构(Master/Slave), NameNode是主节点,单个,专门存储元数据,DataNode是从节点,多个,分布式存储应用数据
HDFS的数据存储
HDFS把数据分为元数据和应用数据(用户数据)。
元数据metadata,是描述数据的数据,指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode),在分布式文件系统中,元数据
不仅包括文件在磁盘的位置,还有磁盘的网络位置。
应用数据userdata,指普通文件中的实际数据。
/*用户需要访问应用数据时,首先得到它的元数据,才能定位到它的位置,再去得到应用数据。*/
HDFS以(block)块的方式进行组织,block大小可以从hdfs配置文件中更改dfs.blocksize;hadoop1的block默认是64MB,hadoop2则默认大小128MB;一个文件被分成多个块进行存储,如果一个文件小于一个块,也要使用整个块的空间。
hadoop2默认3个副本进行备份,即使用3倍空间来实现数据高容错性,hadoop3采用纠删码来实现数据冗余性,即1个数据副本+0.5个冗余编码,使用1.5倍空间来实现数据高容错性
HDFS的主要组成
NameNode,主节点,HDFS的全局管理,管理数据块映射,处理客户端的读写请求等
DataNode,从节点,负责存储数据块block;执行数据块的读写操作
SecondaryNameNode,不是NameNode的备份,是NameNode的辅助结点
NameNode,简称NN
在HDFS中NameNode是Masternode,只有一个,准确来说NameNodeActive只有一个,还有NameNodeStandby
从操作系统来看,NameNode是HDFS的主进程,NameNode开启即是HDFS的开始,NameNode关闭就是HDFS的停止
所有的元数据都存储在NameNode中,NameNode通过元数据管理整个HDFS,元数据保存在内存中
Namenode的主要功能
管理HDFS命名空间(文件、block、datanode之间的映射关系),实现海量数据的分布式文件管理
应答客户端存取,具体存取由DataNode负责,大大减轻NameNode的负担
协调整个HDFS存取,NameNode控制一切数据存取,而DataNode仅是一个执行者,并不知道文件的存在,全部由NameNode协调
NameNode的元数据管理
NN是HDFS的大脑,维护着整个文件系统的目录树,以及目录树里所有的文件和目录。这些信息以两个文件存储在文件系统
文件系统镜像FSImage(FileSystemImage),元数据的完整快照(目录结构),每次NN启动都会加载最新的FSImage。
编辑日志(EditLog),对FSImage的所有增加和删除操作都以日志形式保存
HDFS是一个大型的文件系统,频繁的执行写操作,会使系统运行极为缓慢。每个写操作不会立即更新FSImage,NN只将改动内容预写日志EditLog中
实际上FSImage是文件系统元数据的一个checkpoint,需要NN周期性地根据EditLog内容更新FSImage
2NN就是辅助NN,根据EditLog内容更新FSImage,把新的FSImage返回给NN
Datanode,简称DN
在HDFS中,DataNode是slavenodes,可以有多个
从操作系统来看,DataNode是slave进程,接受Master进程的管理
应用数据分布式存储在DataNode上
DataNode功能
DataNode处理客户端对文件的简单的读写请求,DD中的数据会被保存在各自节点的本地Linux文件系统中
DataNode会向NameNode周期性发送心跳信息来报告HDFS是否正常。默认情况下,这个周期是3秒
SecondaryNameNode,简称2NN
SecondaryNameNode不是NameNode的备份,它是NameNode的辅助进程
2NN是辅助NN,把FSImage和Editlog进行整理和合并的进程
SecondaryNameNode的功能
2NN定期从NN中获取两个文件editlog和fsimage,由2NN生成fsimage.chkpoint,把fsimage.chkpoint覆盖NN的fsimage
HDFS的关键特性
HDFS HA,高可用性(高可靠性),解决单点故障问题
HDFS Federation,联邦机制,解决水平扩展问题
Rack Awareness,机架感知(副本放置策略),优化数据传输的带宽消耗
数据存储策略配置,提升存储设备的性价比