分布式 文件管理系统

来源:互联网 发布:软件界面设计培训 编辑:程序博客网 时间:2024/05/01 07:21

基础知识篇:

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(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最常用的三种方式





0 0
原创粉丝点击