HDFS的相关理论知识

HDFS适用场景
1.海量数据的存储
2.高容错
3.商用廉价的硬件
4.一次写入多次读取
5.存储大文件

HDFS不适用场景
1询时效性要求低延迟的场景
2.大量小文件。
3.需要频繁修改数据的场景
4.多个用户同时操作一个文件

Fsimage,Edits的作用
永久储存HDFS文件系统的镜像和操作日志。集群在二次使用Fsimage,Edits将集群状态恢复到集群关闭前的状态。

secondarynameNode如何辅助管理FSImage与Edits文件
1、 secnonaryNN通知NameNode切换editlog,生成edits.new
2、secondaryNN从NameNode中获得FSImage和editlog(通过http方式),将FSImage载入内存,然后开始合并editlog,合并之后成为新的fsimage
3、secondaryNN将新的fsimage.ckpt发回给NameNode
4、NameNode用新的fsimage.ckpt替换旧的fsimage
5、NameNode用新的edits.new替换旧的edits

SecondaryNamenode存在的意义是什么?
一:进行Fsimage和Edits的合并操作,减少edits日志大小,加快集群的启动速度
二:将Fsimage与Edits进行备份,防止丢失

SecondaryNamenode工作的触发因素有哪些?

1.时间维度,默认一小时触发一次 dfs.namenode.checkpoint.period :3600
2.次数维度,默认100万次触发一次 dfs.namenode.checkpoint.txns : 1000000
3、六十秒判断一次是否达到100W

使用SNN还原NN
1、 记录NN存储FSimage和Edits_Log的路径
2、 记录SNN存储FSimage和Edits_Log的路径
3、 删掉NN的FSimage和Edits_Log模拟数据丢失
4、 将SNN的FSimage和Edits_Log复制到NN的FSimage和Edits_Log对应的目录下,
5、 启动集群进行验证

注意:SNN的FSimage和Edits_Log和NN的FSimage和Edits_Log不要混用

什么时候进入安全模式?
1、在集群重启(二次启动)的时候进入安全模式,状态持续30s
2、人为进入

安全模式有什么特点?
安全模式中只能读取数据,不能修改数据(增、删、改)

在安全模式下集群在做什么?
1、在安全模式下集群在进行恢复元数据,即在合并fsimage和edits log
2、接受datanode的心跳信息,恢复block的位置信息。

被添加到集群的新节点需要做哪些准备?
1.配置JDK
2.配置SSH免密钥
3.关闭防火墙
4.关闭selinux
5.修改主机名
6.修改hosts

添加新节点到集群
a) 在hadoop配置文件路径中创建dfs.hosts(白名单:可以和NN通信的所有节点)文件,并添加可以通信的所有DataNode
b) 在hdfs-site.xml中添加一下配置

dfs.hosts /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/dfs.hosts

c) 刷新NameNode和ResourceManager
i. hdfs dfsadmin –refreshNodes
ii. yarn rmadmin –refreshNodes

d) 启动新节点的DataNode 和NodeManager
sbin/hadoop-daemon.sh start datanode
sbin/yarn-daemon.sh start nodemanager

e) 在Slaves中添加新节点
f) 验证
g) 负载均衡

集群删除节点·
a) 创建黑名单文件 dfs.hosts.exclude 并添加需要退役的节点
b) 在hdfs-site.xml中添加一下配置

dfs.hosts.exclude
/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/dfs.hosts.exclude

c) 刷新集群NameNode 和ResourceManager
i. hdfs dfsadmin -refreshNodes
ii. yarn rmadmin –refreshNodes

d) 在白名单中删掉退役的节点
e) 在slaves文件中删除掉退役的节点
f) 负载均衡