NN、DN、2NN、JN

NN–NameNode

  • NN负责对HDFS上的元数据进行整理
  • 在NN上存放了两份重要信息:1.文件由哪些块组成、2.每个块存在哪个位置
  • 除此之外还有一些非关键信息:文件名、上传者、上传时间
  • 元数据在磁盘中存储在fsimage中
NN的持久化
  • NN负责整个HDFS的负载,当客户端对数据进行写操作时候会产生元数据,导致元数据不断增加,存在丢失风险,所以需要对NN中的元数据进行持久化
  • 存在着两种持久化的方法:
    1. 将所有的写操作记录下来,形成日志文件
    2. 将当前内存内存的数据形成一个快照
  • 日志文件持久化方法存储速度快,但恢复速度很慢,因为要将日志文件中的所有操作重新执行一遍
  • 快照方法如果内存中的数据越来越多,会导致镜像越来越大。在运行之间持久化的话,NN可能会瘫痪

2NN–SecondaryNamenode

  • 可以借助2NN对NN进行部分恢复
  • 但是在HDFS中NN和2NN是两种不同的进程,2NN只能起到辅助作用,不能代替NN
使用2NN对NN进行部分数据恢复
  • 将2NN,namesecondary中的current复制到NN下的name下就行

DN–DataNode

  • 数据节点,主要用来读写文件的数据块。
  • 在其中主要存储的是数据块和数据块校验
DN的启动
  • DN启动时首先向NN根据clusterID进行注册
  • 注册成功后每一小时上报所有块的信息
  • 然后DN需要每隔3s去ping一下NN,如果NN10分钟没有接到DN的心跳,则认为DN坏了

JN–JournalNode

  • 用于NN之间共享数据
  • 两个NN之间为了通信,会通过一组名称为JournalNode的独立进程进行通信,当active状态的NN命名空间有任何修改时,会告知大部分的JN进程,standby状态的NN有能力读取JNs的变更信息,并且一直监控editlog的变化,并把变化应用于自己的命名空间,。
  • standby可以确保在集群出错时,命名空间状态已经完全同步了
activc状态的NN和standby状态的NN
  • 一个集群中可以有两个NN,一个处于active状态,一个处于standby状态
  • activc状态的NN提供服务。standby状态的NN处于休眠状态,只进行数据同步,时刻准备提供服务
  • 在一个典型的HA集群中,每个NameNode都是一台独立的服务器。在任一时刻,只有一个NameNode处于active状态,另一个处于standby状态。其中,active状态的NameNode负责所有的客户端操作,standby状态的NameNode处于从属地位,维护着数据状态,随时准备切换。
  • 为了确保快速切换,standby状态的NN也有必要知道集群中数据块的位置。所以所有的DN都必须配置两个NN的地址,发送数据块信息和心跳给两个NN
两个NN(active、standby)分别对JN进行读写数据

对于HA集群而言,确保同一时刻只有一个NameNode处于active状态是至关重要的。否则,两个NameNode的数据状态就会产生分歧,可能丢失数据,或者产生错误的结果。为了保证这点,JNs必须确保同一时刻只有一个NameNode可以向自己写数据

  • active状态的NN向JN写数据,处于standby状态的NN从JN读数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yui方木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值