云计算牛马作业之hdfs和p2p

SOA、P2P等是云计算的核心支撑技术之一。请以HDFS和P2P文件分发系统为例,对比和分析两者之间的异同。要求检索和阅读相关文献,提交一份分析报告。

HDFS和P2P对比分析

1.HDFS的基本概念

1.1.分布式系统

相对于传统的本地文件系统而言,分布式文件系统(Distributed File System)是一种通过网络实现文件在多台主机上进行分布式存储的文件系统。分布式文件系统的设计一般采用“客户机/服务器”(Client/Server)模式,客户端以特定的通信协议通过网络与服务器建立连接,提出文件访问请求,客户端和服务器可以通过设置访问权来限制请求方对底层数据存储块的访问。目前,已得到广泛应用的分布式文件系统主要包括GFS和HDFS等,后者是针对前者的开源实现。

1.2.HDFS简介

HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点和若干个数据节点(见图3-5)。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。每个数据节点的数据实际上是保存在本地Linux文件系统中的。每个数据节点会周期性地向名称节点发送“心跳”信息,报告自己的状态,没有按时发送心跳信息的数据节点会被标记为“宕机”,不会再给它分配任何I/O请求。

总体而言,HDFS有如下几个特性:

  • 兼容廉价的硬件设备
  • 流数据读写
  • 大数据集
  • 简单的文件模型
  • 强大的跨平台兼容性
  • 不适合低延迟数据访问
  • 无法高效存储大量小文件
  • 不支持多用户写入及任意修改文件

HDFS中的相关概念包括:块、名称节点、数据节点、第二名称节点。

与普通文件系统类似,分布式文件系统也采用了块的概念,文件被分成若干个块进行存储,块是数据读写的基本单元,只不过分布式文件系统的块要比操作系统中的块大很多。HDFS默认的一个块的大小是64 MB。与普通文件不同的是,在分布式文件系统中,如果一个文件小于一个数据块的大小,它并不占用整个数据块的存储空间。

名称节点

名称节点(NameNode)也被称为主节点(Master Node),名称节点负责文件和目录的创建、删除和重命名等,同时管理着数据节点和文件块的映射关系,因此客户端只有访问名称节点才能找到请求的文件块所在的位置,进而到相应位置读取所需文件块。HDFS采用名称节点来管理文件系统的元数据,这些元数据被保存在内存中,从而使客户端可以快速获取文件实际存储位置。其主要有两大构件:FsImage和Editlog,FsImage用于存储元数据(长时间不更新),Editlog用于更新数据。

数据节点

数据节点(DataNode)也被称为从节点(Slave Node),数据节点负责数据的存储和读取,在存储时,由名称节点分配存储位置,然后由客户端把数据直接写入相应数据节点;在读取时,客户端从名称节点获得数据节点和文件块的映射关系,然后就可以到相应位置访问文件块。数据节点也要根据名称节点的命令创建、删除数据块和冗余复制。

第二名称节点

随着时间推移,名称节点中Editlog内存储的数据越来越多,导致运行速度越来越慢。所以引入第二名称节点。当第一节点中Editlog到一个临界值时,HDFS会暂停服务,由第二节点将拷贝出Editlog,复制、添加到Fslmage后方并清空原Editlog的内容。这里有一点要注意这种备份是冷备份的形式,即没有实时性,需要停止服务,等数据恢复正常后继续使用。

2.P2P的基本概念

《云计算与分布式系统——从并行处理到物联网》上的定义:

对于端到端通信来说,如果两个端用户在功能上是对等、相同的,那么就可以认为该通信是P2P通信。

P2P技术利用互联网边缘节点空闲的计算资源(如存储、CPU和带宽)和内容资源(如内容文件)来完成大规模任务。

P2P计算无需中央服务器的协调,没有一个节点拥有全局的视图,每个节点都只有系统的部分视图。节点既作为服务器向其他节点直接提供服务,又作为客户端从其他节点获得服务。

P2P网络具有以下共同特征:

  • 去中心化
  • 自组织
  • 临时连接和动态性
  • 匿名性
  • 可扩展性
  • 容错

在P2P网络中,客户端(节点)在功能上是对等的,是自治的、自组织的,它们之间直接交换资源。与C/S系统相比,P2P系统相对松散而没有结构,安全性和可控性较低。

P2P网络模型

1.集中式对等网络

在有些P2P网络中仍然存在着服务器,但服务器的角色和其在客户端/服务器模式中不同。比如,Napster音乐文件共享系统使用索引服务器来管理所有对等节点共享的文件链接,如图8-3a所示。每个节点在索引服务器上注册共享数据的信息,而索引服务器向请求者返回文件拥有者的地址信息。数据的传输则是在文件请求者和文件拥有者之间直接进行。

2.无结构分布式网络

Gnutella 0.4 版本文件共享系统则是“纯”的P2P模型,如图8-3b所示。所有节点在功能上完全对等,每个节点只索引自己共享的文件。

由于没有中央索引服务器,请求消息从请求者的邻居开始在覆盖网络上泛洪。

3.结构化分布式网络

Gnutella 0.6系统,KaZaA 系统和Skype系统则是一种层次化P2P模型,如图8-3c所示。系统中一部分能力强的节点被选作超级节点,请求只需要在超级节点之间泛洪,因此系统的扩展性得到了增强。P2P分布式计算系统通常维护一定数量的中央服务器用于任务管理或与客户端对等节点的通信,但是客户端对等节点之间却不需要通信。因此在这种系统中,节点是贡献资源的计算系统。P2P平台作为中间件基础方便P2P系统的开发和部署。该平台提供安全服务、通信服务和标准服务(如索引、搜索和文件共享)。

3.HDFS和P2P的异同

目前P2P应用种类多、形式多样,没有统一的网络协议标准,其体系结构和组织形式也在不断发展,总体而言,HDFS与P2P的集中式对等网络类似,而与无结构分布式网络有较多不同。

以下重点说明一下无结构分布式的P2P(最能体现P2P思想的一种模式)与HDFS的异同。

不同点:

1.HDFS的NN和DN是两类功能完全不同的节点。HDFS用NN保存所有文件的存储位置,所以客户端必须先访问NN来获得请求文件的数据块所在的DN列表。但在P2P文件分发系统中,节点与节点之间的地位是平等的,不存在特殊的节点。

2.HDFS采用C/S模式;而P2P的每个节点既是客户端,也是服务器。

3.HDFS性能瓶颈在于名称节点,名称节点的出错可能会导致整个文件分发系统的不可用,属于紧耦合;但P2P则没有这个顾虑,因为每个节点都能充当客户端,耦合度较小。

4.P2P的文件查询速度受文件的热门程度影响,而HDFS则完全与此无关。

5.安全性。HDFS有相关的数据安全性保证机制,但P2P没有。

6.P2P查询方式比较无序,通过把查询包扩散到相邻节点来尝试到达目标节点;而HDFS更显章法,是通过专门的NN检索的。

相同点:

1.数据的冗余存储。HDFS和P2P都有数据冗余存储策略。HDFS 默认的冗余复制因子是 3,每一个文件块会被同时保存到 3 个地方,其中,有两份副本放在同一个机架的不同机器上面,第三个副本放在不同机架的机器上面,这样既可以保证机架发生异常时的数据恢复,也可以提高数据读写性能。而对P2P而言,每一个下载某文件的用户都会获得该文件的副本,只要不对文件进行修改或移动,其实就相当于数据的冗余存储了。

2.虽然HDFS需要通过NN检索,但是客户端直接与DN建立连接传输相应数据;P2P也是文件请求者直接与文件拥有者建立连接来传输文件。

文章作者: 莫折眉
文章链接: https://m0d1.top/2021/12/19/hdfsandp2p/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 M0D1.TOP