文章目录
- HDFS
- 一、元数据
- 1.元数据安全
- 2.SecondaryNameNode
- 3.元数据查看
- 二、辅助功能
- 1.Distcp
- 2.Archive
- 3.Snapshot
- 三、Hadoop HA和Hadoop Federation
- 1.HA
- 2.Federation
HDFS
一、元数据
1.元数据安全
1.元数据的产生
第一次格式化namenode的时候,产生磁盘元数据:fsimage文件
2.HDFS元数据存储的位置
磁盘:fsimage
内存:NameNode维护的内存元数据
3.如何解决NameNode从文件中读写元数据性能差的问题?
每次NameNode启动时会读取fsiamge文件加载到内存中
4.HDFS的元数据怎样保证安全?
将内存元数据的变化写入edits文件,每次NameNode启动将fsimage与edits文件合并,生成原来的元数据
2.SecondaryNameNode
1.Secondary NameNode功能
帮助NameNode阶段性的合并fsimage和edit logs文件,生成最新的fsimage文件,下一次NameNode启动,只要加载最新的fsimage文件和少量的edits文件的内容就可以快速的恢复元数据
2.Secondary NameNode是NameNode的备份?
错误,因为Secondary NameNode和NameNode的功能不同
NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息等。
Secondary NameNode的职责是合并NameNode的edits到fsimage文件中。
3.如何解决NameNode启动合并速度慢的问题?
原因:每次元数据的变化都将写入到edits文件中会导致edits文件内越来越大,但是其中包括了许多无用的数据,最终导致fsimage与edits文件合并速度非常慢
解决方案 : 使用SecondaryNameNode阶段性的合并老的fsimage和edits文件生成新的fsimage文件,拿新的edits与新的fsimage合并即可
3.元数据查看
在配置文件hdfs-site.xml中记录了fsimage文件和edits文件的存放位置,因此我们可以通过查看hdfs-site.xml文件查看他们的位置(hdfs-site.xml文件在etc下)
1.通过hdfs-site文件查看fsimage和edits文件的存放位置
2.切换到fsimage存放的目录下
cd /export/server/hadoop-2.7.5/hadoopDatas/namenodeDatas/current
3.查看fsimage文件中的信息,将fsimage转成xml
hdfs oiv -i fsimage_0000000000000000526 -p XML -o fsimage.xml
4.切换到edits存放的目录下
cd /export/server/hadoop-2.7.5/hadoopDatas/nn/edits/current
5.查看edits文件中的信息,将edits转成xml
hdfs oev -i edits_0000000000000000505-0000000000000000526 -p XML -o edits.xml
二、辅助功能
1.Distcp
distcp的功能:用于实现两个HDFS集群之间的数据拷贝
语法:
hadoop distcp resource target
hadoop distcp hdfs://master1:8020/foo/a hdfs://master1:8020/foo/b hdfs://master2:8020/bar/foo
2.Archive
Archive功能:将多个小文件从逻辑上合并为一个整体文件,减少数据存储
创建归档文件:
hdfs dfs -mkdir -p /hartest/test1
hadoop archive -archiveName wc.har -p /wordcount /hartest/test1
查看归档文件
hdfs dfs -ls -R /hartest/test1/wc.har
hdfs dfs -ls -R har:///hartest/test1/wc.har
hdfs dfs -cat /hartest/test1/wc.har/part-0
3.Snapshot
Snapshot功能:用于对某个目录构建快照,实现状态备份
创建测试目录:
hdfs dfs -mkdir /test
hdfs dfs -put /export/data/wordcount.txt /test/
允许构建快照:
hdfs dfsadmin -allowSnapshot /test
创建快照:
hdfs dfs -createSnapshot /test
查看快照:
/test/.snapshot/
对比、恢复快照:
hdfs dfs -put cron.txt /test/
hdfs snapshotDiff /test . .snapshot/s20210424-145744.748
hdfs dfs -cp /test/.snapshot/s20210424-145744.748/* /test/
删除快照:
hdfs dfs -deleteSnapshot /test s20210424-145744.748
禁止构建快照:
hdfs dfsadmin -disallowSnapshot /test
三、Hadoop HA和Hadoop Federation
1.HA
Hadoop HA:高可用机制,启动两个主节点,一个为Active状态,另外一个为Standby
特点:一个节点工作,一个节点不工作
1.单点故障问题如何解决?
通过高可用机制,如果Active出现故障,Standby会切换为Active状态,可解决主节点单点故障问题
2.两个NameNode,如何判断active和standy
由zookeeper来解决,两个NameNode都向zookeper注册一个临时节点,谁创建成功,谁就是Active,另外一个监听这个临时节点,谁创建成功,谁就是Active,另外一个监听这个临时节点
特殊的进程:ZKFC【Zookeeper Failover Controller】
监听NameNode状态,实现状态指令的发布
辅助NameNode向ZK中进行注册,创建临时节点或者监听临时节点
每一个NameNode会有一个ZKFC进程
3.两个NameNode,DataNode会向哪个NameNode发送心跳和汇报块?
每个DataNode会向所有的NameNode注册,发送心跳和汇报块
4.如何保证两个NameNode的内存元数据是一致的,只有这样,Active宕机或者故障,Standby才能完整的接替原来的Active?
要实现共享edits文件,JournalNode集群:设计类似于zookeeper,公平节点,属于Hadoop内部的一个组件,可以存储大数据文件
Active的NameNode将edits写入JournalNode,Standby的NameNode从JournalNode中读取Edits
2.Federation
Hadoop Federation:联盟机制,启动多个主节点,并且多个主节点共同工作,起到负载均衡作用
1.如何解决单个主节点NameNode负载过高的问题?
通过联盟机制,启动多个节点共同工作