Hadoop生态圈(原理)

HDFS

分布式文件系统 ---- 存储

block

  1. 大文件切割成(block),分散存储在集群中。
  2. 单一文件的 block 块大小一致,不同文件可以不一样。(最后一块128M没存满,还是128M)
  3. 为了安全----机制(副本机制)。
  4. 追加数据 ---- append (只在尾部追加数据)。
  5. 只支持一次写入多次读取,同一时刻只有一个写入者。

读写操作

写操作
  1. namenode(老板):
    • 掌控全局,管理DN,以及元数据(描述数据的数据) ---- 内存中
    • 接收客户端的读写服务(client<秘书> – 申请,能不能存文件)
    • 收集datanode的信息
    • 给 client 一些 DN 信息
  2. DataNode(员工):
    • 存文件(block块),向NN汇报信息(存了哪些电影,以及自己是否还存活)
    • 存储 block 元数据信息(NN存的是整个大文件的信息,DN存放的是每个 block 的)
    • 接受 client 的请求
具体实现
  1. 大文件线性切割成 block 块: client 会优先计算一下大文件的块数 block(默认值128M) block数 = 大文件/128M
  2. client 会向 NN 汇报情况:
    - 当前大文件的 block 数
    - 当前大文件的属主
    - 当前大文件的权限
    - 当前大文件的上传时间
    重复如下操作,直到所有 block 存储完毕
  3. 切割一个 block 块
  4. 请求 block 的 id DN的地址
  5. NN 将一些负载不高的 DN 地址进行返回给 client
  6. client 拿到地址,找到这个 DN 进行上传,并进行备份
  7. DN 存储完毕后 向 DN 进行汇报
读操作
  1. client 会向 NN 请求 block 的位置信息,NN 掌握元数据
  2. NN 返回 block 的信息给 client
  3. client 拿到 block 的信息后之后去相应的读取 block 的数据 — 就近原则
备份机制
任务提交方式
  1. 集群内提交 直接提交到及群众
  2. 集群外提交
如何备份
  1. 如果是集群内提交:第一个 block 提交上传请求的服务器上
    如果是集群外提交:第一个 block 提交到负载均衡不高的服务器上
  2. 第一个备份:与第一个 block 不同机架的随机一台服务器上
  3. 第二个备份:存放第一个备份的 block 相同机架但是不同的服务器上
  4. 更多的副本:随机存放
Pipeline(写操作+备份机制)

client 请求之后,NN 会返回一批 DN,client 会与这批 DN 之间形成 Pipeline 管道。
以 block 块形式存储,在 pipline中,会将 block 再次细分,分成一个个 ack packet, ack 在管道中进行流淌。DN 会从 管道中复制一份 ACK 进行存储

持久化存储

持久化原数据----相当于第二个老板来做-----SecondaryNameNode
namenode 元数据信息 存储在 内存中,需要进行持久化,来保障系统和数据的安全可靠。

持久化过程

namenode:

  • edits:存放系统的操作信息
  • fsimage:

secondarynamenode 会把 namenode 的 edits 和 fsimage 拉取一份在 secondarynamenode 中,然后将其合并做一次快照存储为 fsimage.ckpt, 然后将 fsimage.ckpt 拉回到 namenode 中。

从 SNN 拉回的信息,形成新的 fsimage,这次已经完成了相应的更新,有了更新前的所有数据。

当 SNN 进行合并的时候,新的系统操作会生成一个新的 edits(默认64M),新的 edits 和 新的 fsimage 满足一定条件后会继续执行上面的拉取和合并。

条件:

  • 时间:超过 3600s
  • 内存:edits 文件超过 64M

合并的过程中又有文件产生,并超过 64M:

  • 可以改变 edits 的默认值 ---- 自己清楚会有很多的操作,有可能出现问题
  • 系统会自动的,再次新建

当持久化结束之后,系统已经完成更新,之前的数据,在合并之后的文件中,那这些文件是持久化到磁盘中,在磁盘中进行存储,防止在内存中因系统故障丢失。

安全模式

电脑频繁的开关机,会默认进入安全模式。

  • 持久化之后,之前的系统操作会进入到磁盘中。
  • 持久化之前,系统关闭 ---- 他会读取你的系统日志。
  • 当再次开机的时候,他会去读取 fsimage ,因为已经持久化到磁盘中,所以会去磁盘中将数据拉回到内存中(NN 数据在内存中生成、管理)。
  • 恢复之前的状态

安全模式干什么:

  1. 恢复系统状态
  2. 检查 DN 的健康情况 ---- ND 没有挂掉 ---- 做备份 (数据存储时会有备份机制)
    (如果 DN 又恢复了,当有新任务时,将新任务发放到此节点;若无新任务,它将原来上面的数据都丢失,它丢失的 block 会从备份机制的 block 存放到其他节点上,不变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值