浅谈分布式存储架构: IPFS和HDFS

article/2025/10/5 14:16:37

分布式存储架构是一个复杂的系统工程,针对特定应用的数据存储有不同的系统架构解决方案。不同的存储方法会影响存储性能、存储成本、冗余度、工程复杂性等。

分布式存储的历史

分布式存储最早是由谷歌提出的,其目的是通过廉价的服务器来解决大规模,高并发场景下的 Web 访问问题。它采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于后期服务器扩展。

分布式存储的崛起

分布式存储的兴起与互联网的发展密不可分,互联网公司由于其大数据、轻资产的特点,通常使用大规模分布式存储系统。

与传统的高端服务器、高端存储器和高端处理器不同的是,互联网公司的分布式存储系统由数量众多的、低成本和高性价比的普通 PC 服务器通过网络连接而成。由于互联网的业务发展迅猛,使得存储系统架构不能依靠传统的纵向扩展的方式,即先买小型机,不够时再买中型机,甚至大型机。互联网后端的分布式系统要求支持横向扩展,即通过增加普通 PC 服务器来提高存储系统的整体处理能力。

另外,随着服务器的不断加入,需要能够在软件层面实现自动负载均衡,使得系统的处理能力得到线性扩展。在这种情况下,分布式存储的成为大多数企业的必然选择。

分布式存储的发展

图片

目前市场中分布式存储系统是很热门的讨论话题,各种企业也倾向于搭建分布式存储系统。那么,分布式系统解决了企业的哪些问题呢?

(1)升级单机处理能力的性价比越来越低;

企业发现通过更换硬件做垂直扩展的方式来提升性能越来越不划算;

(2)单机处理能力存在瓶颈;

单颗处理器有自己的性能瓶颈,即使愿意花更多的钱去买计算能力也买不到了;

(3)出于稳定性和可用性的考虑;

如果采用单击系统,那么在这台机器正常的时候一切 OK ,一旦出问题,那么系统就完全不能用了。当然,可以考虑做容灾备份等方案,而这些方案就会让系统演变为分布式系统了;

(4)云存储和大数据发展的必然要求;

云存储和大数据是构建在分布式存储之上的应用。移动终端的计算能力和存储空间的强烈的需求,使得网盘、相册等云存储应用很快流行起来。云存储的核心还是后端的大规模分布式存储系统。大数据则更近一步,不仅需要存储海量数据,还需要通过合适的计算框架或者工具对这些数据进行分析,抽取其中有价值的部分。如果没有分布式存储,便谈不上对大数据进行分析。

分布式存储的种类

分布式存储包含的种类繁多,除了传统意义上的分布式文件系统、分布式块存储和分布式对象存储外,还包括分布式数据库和分布式缓存等,但其中架构无外乎于三种

A、中间控制节点架构 - 以 HDFS 为代表的架构是典型的代表

B、完全无中心架构 – 计算模式,以 Ceph 为代表的架构是其典型的代表

C、完全无中心架构 – 一致性哈希,以 swift 为代表的架构是其典型的代表

这里我们主要对比下HDFS与IPFS

HDFS的简介

Hadoop 文件系统(Hadoop Distribution File System)是使用分布式文件系统设计开发的,它运行在商品硬件上。与其他分布式系统不同,HDFS 具有高度的容错性,并且使用低成本硬件进行设计。

HDFS 包含大量数据,并提供更轻松的访问。为了存储如此巨大的数据,这些文件存储在多台计算机上。这些文件以冗余方式存储,防止发生故障时使系统免受可能的数据损失,同时HDFS 还使应用程序可用于并行处理。

如果客户端需要从某个文件读取数据,首先从 NameNode 获取该文件的位置,然后从该 NameNode 获取具体的数据。在该架构中 NameNode 通常是主备部署( Secondary NameNode ),而 DataNode 则是由大量节点构成一个集群。由于元数据的访问频度和访问量相对数据都要小很多,因此 NameNode 通常不会成为性能瓶颈,而 DataNode 集群中的数据可以有副本,既可以保证高可用性,可以分散客户端的请求。因此,通过这种分布式存储架构可以通过这种分布式存储架构可以通过横向扩展 datanode 的数量来增加承载能力,也即实现了动态横向扩展的能力。

HDFS的功能

1)数据的分布式存储和处理。

2)Hadoop 提供了一个命令接口来与 HDFS 进行交互。

3)namenode 和 datanode 的内置服务器可帮助用户轻松检查群集的状态。

4)对文件系统数据的流式处理访问。

5)HDFS 提供文件权限和身份验证。

HDFS的架构

下面给出的是 Hadoop 文件系统的体系结构

HDFS的元素

1.Namenod

Namenode是包含 GNU/Linux 操作系统的产品硬件。它是一种可以在产品硬件上运行的软件。具有Namenode的系统充当主服务器,并执行以下任务

1)管理文件系统命名空间

2)调节客户端对文件的访问

3)执行文件系统操作,如重命名、关闭和打开文件和目录。

2.Datanode

Datanode是具有 GNU/Linux 操作系统和数据内核软件的产品硬件。对于cluster(群集)中的每个产品硬件/系统,都将有一个数据节点,这些节点管理其系统的数据存储。

1)根据客户端请求在文件系统上执行读写操作。

2)根据 namenode 的说明执行块创建、删除和复制等操作。

3.Block

通常,用户数据存储在 HDFS 的文件中。文件系统中的文件将分为一个或多个片段存储在单个数据节点中。这些文件段称为block。换句话说,HDFS 可以读取或写入的最小数据量称为block。默认块大小为 64MB,可以根据 HDFS 配置进行更改。

HDFS的特点

1、故障检测和恢复 – 由于 HDFS 包含大量产品硬件,组件故障频繁。因此,HDFS 应具有快速自动故障检测和恢复的机制。

2、数据集的管理 – HDFS 每个群集都有数百个节点来管理具有大型数据集的应用程序。

3、数据硬件处理 – 当计算在数据物理附近时,可以高效地完成请求的任务。特别是在涉及大量数据集时,它减少了网络流量并提高了吞吐量。

IPFS的简介

IPFS(Inter Planetary File System),又叫星际文件系统。IPFS在2015年开启,目前已经有5年时间了。IPFS和Filecoin一直热度不断,影响力也是越来越大。在这里我们先撇开区块链部分的Filecoin不谈,重点分析下IPFS在分布式存储方面的应用。

IPFS的工作原理

IPFS从根本上改变了用户搜索的方式。HTTP浏览器搜索文件的时候,首先找到服务器位置,然后使用路径名称在服务器上查找文件,但是通过IPFS协议,用户可以直接搜索内容。

1.搜索方式改变

在IPFS网络里的文件,会被赋予一个哈希值,这个哈希值类似于我们的身份证号,它是从文件内容中被计算出来的。

2.重复内容清理

IPFS网络中会对重复的内容进行去重处理,在保证整个网络存储文件的冗余量的同时保证网络的轻便与快捷。

3.节点存储内容

每个网络节点仅存储它感兴趣的内容,通过索引信息,可帮助确定存储内容的节点。

4.通过节点寻址查找要查看或下载的文件时,用户需要让网络找到对应内容的存储节点,然后确定所需求的文件内容。

5.IPNS命名系统

用户不需要记住哈希,使用称为 IPNS 的分散命名系统,可以轻松找到每个文件。

从上述的原理中我们可以清晰地看出,在存储方面IPFS与传统的分布式存储是完全不同的,是完全去中心化的。

HDFS与IPFS对比

a 、应用对象

HDFS主要是企业级的应用,针对企业的大文件存储,因为 HDFS 采用的是以元数据的方式进行文件管理,而元数据的相关目录和块等信息保存在 NameNode 的内存中, 文件数量的增加会占用大量的 NameNode 内存。如果存在大量的小文件,会占用大量内存空间,引起整个分布式存储性能下降,所以尽量使用 HDFS 存储大文件比较合适。而IPFS主要是针对个人用户市场,根据个人的文件进行存储,存储的节点越多,存储的文件越多,整个文件系统的稳定性也就越高。

b 、读写频次

HDFS适合低写入,多次读取的业务。HDFS 的数据传输吞吐量比较高,但是数据读取延时比较差,不适合频繁的数据写入。IPFS对于文件的读取和写入具有很强的包容性和扩展性,文件的读取和写入越多,整个基于IPFS的经济生态系统也就越繁荣,在系统中的用户也就越受益。

c 、存储环境

HDFS 采用多副本数据保护机制,使用普通的 X86 服务器就可以保障数据的可靠性,不推荐在虚拟化环境中使用。IPFS使用个人的普通服务器即可作为节点,运行IPFS系统,提供去中心化的存储服务

d、存储系统

HDFS 主要针对大企业,虽是分布式存储,其主要的控制着仍是企业主体,属于一个封闭的存储系统。IPFS完全去中心化的操作,任何企业和个人都可以接入存储网络。

e、寻址方式

 

HDFS如果客户端需要从某个文件读取数据,首先从 NameNode 获取该文件的位置,然后从该 NameNode 获取具体的数据,IPFS则是直接从内容所在的节点获取文件,是基于内容获取的方式。

 

基于IPFS技术开发的应用也不断出现,IPFS直接整合至Brave浏览器中,将 Hadoop 置于IPFS之上进行p2p数据分析,PeerPad利用IPFS构建无服务器、实时的、离线协作式应用等。在陆续与微软、美国宇航局(NASA)等知名机构、企业建立合作关系后,IPFS的实际应用价值得到了进一步深化。

BMJ是基于IPFS设计的一种新的互联网协议下的分布式存储技术,其目标是永久存储数据,消除网络上的重复,并获取存储在网络计算机上的信息的地址,未来它会是一个开源项目。

作为分布式存储的领航者,BMJ目前正在快速布局,未来形成包括云存储、云计算、大数据的产业集群,可以更好的引领传统企业升级转型,推动整个新经济的发展。

参考资料

1、https://ipfs.io/#why

2、https://towardsdatascience.com/hadoop-distributed-file-system-b09946738555

3、https://www.ibm.com/analytics/hadoop/hdfs

4、https://www.webopedia.com/TERM/D/distributed_file_system.html


http://chatgpt.dhexx.cn/article/ClGjMJjR.shtml

相关文章

开源分布式存储架构概览

关注「开源Linux」,选择“设为星标” 回复「学习」,有我为您特别筛选的学习资料~ 材料提纲包括三部分内容: 1、基本思想和关注的问题 2、四种开源分布式存储系统概览(HDFS 、GlusterFS 、OpenStack Swift、Ceph) 3、以…

FISCO BCOS 2.0原理解析: 分布式存储架构设计

FISCO BCOS 2.0新增对分布式数据存储的支持,克服了本地化数据存储的诸多限制。 在FISCO BCOS 1.0中,节点采用MPT数据结构,通过LevelDB将数据存储于本地,这种模式受限于本地磁盘大小,当业务量增大时数据会急剧膨胀&…

杉岩PACS影像系统分布式存储架构

该医院创建于1999年,是深圳市政府投资建成的集医疗、教学、科研和预防为一体的现代化三级综合性医院。2017年通过三级甲等医院复审。2018年,医院年门急诊总量约292万人次,年出院病人近7.4万人次,年手术量4.9万台次。 该院在深圳有…

Ceph分布式存储 原理+架构图详解

分布式存储Ceph ceph介绍 ceph是一个统一的、分布式的存储系统,设计初衷式提供较好的性能(io)、可靠性(没有单点故障)和可扩展性(未来可以理论上无限扩展集群规模),这三点也是集群架构所追求的。 统一性 : 意味着我们可以仅凭ceph这一套存储系统&…

几种分布式存储组网架构参考

作 者: NGDCN 原文链接:几种分布式存储组网架构参考 - NGDCN 版 权: 本文由 NGDCN 于2022-11-12原创发布在 NGDCN,未经许可,禁止转载。 1、名词解释 ◼ VBS:云硬盘备份(Volume …

谈谈Java内存模型

谈谈Java内存模型 什么是JMM为什么需要这种规范呢?三大特性在Java中是怎么满足的呢? 什么是JMM Java Memory Model ,Java内存模型,是一种共享内存系统中多线程程序读写操作行为的规范,它是一种屏蔽了各种硬件和操作系…

Java内存模型及管理

1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请…

什么是Java内存模型

概述:本文向您介绍Java内存模型的概念,在C或C中, 利用不同操作平台下的内存模型来编写并发程序;Java利用了自身虚拟机的优势, 使内存模型不束缚于具体的处理器架构,真正实现了跨平台。 内存模型 (memory model) 内存模型描述的是程…

详说Java内存模型(JMM)

文章目录 什么是Java内存模型为什么提出内存模型Java主内存与工作内存JMM三大特性可见性有序性原子性 并发总结 什么是Java内存模型 Java内存模型就是(Java Memory Model),它规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机就是一…

详解Java内存模型

文章目录 一、简介二、处理器、高速缓冲、主内存间的交互关系三、Java线程、工作内存和主内存的交互关系四、8大原子操作五、8大Happens-Before原则 一、简介 Java内存模型(JMM)是线程间通信的控制机制,JMM定义了主内存和线程工作内存之间的抽…

Java内存模型的一点理解

关于Java内存模型的问题 文章目录 前言一、Java内存模型二、其中一些指向问题1.内存指向问题为什么? 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要…

【Java】Java内存模型

1.什么是Java内存模型 Java内存模型(Java Memory Model,JMM)是一种抽象的,不存在的概念。是一种屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。 Java内…

2.什么是JAVA内存模型?

为什么要设计JAVA内存模型? 小陈:老王,看了上一篇的《CPU多级缓存模型》,有个疑问为什么还要有JAVA内存模型啊? 老王:这么来说吧,CPU多级缓存模型,只是一个规范,但是底层…

Java内存模型是什么

网上有很多关于Java内存模型的文章,在《深入理解Java虚拟机》和《Java并发编程的艺术》等书中也都有关于这个知识点的介绍。但是,很多人读完之后还是搞不清楚,甚至有的人说自己更懵了。本文,就来整体的介绍一下Java内存模型&#…

Java内存模型是什么,为什么要有Java内存模型,Java内存模型解决了什么问题等。。。

本文中,有很多定义和说法,都是笔者自己理解后定义出来的。希望能够让读者可以对Java内存模型有更加清晰的认识。当然,如有偏颇,欢迎指正。 为什么要有内存模型 在介绍Java内存模型之前,先来看一下到底什么是计算机内存…

Java内存模型相关面试题

一、谈谈你对Java内存模型的理解可以吗? 对于Java内存模型大家千万不能和JVM内存模型弄混了,不一样的; JVM内存模型是指JVM的内存分区,就是JVM分了几个区域;而Java内存模型是一种虚拟机规范。 首先来看下面一段代码&…

什么是Java内存模型?

点击上方“程序员小灰”,选择“置顶公众号” 有趣有内涵的文章第一时间送达! 本文转载自公众号 占小狼的博客 说”JVM内存模型“,有人会说是关于JVM内存分布(堆栈,方法区等)这些介绍,也有地方说…

Java面试--Java内存模型

面试题:你了解Java内存模型吗?(顺丰面试题) 面试题:程序内存的分布,五个部分(360面试题) 一、Java程序的执行过程: Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中…

JAVA内存模型与JVM内存模型

JAVA内存模型(JMM)与JVM内存模型 1、JAVA内存模型保证了在多线程环境下,对共享变量读写的原子性、可见性和有序性的一系列规范。 2、JVM内存模型规定了JAVA虚拟机在运行时使用的内存的各个分区及其作用。JAVA内存模型 原子性: 通过 synchronized、lock实现&#x…

Java内存模型(JMM)详解

目录 一、为什么要有内存模型二、CPU和缓存一致性2.1 为什么需要CPU cache2.2 三级缓存(L1、L2、L3)2.3 乱序执行优化 三、java内存模型3.1 JVM对Java内存模型的实现3.2 Java内存模型和硬件架构之间的桥接3.3 Java内存模型 - 同步八种操作3.4 Java内存模…