Hadoop的认知block块、hdfs架构、SNN的流程

本文介绍了Hadoop中的block块,默认大小为128MB,探讨了HDFS架构,包括NameNode和DataNode的角色。同时,详细阐述了SecondaryNameNode的工作流程,它是如何协助NameNode进行定期检查点操作的。
部署运行你感兴趣的模型镜像

Hadoop的认知(一)

1.hadoop中block块

block默认大小为128m【hadoop2.0版本以上】,版本以下是 64M。

dfs.blocksize 134217728   //128M  规格
dfs.replication           3  //副本数为三

Default block replication. 块副本数
The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time.

面试题:
1、一个文件160M,块大小128M ,副本数2份,请问:实际存储多少块,实际多少存储空间?
**答:**实际存储多少块: 160/128=1…32M 1+1=2 * 2=4,实际存储空间: 160*2=320m
2、hdfs适合小文件存储吗?为什么?
答:(1)HDFS不适合大量小文件的存储,因namenode将文件系统的元数据存放在内存中,因此存储的文件数目受限于 namenode的内存大小。HDFS中每个文件、目录、数据块占用150Bytes。如果存放的文件数目过多的话会占用很大的内存
(2)HDFS适用于高吞吐量,而不适合低时间延迟的访问。如果同时存入大量的小文件会花费很长的时间
(3) 流式读取的方式,不适合多用户写入,以及任意位置写入。如果访问小文件,则必须从一个datanode跳转到另外一个datanode,这样大大降低了读取性能。

2.HDFS的架构

**NameNode:**管理文件系统命名空间的主服务器和管理客户端对文件的访问组成,如打开,关闭和重命名文件和目录。负责管理文件目录、文件和block的对应关系以及block和datanode的对应关系,维护目录树,接管用户的请求。
1、将文件的元数据保存在一个文件目录树中
2、在磁盘上保存为:fsimage 和 edits
3、保存datanode的数据信息的文件,在系统启动的时候读入内存。
DataNode:(数据节点)管理连接到它们运行的​​节点的存储,负责处理来自文件系统客户端的读写请求。DataNodes还执行块创建,删除。
Client:(客户端)代表用户通过与nameNode和datanode交互来访问整个文件系统,HDFS对外开放文件命名空间并允许用户数据以文件形式存储。用户通过客户端(Client)与HDFS进行通讯交互。

3.SNN的流程

SecondaryNameNode工作原理图:
在这里插入图片描述
SecondaryNameNode主要负责下载NameNode中的fsImage文件和Edits文件,并合并生成新的fsImage文件,并推送给NameNode,工作原理如下:
1、secondarynamenode请求主namenode停止使用edits文件,暂时将新的写操作记录到一个新的文件中;
2、secondarynamenode从主namenode获取fsimage和edits文件(通过http get)
3、secondarynamenode将fsimage文件载入内存,逐一执行edits文件中的操作,创建新的fsimage文件。
4、secondarynamenode将新的fsimage文件发送回主namenode(使用http post).
5、namenode用从secondarynamenode接收的fsimage文件替换旧的fsimage文件;用步骤1所产生的edits文件替换旧的edits文件。同时,还更新fstime文件来记录检查点执行时间。
6、最终,主namenode拥有最新的fsimage文件和一个更小的edits文件。当namenode处在安全模式时,管理员也可调用hadoop dfsadmin –saveNameSpace命令来创建检查点。
创建检查点的触发条件受两个配置参数控制。通常情况下,secondarynamenode每隔一小时(有fs.checkpoint.period属性设置)创建检查点;此外,当编辑日志的大小达到64MB(有fs.checkpoint.size属性设置)时,也会创建检查点。系统每隔五分钟检查一次编辑日志的大小。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值