HDFS--图解元数据安全--SecondaryNameNode

1、数据安全

副本机制

每个块有多个副本,存储在不同的机器和机架中

  • 某台机器宕机,其他机器上依旧可读这份数据

安全模式

  • 会检查数据块是否完整,如果数据块丢失,会通过副本恢复

2、元数据安全

问题1:元数据怎么来的?

  • 1.格式化时,会初始化生成一个元数据文件,NameNode那台机器的目录中:fsimage【磁盘中】
  • 2.当NameNode启动时,会读取这个文件,将这个文件中的内容加载到内存中
  • 3.当客户端提交读写请求时,NameNode会对内存中的元数据进行读写【内存中元数据会发生更改,最新】
    • 写入文件:要记录这个文件的元数据
    • 读取数据:从元数据中找到这个文件的信息
  • 为什么加载到内存,直接修改内存中的元数据?
    • 这样比较快,如果读写磁盘文件的元数据fsimage的话,就比较慢

问题2:内存中的元数据与磁盘中的fsimage的元数据是不一致的?

原因:

如果一旦机器宕机,内存中最新的元数据全部丢失,NameNode重启再次读取fsimage文件,读到的是之前的元数据,不是最新的,最新的在内存中,内存中最新的元数据全部丢失了

解决:

SecondaryNameNode负责帮助NameNode实现内存中的元数据与磁盘文件中的元数据一致,加快NameNode启动时元数据的加载
在这里插入图片描述
NameNode下次重启,从fsimage文件中读取到的元数据依旧是最新的元数据

问题3:SecondaryNameNode如何实现将文件元数据与内存元数据保持一致的?

  • 内存元数据:最新元数据、读写最快、但是易丢失,NameNode直接管理内存元数据
  • edits文件:内存元数据变化的日志,内存中元数据发生的所有变化都记录在edits文件中
    • 类似于Mysql中的binlog:会记录对表的所有操作,用于恢复数据
  • fsimage:磁盘中的元数据文件,不易丢失
    在这里插入图片描述

tips1:SecondaryNameNode是一个辅助进程,不能代替NameNode, 没有接客、管理的功能

tips2:NameNode的备份还叫NameNode 一个是active的NameNode 一个是standby的NameNode

  • 功能
    • 在不影响NameNode对外提供服务的情况下,偷偷将内存元数据与文件元数据进行同步
    • 加快下一次NameNode启动的进度

3、查看元数据

fsimage文件和edits文件存在哪呢?

datanode存储数据的位置

<!--指定datanode将数据存储到每台机器的哪个位置-->
<property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas1,file://
/export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas2</value>
</property>
  • 这里配置了两个目录,是做负载均衡,将数据均衡存储到不同的目录中
  • 工作中这两个目录要挂载在不同的硬盘上,加快读写的效率【提高并行度】

fsimage文件存储的位置

<property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas1,file://
/export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas2</value>
  • 这里配置了两个目录,是做备份的高可用,这两个目录中存储的数据是一模一样
  • 否则如果有一块硬盘坏了,更换硬盘,元数据就丢失了,工作中这两个目录要挂载在不同的硬盘上(另外一块硬盘上还有一份)

edits文件的存储位置

<property>
        <name>dfs.namenode.edits.dir</name>
        <value>file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/nn/edits</value>
</property>

查看fsimage文件

hdfs oiv -i hadoopDatas/namenodeDatas1/current/fsimage_0000000000000000453 -p XML -o fsimage.xml

查看edits文件

hdfs oev -i hadoopDatas/nn/edits/current/edits_0000000000000000126-0000000000000000453 -p XML -o edits.xml
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值