分布式 文件管理系统

本文深入探讨了Hadoop及其分布式文件系统(DFS)的原理与应用,包括文件存储单位扇区、块的概念,以及inode的作用。同时,介绍了RAID、FUSE、序列化系统如Hadoop的WritableComparable接口、远程过程调用(RPC)、Avro与Google的ProtocolBuffers在分布式存储中的应用。此外,还对比了常用DFS如Lustre、HDFS、GlusterFS的特点与适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础知识篇:

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB),

操作系统读取硬盘的时候,是一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

储存文件元信息的区域就叫做inode,中文译名为"索引节点"。包含:文件的字节数, 文件拥有者的User ID, 文件的Group ID, 文件的读、写、执行权限, 文件的时间戳, 链接数,即有多少文件名指向这个inode, 文件数据block的位置


共享磁盘(Shared-disk)/Storage-area network(SAN),在并行控制上做了很多工作,以至于其拥有比较一致连贯的文件系统视图。

分布式文件系统(DFS):不是块级别的共享的形式了,所有加进来的存储(文件系统)都是整个文件系统的一部分,所有数据的传输也是依靠网络来的,实现的方式有NFS、CIFS、SMB、NCP等,比较著名的产品有Google GFS、Hadoop HDFS、GlusterFS、Lustre等。


RAID:磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。

条带化技术就是将一块连续的数据分成很多小部分并把他们分别存储到不同磁盘上去,这就能使对这种数据进行顺序访问的时候可以获得最大程度上的 I/O 并行能力.

FUSE(用户空间文件系统)是这样一个框架:它使得FUSE用户在用户态下编写文件系统成为可能,而不必和内核打交道。由三个部分组成:linux内核模块、FUSE库 以及mount 工具。

*************************************************

序列化系统 ( 序列化就是将对象(实例)转换为字符流(字符数组)的过程)

在hadoop里面有自己定义的序列化格式:Hadoop中定义了两个序列化相关的接口:Writable接口和Comparable接口,这两个接口可以合成一个接口WritableComparable. 它是hadoop的核心之一,并已提取为Avro子项目,

远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议,该协议允许运行于一台计算机的程序调用另一台计算机的子程序。Hadoop的RPC主要是通过Java的动态代理(Dynamic Proxy)与反射(Reflect)实现。

为什么要用RPC呢?举个例子:当客户端要访问服务端数据时就无需每次拷贝整个数据库或它的大部分程序到客户端系统。其实,服务端只处理请求,甚至只执行一些数据计算,把得出的结果再发送给客户端。因为当数据存放在一个地方时,数据库同步很容易实现,所以多个客户端可同时访问相同的数据。

 Avro依赖模式(Schema)来实现数据结构定义。可以把模式理解为Java的类,它定义每个实例的结构,可以包含哪些属性。可以根据类来产生任意多个实例对象。对实例序列化操作时, 需要模式与数据同时存在。Avro数据以模式来读和写(文件或是网络),并且写入的数据都不需要加入其它标识,这样序列化时速度快且结果内容少。由于程序可以直接根据模式来处理数据,所以Avro更适合于脚本语言的发挥。  Avro支持两种序列化编码方式:二进制编码和JSON编码。

Google的Protocol Buffers

Facebook的Thrift:

Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml),并由生成的代码负责RPC协议层和传输层的实现。

基于 JSON 消息格式的 RESTful 服务等


********************************************

常见DFS比较:见连接

如果你追求的高效,并且在一定程度上可以容忍少量数据的丢失,那么lustre将会是你的不二选择,至于数据的安全性,你可以使用第三方的软件或者系统来实现,或者说直接就忽略之;

如果你的业务需求是做数据挖掘数据分析,那么不用多想了,没有人不选择HDFS而去选择其他的;

如果你想使用起来功能比较完善,并且管理起来比较方便,那么GlusterFS会是不错的选择;



Gluster 学习博客:

GlusterFS学习之集群文件系统研究

Glusterfs全局统一命名空间

Gluster 学习实例

HBase + Gluster 实例

MySQL + Gluster 实例


**************************************************

HBase  加载数据 方法 初探

HBase 加载数据的研究

数据导入HBase最常用的三种方式





基于Python的分布式文件管理系统是一种用于管理和分发文件的系统。它使用Python编程语言开发,以实现分布式架构和文件管理功能。 该系统的分布式架构允许将文件分布在多个节点或服务器上,从而实现文件的高可用性和可靠性。每个节点都可以存储部分文件,并将其拷贝到其他节点上以实现冗余备份。这样,即使某个节点发生故障,其他节点仍然可以提供文件的访问和下载服务。 该系统还提供了各种文件管理功能。用户可以通过命令行或图形界面进行文件上传、下载、删除等操作。它还支持文件夹的创建、重命名和移动,使得文件的组织和管理更加方便。 除了基本的文件管理功能,该系统还具有一些高级功能和特性。例如,它能够自动将大文件分割为较小的分块,在多个节点上并行上传和下载,提高文件传输的速度和效率。它还支持文件版本控制,记录文件的修改历史和不同版本,以便用户可以轻松地恢复到先前的版本。 该系统还提供了安全性和权限控制。用户可以设置文件的访问权限,控制哪些用户可以访问和修改文件。此外,它还支持数据加密和身份验证等安全机制,保护用户的文件免受法访问和篡改。 总之,基于Python的分布式文件管理系统是一种功能强大且易于使用的文件管理解决方案。它能够实现文件的分布式存储和管理,提供高可用性、可靠性和高性能的文件访问服务。同时,它还具有丰富的功能和特性,满足用户对文件管理的各种需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值