怎么做企业网站运营,网页模板哪个网站可以下载,艾特思成都网站建设,网站建设实验周志与总结目录
一、原理介绍
1.1 Block块
1.2 副本机制
二、fsck命令
2.1 设置默认副本数量
2.2 临时设置文件副本大小
2.3 fsck命令检查文件的副本数
2.4 block块大小的配置
三、NameNode元数据
3.1 NameNode作用
3.2 edits文件
3.3 FSImage文件
3.4 元素据合并控制参数
…目录
一、原理介绍
1.1 Block块
1.2 副本机制
二、fsck命令
2.1 设置默认副本数量
2.2 临时设置文件副本大小
2.3 fsck命令检查文件的副本数
2.4 block块大小的配置
三、NameNode元数据
3.1 NameNode作用
3.2 edits文件
3.3 FSImage文件
3.4 元素据合并控制参数
3.5 SecondaryNameNode的作用
四、HDFS的读写流程
4.1 写入流程
4.2 读取流程 一、原理介绍
1.1 Block块
HDFS分布式文件存储通常是将1个文件拆分成多个部分然后分别发送到不同服务器节点上。 问题不同的文件大小不一粗暴的拆分然后放到服务器不同节点会导致各个部分的大小也不一样不利于统一管理。 解决办法设定统一的管理单位block块。 Block块HDFS最小存储单位每个256MB可以修改
这样可以将文件分成多个Block块不同的Block块存入对应服务器。 举例说明 某个文件大小1G那么理论上可以分为4个Block块。
如果集群有三台服务器那么某台服务器放2个Block块然后其他两台服务器各1个Block块。 1.2 副本机制
如果不备份假如某个块损坏了那么就会导致整个文件不可用。
所以副本机制是保障数据安全的非常重要的机制。 二、fsck命令
2.1 设置默认副本数量 默认的HDFS文件的副本数量就是3个。
当然这个值可以修改具体可以在hdfs-site.xml中配置如下属性
propertynamedfs.replication/namevalue3/value
/property这个属性默认是3一般情况下我们无需主动配置除非需要设置非3的数值
如果需要自定义这个属性请修改每一台服务器的hdfs-site.xml文件并设置此属性。
2.2 临时设置文件副本大小
如果不加限制我们创建的文件或者上传的文件默认副本数就是上面设置的值。
但是单次文件上传我们也可以指定某个文件拥有多少个副本。
hadoop fs -D dfs.replication2 -put test.txt /tmp/对于已经存在HDFS的文件修改dfs.replication属性不会生效如果要修改已存在文件可以通过命令
hadoop fs -setrep [-R] 2 path
如上命令指定path的内容将会被修改为2个副本存储。
-R选项可选使用-R表示对子目录也生效。 2.3 fsck命令检查文件的副本数
我们要查看详细的文件副本数信息可以通过如下命令
hdfs fsck path [-files [-blocks [-locations]]]fsck可以检查指定路径是否正常 -files可以列出路径内的文件状态 -files -blocks 输出文件块报告有几个块多少副本 -files -blocks -locations 输出每一个block的详情 2.4 block块大小的配置
默认情况下block块的大小是256MB当然我们也可以修改。 propertynamedfs.blocksize/namevalue268435456/valuedescription设置HDFS块大小单位是b/description/property三、NameNode元数据
3.1 NameNode作用
NameNode作用管理Block块。
在hdfs中文件是被划分了一堆堆的block块那如果文件很大、以及文件很多Hadoop是如何记录和整理文件和block块的关系呢
答案就在于NameNode。
NameNode基于一批edits和一个fsimage文件的配合完成整个文件系统的管理和维护。
3.2 edits文件
edits文件是一个流水账文件记录了hdfs中的每一次操作以及本次操作影响的文件其对应的block。 3.3 FSImage文件
将全部的edits文件合并为最终结果即可得到一个FSImage文件 小结 NameNode基于edits和FSImage的配合完成整个文件系统文件的管理。
1. 每次对HDFS的操作均被edits文件记录
2. edits达到大小上线后开启新的edits记录
3. 定期进行edits的合并操作
如当前没有fsimage文件 将全部edits合并为第一个fsimage如当前已存在fsimage文件将全部edits和已存在的fsimage进行合并形成新的fsimage
4. 重复123流程
3.4 元素据合并控制参数
对于元数据的合并是一个定时过程基于
dfs.namenode.checkpoint.period默认3600秒即1小时
dfs.namenode.checkpoint.txns默认1000000即100W次事务
只要有一个达到条件就执行。
检查是否达到条件默认60秒检查一次基于
dfs.namenode.checkpoint.check.period默认60秒来决定。 3.5 SecondaryNameNode的作用
对于元数据的合并还记得HDFS集群有一个辅助角色SecondaryNameNode吗 没错合并元数据的事情就是它干的
SecondaryNameNode会通过http从NameNode拉取数据edits和fsimage
然后合并完成后提供给NameNode使用。 四、HDFS的读写流程
4.1 写入流程 1. 客户端向NameNode发起请求
2. NameNode审核权限、剩余空间后满足条件允许写入并告知客户端写入的DataNode地址
3. 客户端向指定的DataNode发送数据包
4. 被写入数据的DataNode同时完成数据副本的复制工作将其接收的数据分发给其它DataNode
5. 如上图DataNode1复制给DataNode2然后基于DataNode2复制给Datanode3和DataNode4
6. 写入完成客户端通知NameNodeNameNode做元数据记录工作 关键信息点 NameNode不负责数据写入只负责元数据记录和权限审批
客户端直接向1台DataNode写数据这个DataNode一般是离客户端最近网络距离的那一个
数据块副本的复制工作由DataNode之间自行完成构建一个PipLine按顺序复制分发如图1给2, 2给3和4 4.2 读取流程 1、客户端向NameNode申请读取某文件
2、 NameNode判断客户端权限等细节后允许读取并返回此文件的block列表
3、客户端拿到block列表后自行寻找DataNode读取即可 关键点 数据同样不通过NameNode提供
NameNode提供的block列表会基于网络距离计算尽量提供离客户端最近的
这是因为1个block有3份会尽量找离客户端最近的那一份让其读取。 最难不过坚持继续下一关~✨