分布式存储原理

介绍

Hadoop的历史

说道hadoop的历史,就要提到Google公布的GFS、MapReduce和BigTable三篇技术论文,它们被称为三驾马车。第一个提供全文文本搜索的开源函数库Lucene的创始人——Doug Cutting对其做了主要的开源实现。再后来,Apache基金会整合Doug Cutting和一众IT公司的贡献成果,开发并推出了Hadoop生态系统。

Hadoop的生态圈包括hdfs、mapreduce、yarn、common。

大数据

短时间内快速的产生海量的多种多样的有价值的数据

大数据技术

  • 分布式存储
  • 分布式计算(多台服务器并行计算)
  1. 分布式的批处理
    攒一段时间的数据,在未来的某一个时间来处理这批数据
  2. 分布式的流处理
    数据不需要攒,每产生一条数据,立马对这条数据进行处理,将结果推送前端页面存储到数据库中形成报表给老板
    eg:11.11天猫大屏幕 QQ实时在线分布情况
    (看到的时候都是有误差的,报表才是精准值)
  3. 机器学习 包含深度学习(神经网络)
    机器学习是一门新兴技术,凡是预测类的工作需要用到机器学习

原理

分布式存储

关键词

  • NameNode、 SecondaryNameNode、DataNode、block(最小存储单元)
  • 备份机制:解决数据安全
  • 权限
  • 安全模式
  • 读写流程
    原理图

搭建集群的三种模式

伪分布式

测试环境使用

完全分布式

完全分布式搭建教程

高可用完全分布式
高可用完全分布式搭建教程
安全模式
  1. 加载fsimage
  2. 如果edits内容不为空,则NameNode自己来合并
  3. 检查DataNode的健康情况
  4. 检查各个节点上的blcok块以及副本是否符合要求,如果不符合要求,指挥存储数据丢失的DN做备份。
  5. 如果DN挂掉,则指挥做备份

各个角色作用

NameNode
  1. 掌控全局,管理DataNode以及元数据
  2. 管理元数据(存储在内存中):
    • )文件的上传时间文件的上传时间
    • )权限
    • )文件属主
    • )上传文件的block数以及blockID
    • )block的位置信息(由DataNode在集群启动时汇报,不会持久化)
    • )DN的心跳信息
    • )DN的位置信息
  3. 接受客户端的读写请求
  4. 收集DataNode汇报的block列表信息
  5. NameNode保存的metedata信息包括:
    - 文件owership和permissions
    - 文件大小,时间
    - (block列表:blockID)
    - Block副本位置(由DataNode上报)
DataNode
  1. 存储block模块
  2. 接收客户端的读请求
  3. 向active NN汇报心跳
  4. 构建pipeline
  5. 管理本机上的block元数据
SecondaryNameNode
  • NameNode元数据位于内存中,但是内存不稳定,所以将数据持久化到磁盘中
    内存持久化原理图

  • 合并触发机制:

    1. 超过3600毫秒
    2. 如果edit文件超过64M
  • 合并流程

    1. 基于拉来的edits文件重演出产出元数据
    2. 将重演出的元数据合并到fsimage中
    3. 将合并后的fsimage推送给NN
    4. 将edits.new文件的后缀去掉
  • 注意:并不是所有的元数据都会持久化:

  1. 除了block的位置信息,其他的元数据都互持久化(变动频率高变动大)
    这样的话,当HDFS集群重启,namenode中的元数据就会有所缺失无法对外提供服务
  2. 解决:HDFS启动的时候,所有的DN都会向NN汇报当前节点的block信息
zkfc
  1. 监控各自的NameNode,将监控的情况汇报给ZK集群
  2. 接受zookeeper的选举结果,确认一下另外一个NN是否真的挂了,将自己监控的NameNode提升为active状态
journalnode
  1. 写数据的时候只要保证半数以上的节点成功就可以了
  2. 最终一致性/弱一致性
  3. 存储的是edits文件
备用的NameNode
  1. 监控journalnode中的数据变化,实时更新自己的内存元数据
  2. 将内存中的元数据持久化到fsimage中,推送到NameNode中。

HDFS的读写流程

写的流程
  1. 如果要上传一个大文件,client切割大文件,计算大文件block数,大文件地址/128M=block数量
  2. client对NameNode汇报:
    (1)当前大数据文件的block数
    (2)当前大文件属于谁 权限
    (3)上传时间
    for(Block block:bocks(大文件切割出来的Block)){
  3. client切割出来一个block
  4. client请求block块的Id号以及地址
  5. 因为NameNode能够掌控全局,管理所有的DN,所以它将负载不高的DN地址返回给client
  6. client拿到地址后找到DN去上传数据
  7. DN将block存储完毕之后会向NameNode汇报当前的存储情况
    }

client向DataNode写数据的详细流程
写数据的详细流程
解释:NN返回给client一批地址以后,这些DN之间会形成一个pipelien管道
block切割形成一个packet(64K)之后以流形式源源不断的发送(类比生产流水线)

读的流程

备份机制

  • 原理图
    备份机制
  1. 如果是集群外操作,第一个Block存储在负载不是很高的一台服务器上(默认128M dfs.blocksize,严格按照字节切割,如果存储的是中文,会出现乱码问题。);如果集群内操作,在本机
  2. 第一个备份的block存储在与第一个block不同机架的随机一个服务器上
  3. 第2个备份的block存储在与第一个备份相同的机架的随机服务器上
  4. 其他备份随机存
权限

依据系统的用户系统 ()

HDFS优缺点

优点

在这里插入图片描述

缺点

在这里插入图片描述

思维导图

在这里插入图片描述
这是我的博客网站,欢迎访问。

IPFS(InterPlanetary File System)是一种分布式文件系统,它的原理基于一些关键概念和技术: 1. 分布式哈希表(DHT):IPFS使用DHT来分布存储和查找文件。DHT是一个分布式的键值存储系统,它将文件的内容的哈希值作为键,将文件的位置信息作为值存储在网络中的不同节点上。这样,文件可以通过哈希值进行查找,而不依赖于中心化的服务器。 2. 哈希链接:IPFS使用内容寻址来确定文件和目录的唯一标识。每个文件和目录都被哈希成一个唯一的标识符,该标识符也被用作文件内容的哈希值。这种方式确保了数据的完整性和不可变性。同时,文件和目录之间可以通过哈希链接进行连接和引用。 3. 分布式存储:IPFS将文件内容进行分块存储,并使用分布式存储的方式将这些块存储在网络中的不同节点上。这样可以实现数据的冗余备份和高可用性。当用户请求文件时,IPFS会根据文件的哈希值查找对应的块,并从最近的节点获取所需的数据。 4. 自我证明:IPFS使用Merkle DAG(有向无环图)来组织和表示文件系统。文件系统中的每个节点都包含了指向其子节点的哈希链接。这种方式不仅支持版本控制和快速增量更新,还可以通过节点之间的哈希链接进行验证和自我证明。 综上所述,IPFS通过使用分布式哈希表、哈希链接、分布式存储和自我证明等技术,实现了去中心化、高可用性、安全性和可扩展性的分布式存储
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值