内容回顾
HDFS特性
1.海量数据存储:HDFS可横向扩展,其存储的文件可以支持PB级别数据;
2.高容错性:节点丢失,系统依然可用,通过数据保存多个副本,副本丢失后自动恢复;可构建在廉价(与小型机大型机比较)的机器上,实现线性扩展(随着节点数量的增加,集群的存储能力,计算能力随之增加);
3.大文件存储:HDFS采用数据块的方式存储数据,将一个大文件切分成多个小文件,分布存储;
HDFS缺点
1.不能做到低延迟数据访问:HDFS针对一次性读取大量数据进行了优化,牺牲了延迟性。
2.不适合大量的小文件存储:由于NameNode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于NameNode的内存容量;每个文件,目录数据块的存储信息大约占150个字节。
由于以上两个原因,所以导致HDFS不适合大量的小文件存储;
3.文件的修改:不适合多次写入,一次读取(少量读取);
4.不支持多用户的并行写。
今日内容
HDFS高级命令
HDFS上的某一个特定的目录存储的数据副本,数据量,文件的个数进行设置
这是目录可以存储的文件的数量 hdfs dfsadmin -setQuota 100 lisi (文件夹本身算一个)
清空文件夹内数据量的限制 hdfs dfsadmin -clrQuota /user/root/lisi
查看文件夹的限额数 hdfs dfsadmin -count -q -h /user/root/lisi
HDFS安全模式
安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受数据请求,而不接受删除、修改等变更请求。
HDFS什么时候进入安全模式:在NameNode主节点启动时,HDFS首先进入安全模式。
在安全模式下做了什么:DataNode在启动的时候会向NameNode汇报时可用的block等状态。
查看hdfs在什么模式: hdfs dfsadmin -safemode get
进入hdfs安全模式:hdfs dfsadmin -safemode enter
退出hdfs安全模式:hdfs dfsadmin -safemode leave
Fsimage Edits
Fsimage:记录HDFS文件系统的镜像或者快照(周期性记录)(此文件相对较小)。
Edits:记录客户端进行的所有的增、删、改、追加等操作(没有使用Secondary NameNode之前,不是周期性生成)(此文件相对较大)。
Fsimage Edits作用:用户还原集群上次关闭时的状态。还原时将两个文件加载到内存,检查,合并,最终生成一个Fsimage,原本的Edits失效。
查看Fsimage Edits
在配置文件hdfs-site.xml中记录了两个文件的存放位置。
dfs.namenode.name.dir Fsimage的存放路径
dfs.namenode.edits.dir edits日志的存放地址
将Fsimage转换成xml:hdfs oiv -i fsimage -p XML -o xml
将Edits转换成xml:hdfs oev -i edits -p XML -o xml
SecondaryNameNode工作原理
前提:不使用SNN,日志文件会很大,日志大会导致集群恢复到上关机前的状态花费时间过长,集群长时间处于安全模式,不可用。
目标:加快集群二次启动的速度(减少集群二次启动的时间)
SecondaryNameNode周期性复制NameNode的Fsimage和Edits文件到本机(SecondaryNameNode本机),将两个文件进行合并,最终生成全新的Fsimage,将最新的Fsimage发送回NameNode。
意义:辅助NameNode合并Fsimage和Edits,减少了日志的大小,加快了集群二次启动时间。
SecondaryNameNode自己独立部署在一个节点上,此节点的配置要与NameNode相同或者更高。
什么时候进行文件的拷贝与合并
1.dfs.namenode.checkpoint.period:3600 默认情况下 一小时合并一次
2.dfs.namenode.checkpoint.txns:1000000 100w次此集群操作,进行一次合并