分布式文件存储系统研究及应用

分布式文件存储系统研究及应用
分布式文件存储系统研究及应用

分布式存储系统研究和应用实践

二〇一二年二月

摘要

物质、能量和信息是自然科学研究的三个基本对象,处理、传输和存储是信息计算的三大基本任务。随着网络技术及信息处理技术的不断发展,个人数据和企业数据的产生量呈现爆炸性膨胀的趋势,IT系统正面临着海量数据存储成本高、管理困难、可靠性低的问题,为了充分利用资源,减少重复的投资,数据存储作为IT系统的主要架构和基础设施之一,逐步被作为一个完整的系统从IT系统中独立出来,分布式存储系统因为具有海量数据存储、高扩展性、高性能、高可靠性、高可用性的特点,目前正被作为企业海量数据存储方案被业界所广泛讨论和应用。因此对于分布式存储系统的研究不仅紧跟目前发展的趋势,而且具有较高的应用价值。

本文基于对分布式存储系统的研究,旨在通过在网络环境下构建具有高传输性能、高可靠性、高可用性的网络分布式文件系统,通过网络数据流方式实现对海量文件系统中的数据进行存储和访问,解决大规模非结构化数据的存储、查询、高性能读取、高容错性的问题,为IT系统提供高性能、高可靠性、高可用性的存储应用服务,并为今后的分布式计算研究提供技术基础。

本文阐述的主要内容如下:

(1)分布式架构的相关理论以及分布式存储系统的应用现状,介绍了分布式

存储系统概念;

(2)然后引入开源项目Hadoop的HDFS分布式文件系统,接着对HDFS关键

运行机制进行了详细分析;

(3)并在此基础上,通过搭建基于HDFS 0.23版本的实验环境进行实际的测试

验证,采集实验数据,并对实验结果作出进一步的分析总结,得到理论

和实际结合的第一手资料;

(4)最后,通过结合实际需求,在对医学影像中心业务分析的基础上,对医

学影像中心存储体系、功能结构及运行环境进行了设计和规划。

关键词:分布式存储系统、HDFS、Hadoop

第一章绪论

1.1背景说明

IDC的一项预测曾指出,“数字宇宙”(digital universe)项目统计得出,2006年的数据总量为0.18ZB,并预测在2011年,数据量将达到1.8ZB。1ZB等于10的21次方字节,或等于1000EB,1,000,000PB,或者大家更熟悉的10亿TB的数据。这相当于世界上每人一个磁盘驱动器所能够容纳的数据的数量级。

在如此强大的需求下,对海量存储容量、高性能、高安全性、高可用性、可扩展性、可管理性的存储的要求不断提高。

1.1.1.关于磁盘存储

目前的情况是,磁盘存储容量快速增加的同时,其访问速度-磁盘数据读取速度却未能与时俱进。目前,普通的1TB磁盘,其传输速率约为100MB/S左右,写入则更慢,而10年前,10G的磁盘,其传输速率也有66M/s,即便换成基于闪存的SSD固态硬盘,也只是将读取速度提高3倍、写入速度提高1.5倍而已,甚至最先进的光纤通道硬盘,和内存的读取和写入数据的速率相比也不在一个数量级上。

一个简单的减少磁盘读取时间的方法就是同时从多个磁盘上读取数据,假设,我们拥有100个磁盘,每个磁盘存储1%的数据,并行读取,所需要的读取时间,也相当于原来的1%左右。

这种方法称之为条带化存储(Strip),是RAID(Redundant Array of Independent Diskes,独立磁盘冗余阵列)技术的一项重要特性,通过使用一组磁盘同时进行I/O操作,从而获得更大的I/O吞度量,并依靠存储冗余信息(镜像+奇偶校验)来保障数据的安全性。

例如RAID10模式,数据块被分别以位或字节为单位进行分割并且并行读/写,同时,为每一块磁盘作磁盘镜像进行冗余,既保证了最高的读写存储性能,又通过镜像保护了数据,缺点是磁盘利用率比较低。

设置RAID 10至少需要安装4块硬盘,当把4块磁盘设置成RAID 10后,每一对磁盘被设置成镜像,每一对磁盘之间被设置成条带以便数据快速传输。下图为RAID10的数据分布及镜像示意。

1.1.

2.网络存储应用

除了个人PC机的本地存储,企业的大多数的存储应用,都是基于局域网或者广域网的文件共享和存储,目前很多简易的局域网内的文件共享和存储应用都是基于文件服务器,主要的功能是提供网络用户访问共享文件,通常是C/S模式,基于FTP或TCP/IP连接。这样的存储服务器,在访问的高峰期,单机IO负载很大,不能充分使用网络带宽,而且扩展性差,可靠性和容错能力需要依靠硬件来完成,比如RAID的磁盘阵列。

随着网络技术的发展,网络的带宽已经超过了磁盘的带宽,现在,很多存储系统方案采用网络存储的技术来解决传统存储的问题,针对I/O是整个网络系统效率低下的瓶颈问题,最有效地方法是将数据从通用的服务器中分离出来,进行集中管理,形成所谓的存储网络。

其中又有两种不同的实现手段,NAS(网络附加存储)和SAN(存储器网络),两者之间的区别在于,NAS是每个访问客户端通过网络共享协议使用同一个文件管理系统,而SAN在每个访问客户端都有个文件管理系统。FC硬盘是普通的SATA 硬盘的成本是的十倍,耗电量也是SATA硬盘的十倍,但是只提供1/10的密度,NAS和SAN虽然解决了存储速度和可靠性的问题,但是其高昂的成本和复杂的管理问题局限了其应用范围。

针对服务器的I/O效率和网络访问的问题,通过分布式系统通过在不同的节点间实现共享,提供多个访问点提高性能,来实现各个节点的高效、一致的数据

共享来解决。

第二章分布式存储相关理论

2.1分布式系统概念

在网络基础设施及服务器性能不断成熟和发展的背景下,分布式系统架构越来越多的为人所关注,分布式系统架构以传统信息处理架构无法比拟的优势特性,正在成为企业实现提高效率、提高灵活性、降低成本的重要选择。

分布式系统(Distributed System)是建立在网络之上的支持分布式处理的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。

所谓的内聚性是指每一个分布节点高度自治,有独立的程序进行管理。透明性是指每一个分布节点对用户的应用来说都是透明的,看不出是本地还是远程。

在一个分布式系统中,一组独立的计算资源展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。

在传统网络系统中,这种统一性、模型以及其中的软件都不存在。用户看到的是实际的机器,计算机网络并没有使这些机器看起来是统一的。如果这些机器有不同的硬件或者不同的操作系统,那么,这些差异对于用户来说都是完全可见的。

分布式系统和传统网络系统的共同点是:多数分布式系统是建立在网络之上的,所以分布式系统与传统网络系统在物理结构上是基本相同的。

他们的区别在于:分布式系统的设计思想和网络系统是不同的。网络系统要求网络用户在使用网络资源时首先必须了解网络资源(比如:计算机的功能与配置、软件资源、网络文件结构等情况);分布式系统是以全局方式管理系统资源的,它可以任意调度网络资源,并且调度过程是“透明”的,在利用分布式系统的过程中,用户并不会意识到有多个处理器的存在,这个系统就像是一个处理器一样。

2.2分布式存储系统概念

由此而知,分布式存储系统是指通过分布式技术,将网络中不同节点上的存储设备通过分布式应用软件集合起来协同工作,共同对外提供数据存储和业务访

问功能的一个系统。

分布式存储系统的最大特点是,数据分散存储在分布式存储系统的各个独立节点上,供用户透明的存取。分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

2.3分布式存储系统的应用现状

以高性能、高容量为主要特性的分布式存储系统,必须满足以下4个条件

1、应用于网络环境中;

2、单个文件数据分布存放在不同的节点上;

3、支持多个终端多个进程并发存取;

4、提供统一的目录空间和访问名称;

只有这样,考虑到目前网络总带宽超过单个磁盘带宽的特点,支持多个进程在多个磁盘上并发存取,增加文件系统的带宽,来提高存储的性能,并且通过动态增减分布节点,来实现整个存储系统容量的动态扩展性。

分布式存储系统因为其高容量、高性能、高并发性以及低成本的特性而被众多IT企业特别是互联网服务提供企业所广泛关注和支持。

下图为一部分常用的云存储产品,可谓是种类繁多、琳琅满目。

随着宽带网络的发展,用户数量的不断增加,CDN(Content delivery network)内容分发、P2P、数据压缩技术的广泛运用,以及分布式技术的完善,分布式存储(云存储)在技术上已经趋于成熟。

从厂商的解决方案来看,面对目前互联网应用PB级的海量存储的存储需求,频繁的数据传输,都是通过应用分布式存储系统,实现在普通PC机上部署节点,通过系统架构设计提供强大的容错能力,针对大型的、分布式的、大量数据访问的应用给用户提供总体性能最高的服务。

2.4分布式存储系统架构分析

目前,分布式系统的应用体系架构,主要有两种实现类型,一种是中心化(Centralization),一种是去中心化(Decentralization)。

2.4.1中心化体系架构

中心化体系结构,顾名思义,就是系统中含有某些“中央节点“。

中心化体系类似于我们网络拓扑中的星型拓扑,用一个节点作为中心节点,其他节点直接与中心节点相连构成的网络,中心节点维护了整个网络的元数据信息,任何对系统的分布式请求都要经过中心节点,中心节点通过处理后,给各个节点分配任务,再由分配到任务的各个节点处理完成后,直接将结果返回到目标位置,因此,中心节点相当复杂,通信的负载也是最大的,而各个节点的负载比较小。

中心化的结构对于系统的可扩展性有较大的影响,因为那个”中心“很可能会成为瓶颈。在互联网上,中心化的结构还是比较常见的,例如,某个新闻网站。逻辑上,所有的用户都会通过访问同一个网址来获得服务。当然,这背后早就不再是一个服务器提供服务了。

大致的体系架构如下图所示:

2.4.1.1联邦化体系结构

在中心化体系结构的基础上延伸出一种联邦式的体系架构来通过对中心节点进行水平扩展的方式解决决单个中心化体系结构的局限性的问题。

因此,联邦化体系结构虽然解决了“热点”的问题,但是不能完全解决单点故障问题,如果某个分区的中心节点失效,其管理的相应文件将不能访问,但是通常,中心节点都会配置有副中心节点,当主中心节点失效后,副中心节点将会接管。

本次论文中要重点论述的分布式存储系统——HDFS中采用了这种联邦化的架构,NameNode相当于一个分区主节点,每个NameNode加上一个Block Pool 形成一个Namesapce Volumn(命名空间卷),相当于磁盘文件系统的一个逻辑卷,

各个逻辑卷加起来呈现的相当于整个硬盘。

2.4.2去中心化体系架构

在这种结构中,相对于中心化架构,不再存在某类中央节点,总体上讲,每个节点的功能都是类似的或者说对称的,类似于我们网络拓扑中的环型拓扑。

对于去中心化结构而言,最重要的问题之一就是如何把这些节点组织到一个网络中。一般而言,系统中的一个节点不可能知道系统中所有的节点,它只能知道在这个网络中自己的邻居并与这些邻居直接交互。

去中心化体系结构,根据系统维护方式,又可以分为两类:结构化网络和非结构化网络。

●结构化网络

网络是通过一个确定的过程建立起来的,节点数据的划分都通过哈希算法进行切分分配,寻址采用DHT(Distributed Hash Table,分布式哈希表)方式(HASH表的应用类似于Oracle的HASH分区概念,通过HASH对数据进行散列分区),节点间通过Gossip协议进行通讯,使网络达到去中心化,提高系统可用性,在这种系统中,各个节点构成一个逻辑的环。

●非结构化网络

在非结构化的网络中,网络的建立带有更多的随机性。每个节点都维护这一

个局部视图(一个包含n个节点的表),这个视图中的节点就是它的邻居。它通过与邻居不断地交换视图内容来更新自己的视图。

在此种结构中,因为整个体系中的节点都是对等,根据其动态组织的特点,所以对等节点可以随意的加入或者离开网络,所以,整个结构是一个自组织的动态网络,因此该体系结构必须控制数据的一致性,确保整个网络中的所有数据可以实现数据同步。正因为去中心化的架构具有数据动态一致性的特点,所以不仅可以做为文件存储系统,还可以作为键值对(Key-Value)的分布式缓存系统进行应用。

大致的体系架构如下图所示:

2.4.3中心化体系结构与去中心化体系结构的比较

中心化体系结构与去中心化体系结构各有优缺点,如下:

●中心化体系结构

优点:

一致性管理方便,可以直接对节点进行查询;

缺点:

存在访问的“热点”现象,单台服务器会形成瓶颈,容易造成单点故障,单点故障会影响个系统的可用性;

●去中心化体系结构

优点:

消除了单点故障,可用性高;

缺点:

一致性管理复杂,依赖节点间的网络通讯,交换机故障所导致的分割,

依然会造成故障,不能直接查询;

综合来看,中心化体系结构最大优势是结构简单、管理方便,查询效率高,去中心化体系结构最大的优势是可用性高,可扩展性高。

下表比较了3种体系结构的综合性能,比较结果如下表所示:

2.4.4“中心化”与“去中心化”混合架构

在实际的使用中,中心化结构和无中心化结构都有各自的问题,所以,实际的系统通常是混合结构的。例如著名的Emule(电驴)和BitTorrent系统。

Emule和BitTorrent都是基于的P2P技术的文件共享软件,它们与传统的文件共享方式的区别是:共享文件不是在集中的服务器上等待用户端来下载,而是分散在所有参与者的硬盘上,所有参与者组成一个虚拟网络。

在Emule中也存在一些服务器,不过这些服务器不再存放文件,而是存放这些共享文件的目录地址,客户端从服务器处得到或搜索到共享文件的地址,然后自动从别的客户端进行下载,参与的客户越多,下载的速度越快。

2.4.5“中心化”与“去中心化”间的选择

对于两种架构设计的优劣,目前在网络上还存在很多争议,有人甚至认为去中心化的设计思想甚至是一种缺陷,为什么这么说呢?去中心化的设计相对于中心化设计的最大好处,也是其最大的优点是有极佳的伸缩性,因为去中心化,相当于无政府化,不用去向中心去登记和注销,从事物的两面性而言,有利必有弊,客户端的每个查询都会涉及到多个节点的响应,并产生不必要的网络IO,这里

讲得查询,主要是基于DHT分布式HASH表的查询,这种设计在巨型、频繁伸缩的网络,比如Emule、Bittorrent这种网络是有其特殊意义的。

由此可见,去中心化的分布式存储方案,从High Performance上讲并不是最佳的企业分布式存储方案。

第三章HDFS分布式存储系统研究

3.1HSDF系统架构和设计要点

3.1.1HDFS的特点

HDFS(Hadoop Distributed File System),是一个设计用来保存大数据量的数据的分布式文件系统(PB级甚至是EB级),并提供快速访问这些数据的能力,数据通过冗余的方式保存在多台机器上,以来保存对失败的容错性和并行应用的高度可用性。

HDFS和现有的网络文件系统相似,是一个运行在普通的硬件之上的分布式网络文件系统,然而它与普通网络文件系统也存在着一定的差别。HDFS具有高容错性,可以部署在低成本的硬件之上,同时HDFS放松了对POSIX的需求,使其可以以流的形式访问文件数据,从而提供高吞吐量地对应用程序的数据进行访问,适合大数据集的应用程序,比如:MapReduce的分布式计算。

HDFS的设计相对网络文件系统,具有高性能、高可靠性、高可用性、高可扩展性的特点,主要表现在以下几个方面:

1)HFDS设计用来保存非常大的数据量信息,就需要将数据分布到大量的机

器上;

2)HFDS的数据保存是可靠的,如果集群中的某些机器工作不正常,数据仍

然是可用的;

3)通过简单添加一些机器,提供快速,可扩展的数据访问能力,使得HDFS

能服务于更多的客户端;

4)在HDFS上的应用与一般的应用不同,它们主要是以流式读为主,做批

量处理,比之关注数据访问的低延迟问题,更关键的在于数据访问的高吞吐量;

5)HDFS与Hadoop MapReduce能很好地集成,它在可能的情况下,能使数

据读取、计算本地化;

3.1.2HDFS的系统架构

HDFS采用master/slave架构,HDFS的架构示意图如下:

从图中可以看出,一个HDFS集群是有一个Namenode和一定数目的Datanode组成。

●NameNode名称节点

Namenode是一个中心服务器,是HDFS的中枢,负责管理文件系统的目

录名字空间信息(namespace)和客户端对文件的访问,并且管理所有的

DataNode;

●DataNode数据节点

Datanode在HDFS中一般是一个节点一个,负责管理节点上它们附带的

存储的Block(数据块)。

在HDFS内部,文件不是放在一块磁盘上,一个文件其实分成一个或多个block(数据块),这些block存储在Datanode集合中不同的DataNode上,NameNode记录有block对应在不同的DataNode上的映射关系。

从图中可以看到NameNode接受客户端的元数据请求,然后对DataNode发出Block Ops(块操作)指令,文件的创建、删除和复制操作,同时决定block到具体Datanode节点的映射。Datanode在Namenode的指挥下进行block的创建、删除和复制。

3.1.3NameNode是整个集群的中枢

可以形象的比喻为劳务中介或包工头,NameNode在线只有一个可用,NameNode主要负责:

1.管理HDFS集群中文件系统的名字空间(Namespace)

打开文件系统、关闭文件系统、重命名文件或者目录等;

2.管理客户端对HDFS集群中的文件系统中的文件的访问

实际上文件以块的形式存储在Datanode上,文件系统客户端向Namenode 请求所要执行操作的文件块(该块存储在指定的Dadanode数据结点上),然后通过与Datanode结点交互来完成文件读写的操作。也就是说,Namenode结点还负责确定指定的文件块到具体的Datanode结点的映射关系。

3.管理Datanode结点的状态报告

包括Datanode结点的健康状态报告和其所在结点上数据块状态报告,以便能够及时处理失效的数据结点。

3.1.4DataNode用于存储数据

在HDFS集群中,DataNode(数据节点)可以形象的比喻为农民工,一般是一台节点服务器对应一个DataNode实例,DataNode的任务是:

1.负责管理它所在结点上存储的数据的读写

Datanode数据结点进程还要在Namenode的统一指挥调度下完成对文件块的创建、删除、复制等操作,当与Namenode交互过程中收到了可以执行文件块的文件块操作的命令后,才开始让文件系统客户端执行指定的操作。

2.向Namenode结点报告状态

每个Datanode结点会周期性地向Namenode发送心跳信号和文件块状态报告,以便Namenode获取到工作集群中Datanode结点状态的全局视图,从而掌握它们的状态。如果存在Datanode结点失效的情况时,Namenode会调度其它Datanode执行失效结点上文件块的复制处理,保证文件块的副本数达到规定数量。

3.执行数据的流水线复制(产生数据冗余)

当文件系统客户端从Namenode服务器进程获取到要进行复制的数据块列表(列表中包含指定副本的存放位置,亦即某个Datanode结点)后,会首先将客户端缓存的文件块复制到第一个Datanode结点上,并且由第一个Datanode向

第二个Datanode结点复制,……,如此下去完成文件块及其块副本的流水线复制。

3.1.5HDFS的设计要点

HDFS基于Google File System的高可扩展、高可用、高性能、面向网络服务的设计,是通过块结构的文件系统设计来实现的:

(1)在HDFS中的单个文件被分成相同大小的块,这些块被分布到HDFS 网络中的多台数据节点(DataNode)的机器上,一个文件可由多个块

组成,它们并不需要放到同一台机器上。

(2)保存每个块的机器是由中心服务器-名称节点(NameNode)通过负载均衡随机选择的,因此访问一个文件需要多台机器协作。

(3)使用多台机器保存一个文件,这些机器中任何一台崩溃都会导致文件不可访问,HDFS通过将每块复制到多台机器(默认3台)的方式来

保证HDFS的高可用性。

HDFS中默认使用块大小为64MB,这使得HDFS减少了对每个文件元数据的存储量,另外,通过把大量数据连续化存放在磁盘上,就可以快速地流式读取数据。这种设计的结果是HDFS倾向于处理大文件。

HDFS文件数据是以一次写入,多次读取的方式访问的,元数据结构(文件名,目录名)会被大量客户端同时修改,所以元数据结构信息不适合进行同步,因为节点和节点之间的同步是相当耗费资源的。

HDFS可靠性和性能主要通过数据块的副本来实现,并且HDFS采用一种称之为Rack-aware(机架感知)的策略来改进数据的可靠性、有效性和网络带宽的利用。

比如:不同的机架间的两台机器的通讯需要通过交换机,显然,同一个机架内的两个节点间的带宽回避不同机架上的两台机器带宽要大。在通常副本数为3的情况下,HDFS的策略将一个副本存放在本地机架上,一个副本放在同一个机架上的另一个节点,最后一个副本放在不同机架上的一个节点。

在读取时,为了降低整体的带宽消耗和读延时,如果客户端同一个机架上有一个副本,那么就读该副本。

HDFS健壮性的主要目标是实现在失败情况下的数据存储可靠性,常见的三种失败:Namenode failures, Datanode failures和网络分割(network partitions)。

1、硬盘数据错误、心跳检测和重新复制

每个Datanode节点都向Namenode周期性地发送心跳包。Namenode在一段时间内收不到Datanode的心跳包,则认为这个Datanode死掉了,存储在这个Datanode上的数据块无法访问,Namenode开始不断查询哪些数据块需要复制。一旦出现Datanode死掉或者副本中断或者Datanode磁盘故障,都要开始进行数据重新复制。

2、数据完整性

当一份HDFS文件建立的时候,会生成这份文件的校验和,保存在HDFS命名空间的一个独立的隐藏文件夹中,客户端拷贝文件时,收到文件后就去匹配这些校验和看文件是否完整。如果不完整,则从另外一个Datanode重新拷贝。

3、负载均衡

HDFS中非常容易出现机器与机器之间磁盘利用率不平衡的情况,比如HDFS 中添加新的数据节点。当HDFS出现不平衡状况的时候,将引发很多问题,比如,机器之间无法达到更好的网络带宽使用率,机器磁盘无法利用等等。

一旦某个Datanode存的数据量低于某个阈值,通过HDFS的Rebalancer程序自动的把其它节点上的数据拷贝过来,使得HDFS达到一个平衡的状态。

4、元数据事务日志和检查点

对于任何对文件系统元数据产生修改的操作,Namenode都会使用一种称为EditLog的事务日志记录下来。

例如,在HDFS中创建一个文件,Namenode就会在Editlog中插入一条记录来表示;整个文件系统的名字空间,包括数据块到文件的映射、文件的属性等,都存储在一个称为FsImage的二进制文件中,这个文件也是放在Namenode所在的本地文件系统上,该文件中将每一个文件或者目录的信息视为一个记录,每条记录中包括该文件(或目录)的名称,大小,user,group,mtime,ctime等等信息,Namespace重启或宕机的时候,就是根据读取这个FsImage文件中的信息来重构Namespace目录树结构。但是,Fsimage始终是磁盘上的一个文件,不可能时时刻刻都跟Namenode内存中的数据结构保持同步,而是每过一段时间更新一次Fsimage文件,以此来保持Fsimage跟Namenode内存的同步。而在一个新Fsimage和上一个Fsimage中间的Namenode操作,就会被记录在Editlog中,所以,FsImage和Editlog是HDFS的核心数据结构。这些文件如果损坏了,整个HDFS 实例都将失效。

由于NameNode只在启动的时候融合FsImage和Editlog文件,所以,随着时间的增长,对于一个繁忙的HDFS网络,EditLog会变得越来越大,造成下一次NameNode启动时间会变得越来越长。

HDFS通过以下几种方法去解决以上问题:

1.Secondary NameNode

Secondary NameNode用来定期合并FsImage和Editlog,把EditLog文件

控制在一个限度下,Secondary NameNode将最新的检查点存储在于

Primary NameNode相同方式目录下的目录下。这样,检查点的image总

是可以准备被NameNode读取。如果Primary NameNode挂掉了,硬盘

数据需要时间恢复或者不能恢复了,这时候可以通过将Secondary

NameNode的CheckPoint文件到Primary NameNode的fs.checkpoint.dir

指向的文件夹,执行Import CheckPoint命令进行恢复。NameNode会读

取需要导入的Checkpoint文件,保存到https://www.360docs.net/doc/c15871837.html,.dir目录下,(目前自动

重启或在另一台机器上做Namenode故障转移的功能还没实现)。

2.Checkpoint Node(检查点)

CheckPoint Node是Secondary NameNode的改进替代版,Checkpoint Node

周期性的创建NameSpace的检查点。它在活跃的NameNode上下载

Fsimage和editlog,然后本地的把它们融合在一起,然后将新的镜像上传

给NameNode。

3.Backup Node(备份节点)

这个结点的模式有点像mysql中的主从结点复制功能,NameNode可以

实时的将日志传送给BackupNode,而Secondary NameNode是每隔一段

时间去NameNode下载FsImage 和Editlog文件,而BackupNode是实时

的得到操作日志,然后将操作合并到Fsimage里。当NameNode有日志

时,不仅会写一份到本地editslog的日志文件,同时会向BackupNode的

网络流中写一份,当流缓冲达到阀值时,将会写入到BackupNode结点

上,BackupNode收到后就会进行合并操作,这样来完成低延迟的日志复

制功能。

HDFS的CheckPoint过程如下图所示:

HDFS的高性能和高可用性的设计使得它局限于某些应用范围,HDFS为此作出了一些权衡:

1.应用程序要使用流式读取文件,更多的考虑到了数据批处理,而不

是用户交互处理,所以不支持定位到文件的任一位置;

2.为了简化了数据一致性问题,实现高吞吐量的数据访问,适合一次

写入多次读取,不支持附加(Append)读写以更新文件;

3.文件很大,流式读取,所以系统不提供本地缓存机制;

3.2HDFS关键运行流程解析

下面就HDFS的几个关键运行流程进行解析:

3.2.1格式化

HDFS部署好了之后并不能马上使用,首先要对配置的文件系统进行格式化。

这里的格式化指的是对HDFS的一些清除与准备工作,HDFS中的NameNode 主要被用来管理整个分布式文件系统的命名空间(实际上就是目录和文件)的元数据信息,所以,NameNode会持久化这些数据为一个称为FsImage的二进制文件中,并保存到本地的文件系统中,同时为了保证数据的可靠性,还加入了称之为Editlog的操作日志,这两个文件分别存在配置文件的https://www.360docs.net/doc/c15871837.html,.dir和https://www.360docs.net/doc/c15871837.html,.edits.dir目录下,格式化时,NameNode会清空两个目录下的所有文件,之后,会在目录https://www.360docs.net/doc/c15871837.html,.dir和https://www.360docs.net/doc/c15871837.html,.edits.dir分别下创建文件fsimage、fstime、VERSION、image/fsimage,文件的用途如下:

●fsimage:存储命名空间(实际上就是目录和文件)的元数据信息;

●edits:用来存储对命名空间操作的日志信息,实现NameNode节点的恢

复;

●fstime:用来存储check point 的时间;

●VERSION:用来存储NameNode版本信息;

●/image/fsimage: 上一次提交前的fsimage文件;

3.2.2启动过程

在HDFS整个系统中,包括了一台NameNode节点和若干个DataNode节点,HDFS的启动过程就是一个NameNode节点以及所有DataNode节点的启动过程;其中,NameNode的启动方式有:format、regular、upgrade、rollback、finalize、importCheckpoint六种,DataNode的启动方式有:regular、rollback两种;正常的启动都是regular方式,NameNode节点一定要在其它的任何DataNode节点之前启动,而且,在NameNode节点启动之后,其它的DataNode也不能马上就启动。

NameNode启动步骤如下:

1.启动RPC Server;

2.读取fsimage文件,读取editlog文件,并进行合并,加载FSImage到内

存,开启Server远程调用服务;

3.进入安全模式,等待DataNode节点注册;

4.统计DataNode节点上报的Block Report,一定时间间隔没有新的注册和

报告,就离开安全模式,开始服务;

NameNode的启动流程如下:

3.2.3DataNode注册

HDFS启动时,DataNode节点要向NameNode节点注册,一是告诉NameNode 节点自己提供服务的网络地址端口,二是获取NameNode节点对自己的管理与控制。NameNode节点作为中心服务器要来收集所有的DataNode的当前工作情况,并以此来负责整个集群的负载均衡与任务的合理安排调度。

分布式数据库系统及其一致性方法研究

2007年第24卷第10期微电子学与计算机 1引言 分布式数据库系统在系统结构上的真正含义是指物理上分布、逻辑上集中的分布式数据库结构。数据在物理上分布后,由系统统一管理,用户看到的似乎不是一个分布式数据库,而是一个数据模式为全局数据模式的集中式数据库[1 ̄5]。 分布式数据库系统包括两个重要组成部分:分布式数据库和分布式数据库管理系统。分布式数据库系统具有位置透明性和复制透明性,使用户看到的系统如同一个集中式系统。分布式数据库系统分为三类:同构同质型DDBS、同构异质型DDBS和异构DDBS。同构同质型DDBS是指各个场地都采用同一类型的数据模型,并且是同一型号数据库管理系统;同构异质型DDBS是指各个场地都采用同一类型的数据模型,但是数据库管理系统是不同型号的;异构型DDBS是指各个场地的数据模型是不同的类型。 分布式结构是相对于集中式结构而言的。从数据处理的角度来说,典型的集中式结构是数据集中存放和处理,用户通过远程终端或通过网络连接来共享集中存放的数据。分布式结构则是将数据及其处理分散在不同场地,各场地各自管理一部分数据,同时又通过网络系统相互连接。各场地的用户除可以访问和处理本地数据外,也可以访问和处理别的场地的数据。分布式数据库是典型的分布式结构。它包括对数据的分布存储和对事务的分布处理。设计一个分布式数据库系统会遇到许多集中式数据库设计中所没有的问题,一致性是其中必须认真对待和解决的主要问题。 2DDBS的体系结构 2.1综合型体系结构 综合型体系结构是指在综合权衡用户需求之后,设计出分布的数据库,然后再设计出一个完整的DBMS,把DBMS的功能按照一定的决策分散配置在一个分布的环境中。每个结点的DBMS均熟知整个网络的情况,也了解其它结点的情况。从整体上,各结点组成一个完整的系统,它们之间是靠进程通讯的手段来维持互访连接,如图1所示。2.2联合型体系结构 联合型体系结构是指每个结点上先有DBMS,以此为基础,再建立分布式环境以实现互访连接。若各个结点的局部DBMS支持同一种数据模式和 分布式数据库系统及其一致性方法研究 刘萍芬,马瑞芳,王军 (西安交通大学电信学院,陕西西安710049) 摘要:分布式数据库系统是数据库领域中的一个主要研究方向,数据一致性维护是分布式数据库系统中的一个非常关键的技术问题。在分析分布式数据库系统体系结构的基础上,讨论了两种一致性方法:两阶段提交和复制服务器,并提出一种具有复制服务器的分布式数据库系统的结构框架,它具有有效性和实用性。 关键词:分布式数据库系统;一致性;两阶段提交;复制服务器 中图分类号:TP31文献标识码:A文章编号:1000-7180(2007)10-0137-03 ResearchofDistributedDatabaseSystemandDataConsistency LIUPing-fen,MARui-fang,WANGJun (CollegeofElectronicsandInformationEngineeting,Xi′anJiaotongUniversity,Xi′an710049,China) Abstract:Distributeddatabasesystemisamainresearchdirectioninthedatabasefield.Maintainingthedataconsis-tencyisacriticaltechnicalprobleminthedistributeddatabasesystem.Thispaperdiscussestwomethodsofmaintainingdataconsistencybasedonanalyzingthestructureofthedistributeddatabasesystem,whichare2PCandreplicationserv-er.Thenthepaperputsforwardadistributeddatabaseframeworkwhichhavereplicationserverstructure.Anditiseffec-tiveandapplied. Keywords:distributeddatabasesystem;dataconsistency;2PC;replicationserver 收稿日期:2006-10-27 137

分布式控制系统的七个功能和应用

分布式控制系统的七个功能和应用 一、处理复杂的过程 在工业自动化结构中,PLC编程逻辑控制器用于对高速要求的过程参数进行控制和监视。但是由于I / O设备数量的限制,PLC不能处理复杂的结构。因此,对于复杂的控制应用而言,DCS是具有更多专用控制器的I / O的首选。这些用于多个产品的设计在多个过程(例如批量过程控制)中的制造过程中。 二、系统冗余 DCS可以在各个层面通过冗余功能提高系统的可用性。在任何停电后恢复稳态运行,无论是有计划的还是无计划的,与其他自动化控制设备相比都有所改善。 在系统运行过程中,即使在某些异常情况下,冗余系统也可以持续保持系统运行,从而提高了系统的可靠性。

三、很多自定义的功能块 四、强大的编程语言 它提供了更多的编程语言,如梯形图,功能块,顺序等,用于创建基于用户兴趣的自定义编程。 五、更复杂的HMI 与SCADA系统类似,DCS也可以通过HMI(人机界面)进行监控,为操作人员提供充足的数据,为各种过程充电,充当系统的核心。但是这种类型的工业控制系统覆盖了很大的地理区域,而DCS则覆盖了密闭区域。 DCS完全把整个加工厂作为PC窗口控制室。人机界面的趋势记录和图形表示提供了有效的用户界面。DCS强大的报警系统可以帮助操作员更快速地响应设备状况。

六、可扩展平台 通过在通信系统中添加更多的客户端和服务器,并在分布式控制器中增加更多的I / O模块,DCS的结构可以根据从小到大的服务器系统的I / O数量来扩展。 六、系统安全 获得控制各种过程导致工厂安全。DCS设计提供完善的安全系统来处理系统功能,从而实现更好的工厂自动化控也提供不同级别的安全性,如工程师级别,企业家级别,操作员级别等。 分布式控制系统的应用 DCS系统可以在一个简单的应用程序中实现,如使用微控制器网络的负载管理。这里的输入是从一个键盘给一个微控制器,与另外两个微控制器通信。其中一个微控制器用于显示过程的状态以及负载,另一个微控制器控制继电器驱动器。继电器驱动器又驱动继电器来操作负载。

分布式存储系统的一些理解和实践

分布式存储系统的一些理解和实践 张建伟 一、分布式存储系统介绍 1.简介 互联网数据规模越来越大,并发请求越来越高,传统的关系数据库,在很多使用场景下并不能很好的满足需求。分布式存储系统应运而生。它有良好的扩展性,弱化关系数据模型,甚至弱化一致性要求,以得到高并发和高性能。按功能分类,主要有以下几种: ?分布式文件系统 hdfs ceph glusterfs tfs ?分布式对象存储 s3(dynamo) ceph bcs(mola) ?分布式表格存储 hbase cassandra oceanbase ?块存储 ceph ebs(amazon) 分布式存储系统,包括分布式系统和单机存储两部分;不同的系统,虽在功能支持、实现机制、实现语言等方面是有差异的,但其设计时,关注的关键问题是基本相同的。单机存储的主流实现方式,有hash引擎、B+树引擎和LSM树(Log Structured Merge Tree)三种,不展开介绍。本文第二章节,主要结合hbase、cassandra和ceph,讲下分布式系统设计部分,需要关注的关键问题。 2.适用场景 各分布式存储系统功能定位不尽相同,但其适用和不适用的场景,在一定程度上是相同的,如下。

1)适用 大数据量(大于100T,乃至几十PB) key/value或者半结构化数据 高吞吐 高性能 高扩展 2)不适用 Sql查询 复杂查询,如联表查询 复杂事务 二、分布式存储系统设计要点 1.数据分布 分布式存储,可以由成千甚至上万台机器组成,以实现海量数据存储和高并发。那它最先要解决的就是数据分布问题,即哪些数据存储在哪些机器(节点)上。常用的有hash类算法和用meta表映射两种方式。一般完全分布式的设计(无master节点),会用hash类算法;而集中式的设计(有master节点)用meta表映射的方式。两者各有优缺点,后面讲到具体问题时再做比较。 1)一致性hash 将存储节点和操作的key(key唯一标识存储的object,有时也叫object name)都hash到0~2的32次方区间。映射到如下环中的某个位置。沿操作key的位置顺时针找到的第一个节点即为此key的primary存储节点。如下图所示:

分布式文件系统设计方案

分布式文件系统(DFS)解决方案 一“分布式文件系统(DFS)”概述 DFS并不是一种文件系统,它是Windows Server System上的一种客户/服务器模式的网络服务。它可以让把局域网中不同计算机上的不同的文件共享按照其功能组织成一个逻辑的分级目录结构。系统管理员可以利用分布式文件系统(DFS),使用户访问和管理那些物理上跨网络分布的文件更加容易。通过DFS,可以使分布在多个服务器或者不同网络位置的文件在用户面前显示时,就如同位于网络上的一个位置。用户在访问文件时不再需要知道和指定它们的实际物理位置。 例如,如果您的销售资料分散在某个域中的多个存储设备上,您可以利用DFS 使其显示时就好像所有的资料都位于同一网络共享下,这样用户就不必到网络上的多个位置去查找他们需要的信息。 二部署使用“分布式文件系统(DFS)”的原因 ●访问共享文件夹的用户分布在一个站点的多个位置或多个站点上; ●大多数用户都需要访问多个共享文件夹; ●通过重新分布共享文件夹可以改善服务器的负载平衡状况; ●用户需要对共享文件夹的不间断访问;

●您的组织中有供内部或外部使用的Web 站点; ●用户访问共享文件需要权限。 三“分布式文件系统(DFS)”类型 可以按下面两种方式中的任何一种来实施分布式文件系统: 1.作为独立的分布式文件系统。 ●不使用Active Directory。 ●至多只能有一个根目录级别的目标。 ●使用文件复制服务不能支持自动文件复制。 ●通过服务器群集支持容错。 2.作为基于域的分布式文件系统。 ●必须宿主在域成员服务器上。 ●使它的DFS 名称空间自动发布到Active Directory 中。 ●可以有多个根目录级别的目标。 ●通过FRS 支持自动文件复制。 ●通过FRS 支持容错。 四分布式文件系统特性 除了Windows Server System 中基于服务器的DFS 组件外,还有基于客户的DFS 组件。DFS 客户程序可以将对DFS 根目录或DFS 链接的引用缓存一段时间,该时间由管理员指定。此存储和读取过程对于

项目服务投标文件方案(分布式存储平台建设方案)

分布式存储平台建设方案 1.分布式存储平台简介 Hadoop的目的是基于一种新的方法来存储和处理复杂的数据。通过把数据均衡分布 到集群上,通过复制副本以确保数据的可靠性和容错。存储和计算都分布到多个机器, 充分体现数据的本地性,现在的很多数据库也都支持数据分片技术, Hadoop可以运行在低配置的Pc Server服务器上面的分布式集群技术,通过把海量数据分布式存储后,通过分布式计算模型来进行海量数据分析。 优势明显: - 效率提高 - 弹性扩容 - 弹性计算 2.分布式存储的趋势 ?Data Scalability: 单台机器的容量不足以(经济的) 承载所有资料,所以需要分散。如:NoSQL ?Computing Scalability: 单台机器的运算能力不足以(经济的) 及时完成运算所以需要分散。 3.分布式存储平台搭建 分布式数据处理框架为用户提供容易使用的并行编程模式、处理海量数据的处理框架,用于对大规模数据集的并行处理。处理能力可以通过增加或减少机器达到动态调整。分布式数据处理框架采用先进的容错技术,确保处理任务的可靠性,即使在异常情况下,如机器宕机、断网的情况下,确保处理任务的实时性和准确性。

分布式数据处理框架是建立在分布式存储和分布式数据库的基础之上。 分布式数据处理框架具有如下特点: ●在高效率并行分布式软件的支撑下,可以实时完成数据处理和分析工作, 如数据处理、数据查询、和统计分析等。数据处理不会出现数据堆积现 象,各类分析和查询工作基本都在秒级完成,具有前所未有的高效性。 ●响应速度快速:采用分布式处理的方式,性能与节点数成正比,通过增 加节点的方式,可将性能提升,以达到满足需求的处理要求。 ●高可靠性:任何一个节点出现故障,系统将自动屏蔽,而且不会出现丢 失数据的现象。 ●可伸缩性:在不停机的情况下,增加节点,平台的处理能力自动增加; 减少节点,平台的处理能力自动缩减。这样,可以做到与资源池的无缝 对接,根据处理和存储任务动态地申请或释放资源,最大限度地提高资 源利用率。 ●高性价比:采用X86架构廉价处理机构建云处理平台,用软件容错替代 硬件容错,大大节省成本。在目标性能和可靠性条件下,可比传统的小 型机加商用数据库方案节省10倍左右的成本。 4.分布式存储平台同步 大数据基础平台的数据库服务包括传统的关系型数据库服务和分布式数据库。 分布式数据库系统使用计算机网络将物理位置分散而管理和控制又需要不同程度集中的多个逻辑单位(通常是集中式数据库系统)连接起来,共同组成一个统一的数据库系统,因此,分布式数据库系统可以看成是计算机网络与数据库系统的有机结合。 分布式数据库具有如下特点: 1、物理分布性:分布式数据库系统中的数据不是存储在一个站点上,而是分散存储在由计算机网络联结起来的多个站点上。 2、逻辑整体性:分布式数据库系统中的数据物理上是分散在各个站点中的,

分布式数据库系统的研究—张晓丽

论文 论文题目:分布式数据库系统的研究 所在单位:太原南瑞继保电力有限公司 姓名:张晓丽 二〇一六年九月 分布式数据库系统的研究 摘要 随着智能终端的快速发展,当今对于数据库的访问请求通过网络高速增长,一些企业关键业务内容的数据平均每秒都要处理几千乃至于上万次的请求,对于企业数据库的响应速度提出了很高的要求。本文介绍了分布式数据库的定义及其特点,阐述分析了分布式数据库系统的关键技术。 关键词:分布式数据库系统;同步技术;加密技术 1分布式数据库系统的定义 计算机网络的发展为用户从网络中获取数据信息提供了便利,由于网络用户的逐年增长,网络信息量越来越大,因此信息查询、流通的效率成为制约网络发展的因素。数据库系统是由数据库和数据管理软件一同构成的一体的管理系统,为当今信息时代网络上海量数据信息的传输、存储、访问以及共享提供了保障。 分布式数据库系统(Distributed Database System,DDBS)是一种数据集合,由多个小型计算机系统和相应的配套数据库,以网络的形式实现之间连接构成了统一的数据库。分布式数据库系统是一种能够帮助数据库实现分布处理的系统,能够辅助多台计算机体系的整体结构任务处理。 分布式数据库系统可按其分布组成分为两种类型:一种是物理分布逻辑集中,即逻辑上数据集合属于同一系统,而在物理上这些数据集合分布在多台联网计算机上。此类数据库系统适用于用途单一、专业性强的中小企业或部门;另外一种是逻辑上或是物理上都是分布的,这种分布式数据库系统类型主要用于集成大范围数据库。 2分布式数据库系统的特点 2.1数据分布的透明性 在分布式数据库系统中,数据的独立性是系统的核心,由于分布性的存在使得数据独立性的要求更加复杂,同时也更加丰富。数据的独立性用数据分布的透明性来描述,分布的透明性表现在用户在调用应用程序中的数据库是时,不必具体了解数据存储的物理位置,也不必关心局部场地上数据库支持哪种数据模型。增加了数据的重复利用率。 2.2自治性与共享性 每个局部数据库管理系统可以对本地数据库进行独立管理,选择该站点数据是否共享到全局数据库,对于无需进行全局共享的数据,分布式数据库系统会将其保留在分站点中,从而节省数据流量。 在普通用户使用分布式数据库系统时,如需要查询或者修改某一分站点数据,无论该数据位于任何站点,用户可以直接进行查询工作,称作全局共享。即在各个分布数据库站点,能够支持网络上其他站点及用户对于数据库系统的使用,能够提供本地数据库中数据的全局共享。 2.3可靠性 分布式数据库系统具有更高的可靠性和灵活性,与集中式数据库系统相比,分布式数据库系

分布式系统架构设计

本文作者Kate Matsudaira是一位美丽的女工程副总裁,曾在Sun Microsystems、微软、亚马逊这些一流的IT公司任职。她有着非常丰富的工作经验和团队管理经验,当过程序员、项目经理、产品经理以及人事经理。专注于构建和操作大型Web应用程序/网站,目前她的主要研究方向是SaaS(软件即服务)应用程序和云计算(如大家所说的大数据)。 本文是作者在AOSA一书介绍如何构建可扩展的分布式系统里的内容,在此翻译并分享给大家。 开源软件已经成为许多大型网站的基本组成部分,随着这些网站的逐步壮大,他们的网站架构和一些指导原则也开放在开发者们的面前,给予大家切实有用的指导和帮助。 这篇文章主要侧重于Web系统,并且也适用于其他分布式系统。 Web分布式系统设计的原则 构建并运营一个可伸缩的Web站点或应用程序到底是指什么?在最初,仅是通过互联网连接用户和访问远程资源。 和大多数事情一样,当构建一个Web服务时,需要提前抽出时间进行规划。了解大型网站创建背后的注意事项以及学会权衡,会给你带来更加明智的决策。下面是设计大型Web系统时,需要注意的一些核心原则: ?可用性 ?性能 ?可靠性 ?可扩展 ?易管理 ?成本 上面的这些原则给设计分布式Web架构提供了一定的基础和理论指导。然而,它们也可能彼此相左,例如实现这个目标的代价是牺牲成本。一个简单的例子:选择地址容量,仅通过添加更多的服务器(可伸缩性),这个可能以易管理(你不得不操作额外的服务器)和成本作为代价(服务器价格)。 无论你想设计哪种类型的Web应用程序,这些原则都是非常重要的,甚至这些原则之间也会互相羁绊,做好它们之间的权衡也非常重要。 基础

分布式文件存储方案

1DFS系统 (DFS) 是AFS的一个版本,作为开放软件基金会(OSF)的分布 分布式文件系统 式计算环境(DCE)中的文件系统部分。 如果文件的访问仅限于一个用户,那么分布式文件系统就很容易实现。可惜的是,在许多网络环境中这种限制是不现实的,必须采取并发控制来实现文件的多用户访问,表现为如下几个形式: 只读共享任何客户机只能访问文件,而不能修改它,这实现起来很简单。 受控写操作采用这种方法,可有多个用户打开一个文件,但只有一个用户进行写修改。而该用户所作的修改并不一定出现在其它已打开此文件的用户的屏幕上。 并发写操作这种方法允许多个用户同时读写一个文件。但这需要操作系统作大量的监控工作以防止文件重写,并保证用户能够看到最新信息。这种方法即使实现得很好,许多环境中的处理要求和网络通信量也可能使它变得不可接受。 NFS和AFS的区别 NFS和AFS的区别在于对并发写操作的处理方法上。当一个客户机向服务器请求一个文件(或数据库记录),文件被放在客户工作站的高速缓存中,若另一个用户也请求同一文件,则它也会被放入那个客户工作站的高速缓存中。当两个客户都对文件进行修改时,从技术上而言就存在着该文件的三个版本(每个客户机一个,再加上服务器上的一个)。有两种方法可以在这些版本之间保持同步: 无状态系统在这个系统中,服务器并不保存其客户机正在缓存的文件的信息。因此,客户机必须协同服务器定期检查是否有其他客户改变了自己正在缓存的文件。这种方法在大的环境中会产生额外的LAN通信开销,但对小型LAN来说,这是一种令人满意的方法。NFS 就是个无状态系统。 回呼(Callback)系统在这种方法中,服务器记录它的那些客户机的所作所为,并保留它们正在缓存的文件信息。服务器在一个客户机改变了一个文件时使用一种叫回叫应答(callbackpromise)的技术通知其它客户机。这种方法减少了大量网络通信。AFS(及OSFDCE的DFS)就是回叫系统。客户机改变文件时,持有这些文件拷贝的其它客户机就被回叫并通知这些改变。 无状态操作在运行性能上有其长处,但AFS通过保证不会被回叫应答充斥也达到了这一点。方法是在一定时间后取消回叫。客户机检查回叫应答中的时间期限以保证回叫应答是当前有效的。回叫应答的另一个有趣的特征是向用户保证了文件的当前有效性。换句话说,若

海量数据下分布式数据库系统的探索与研究

海量数据下分布式数据库系统的探索与研究 摘要:当前,互联网用户规模不断扩大,这些都与互联网的快速发展有关。现 在传统的数据库已经不能满足用户的需求了。随着云计算技术的飞速发展,我国 海量数据快速增长,数据量年均增速超过50%,预计到2020年,数据总量全球 占比将达到20%,成为数据量最大、数据类型最丰富的国家之一。采用分布式数 据库可以显著提高系统的可靠性和处理效率,同时也可以提高用户的访问速度和 可用性。本文主要介绍了分布式数据库的探索与研究。 关键词:海量数据;数据库系统 1.传统数据库: 1.1 层次数据库系统。 层次模型是描述实体及其与树结构关系的数据模型。在这个结构中,每种记 录类型都由一个节点表示,并且记录类型之间的关系由节点之间的一个有向直线 段表示。每个父节点可以有多个子节点,但每个子节点只能有一个父节点。这种 结构决定了采用层次模型作为数据组织方式的层次数据库系统只能处理一对多的 实体关系。 1.2 网状数据库系统。 网状模型允许一个节点同时具有多个父节点和子节点。因此,与层次模型相比,网格结构更具通用性,可以直接描述现实世界中的实体。也可以认为层次模 型是网格模型的特例。 1.3 关系数据库系统。 关系模型是一种使用二维表结构来表示实体类型及其关系的数据模型。它的 基本假设是所有数据都表示为数学关系。关系模型数据结构简单、清晰、高度独立,是目前主流的数据库数据模型。 随着电子银行和网上银行业务的创新和扩展,数据存储层缺乏良好的可扩展性,难以应对应用层的高并发数据访问。过去,银行使用小型计算机和大型存储 等高端设备来确保数据库的可用性。在可扩展性方面,主要通过增加CPU、内存、磁盘等来提高处理能力。这种集中式的体系结构使数据库逐渐成为整个系统的瓶颈,越来越不适应海量数据对计算能力的巨大需求。互联网金融给金融业带来了 新的技术和业务挑战。大数据平台和分布式数据库解决方案的高可用性、高可靠 性和可扩展性是金融业的新技术选择。它们不仅有利于提高金融行业的业务创新 能力和用户体验,而且有利于增强自身的技术储备,以满足互联网时代的市场竞争。因此,对于银行业来说,以分布式数据库解决方案来逐步替代现有关系型数 据库成为最佳选择。 2.分布式数据库的概念: 分布式数据库系统:分布式数据库由一组数据组成,这些数据物理上分布在 计算机网络的不同节点上(也称为站点),逻辑上属于同一个系统。 (1)分布性:数据库中的数据不是存储在同一个地方,更准确地说,它不是 存储在同一台计算机存储设备中,这可以与集中数据库区别开来。 (2)逻辑整体性:这些数据在逻辑上是相互连接和集成的(逻辑上就像一个 集中的数据库)。 分布式数据库的精确定义:分布式数据库由分布在计算机网络中不同计算机

分布式存储技术及应用介绍

根据did you know(https://www.360docs.net/doc/c15871837.html,/)的数据,目前互联网上可访问的信息数量接近1秭= 1百万亿亿 (1024)。毫无疑问,各个大型网站也都存储着海量的数据,这些海量的数据如何有效存储,是每个大型网站的架构师必须要解决的问题。分布式存储技术就是为了解决这个问题而发展起来的技术,下面让将会详细介绍这个技术及应用。 分布式存储概念 与目前常见的集中式存储技术不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。 具体技术及应用: 海量的数据按照结构化程度来分,可以大致分为结构化数据,非结构化数据,半结构化数据。本文接下来将会分别介绍这三种数据如何分布式存储。 结构化数据的存储及应用 所谓结构化数据是一种用户定义的数据类型,它包含了一系列的属性,每一个属性都有一个数据类型,存储在关系数据库里,可以用二维表结构来表达实现的数据。 大多数系统都有大量的结构化数据,一般存储在Oracle或MySQL的等的关系型数据库中,当系统规模大到单一节点的数据库无法支撑时,一般有两种方法:垂直扩展与水平扩展。 ? 垂直扩展:垂直扩展比较好理解,简单来说就是按照功能切分数据库,将不同功能的数据,存储在不同的数据库中,这样一个大数据库就被切分成多个小数据库,从而达到了数据库的扩展。一个架构设计良好的应用系统,其总体功能一般肯定是由很多个松耦合的功能模块所组成的,而每一个功能模块所需要的数据对应到数据库中就是一张或多张表。各个功能模块之间交互越少,越统一,系统的耦合度越低,这样的系统就越容易实现垂直切分。 ? 水平扩展:简单来说,可以将数据的水平切分理解为按照数据行来切分,就是将表中的某些行切分到一个数据库中,而另外的某些行又切分到其他的数据库中。为了能够比较容易地判断各行数据切分到了哪个数据库中,切分总是需要按照某种特定的规则来进行的,如按照某个数字字段的范围,某个时间类型字段的范围,或者某个字段的hash值。 垂直扩展与水平扩展各有优缺点,一般一个大型系统会将水平与垂直扩展结合使用。 实际应用:图1是为核高基项目设计的结构化数据分布式存储的架构图。

分布式数据库系统复习题

一、何为分布式数据库系统?一个分布式数据库系统有哪些特点? 答案:分布式数据库系统通俗地说,是物理上分散而逻辑上集中的数据库系统。分布式数据库系统使用计算机网络将地理位置分散而管理和控制又需要不同程度集中的多个逻辑单位连接起来,共同组成一个统一的数据库系统。因此,分布式数据库系统可以看成是计算机网络与数据库系统的有机结合。一个分布式数据库系统具有如下特点: 物理分布性,即分布式数据库系统中的数据不是存储在一个站点上,而是分散存储在由计算机网络连接起来的多个站点上,而且这种分散存储对用户来说是感觉不到的。 逻辑整体性,分布式数据库系统中的数据物理上是分散在各个站点中,但这些分散的数据逻辑上却构成一个整体,它们被分布式数据库系统的所有用户共享,并由一个分布式数据库管理系统统一管理,它使得“分布”对用户来说是透明的。 站点自治性,也称为场地自治性,各站点上的数据由本地的DBMS管理,具有自治处理能力,完成本站点的应用,这是分布式数据库系统与多处理机系统的区别。 另外,由以上三个分布式数据库系统的基本特点还可以导出它的其它特点,即:数据分布透明性、集中与自治相结合的控制机制、存在适当的数据冗余度、事务管理的分布性。 二、简述分布式数据库的模式结构和各层模式的概念。 分布式数据库是多层的,国内分为四层: 全局外层:全局外模式,是全局应用的用户视图,所以也称全局试图。它为全局概念模式的子集,表示全局应用所涉及的数据库部分。 全局概念层:全局概念模式、分片模式和分配模式 全局概念模式描述分布式数据库中全局数据的逻辑结构和数据特性,与集中式数据库中的概念模式是集中式数据库的概念视图一样,全局概念模式是分布式数据库的全局概念视图。分片模式用于说明如何放置数据库的分片部分。分布式数据库可划分为许多逻辑片,定义片段、片段与概念模式之间的映射关系。分配模式是根据选定的数据分布策略,定义各片段的物理存放站点。 局部概念层:局部概念模式是全局概念模式的子集。局部内层:局部内模式 局部内模式是分布式数据库中关于物理数据库的描述,类同集中式数据库中的内模式,但其描述的内容不仅包含只局部于本站点的数据的存储描述,还包括全局数据在本站点的存储描述。 三、简述分布式数据库系统中的分布透明性,举例说明分布式数据库简单查询的 各级分布透明性问题。 分布式数据库中的分布透明性即分布独立性,指用户或用户程序使用分布式数据库如同使用集中式数据库那样,不必关心全局数据的分布情况,包括全局数据的逻辑分片情况、逻辑片段的站点位置分配情况,以及各站点上数据库的数据模型等。即全局数据的逻辑分片、片段的物理位置分配,各站点数据库的数据模型等情况对用户和用户程序透明。

典型分布式文件系统概述

分布式文件系统概述(一) 杨栋 yangdonglee@https://www.360docs.net/doc/c15871837.html, 2006-12 摘要 文件系统是操作系统用来组织磁盘文件的方法和数据结构。传统的文件系统指各种UNIX平台的文件系统,包括UFS、FFS、EXT2、XFS等,这些文件系统都是单机文件系统,也称本地文件系统。随着网络的兴起,为了解决资源共享问题,出现了分布式文件系统。分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。本文1简要回顾了本地文件系统,然后按照发展例程大致介绍了2006年之前各时期主要的分布式文件系统,最后从设计目标、体系结构及关键技术等方面比较了各个分布式文件系统的异同。目前很火的Hadoop文件系统、S3文件系统都是从NFS等早期文件系统一步步演化而来的,了解分布式文件系统的历史,有助于大家更加深刻地领会分布式文件系统的精髓。 1本文写于2006年底,借鉴了别人的大量资料,目的是为了与同学们分享分布式文件系统的发展史。笔者在硕士期间跟随中科院计算所的孟老师、熊老师和唐荣锋进行分布式文件系统的研究和开发。分布式文件系统源远流长,本文只是选择了其发展史上的部分实例进行简单描述,由于笔者水平十分有限,错误之处难免很多,各位同学发现问题之后麻烦回复邮件到yangdonglee@https://www.360docs.net/doc/c15871837.html,,我会尽全力完善,或者请各位同学自行修正。笔者目前在百度进行云计算方面的研究和开发,希望有兴趣的同学一起进行探讨。

目录 1.引言 (5) 2.本地文件系统 (5) 2.1FFS (6) 2.2LFS (6) 2.3Ext3 (7) 3.分布式文件系统 (7) 3.1 发展历程 (7) 3.2分布式文件系统分类 (8) 3.2.1 实现方法 (8) 3.2.2研究状况 (8) 3.3 NFS (9) 3.3.1概述 (9) 3.3.2 体系结构 (9) 3.3.3 通信机制 (10) 3.3.4进程 (10) 3.3.5 命名 (10) 3.3.6 同步机制 (11) 3.3.7 缓存和复制 (11) 3.3.8 容错性 (12) 3.3.9 安全性 (13) 3.4 AFS、DFS、Coda和InterMezzo (13) 3.5 SpriteFS和Zebra (14) 3.6xFS (16) 3.6.1 概述 (16) 3.6.2 体系结构 (16) 3.6.3 通信 (16) 3.6.4 进程 (17) 3.6.5 命名 (18) 3.6.6 缓存 (19)

(最新整理)分布式数据库研究现状及发展趋势

(完整)分布式数据库研究现状及发展趋势 编辑整理: 尊敬的读者朋友们: 这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)分布式数据库研究现状及发展趋势)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。 本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)分布式数据库研究现状及发展趋势的全部内容。

山西大学研究生学位课程论文(2014 —--— 2015 学年第 2 学期) 学院(中心、所):计算机与信息技术学院 专业名称:计算机应用技术 课程名称:分布式数据库技术 论文题目:分布式数据库研究现状及发展趋势授课教师(职称): 曹峰() 研究生姓名: 刘杰飞 年级: 2014级 学号: 201422403003 成绩: 评阅日期: 山西大学研究生学院 2015年 6 月 17日

分布式数据库研究现状及发展趋势 摘要随着大数据、云时代的到来,数据库应用需求的拓展和计算机硬件环境的变化,特别是计算机网络与数字通信技术的飞速发展,卫星通信、蜂窝通信、计算机局域网、广域网和激增的Intranet及Internet得到了广泛应用,使分布式数据库系统应运而生。为了符合当今信息系统的应用需求和企业组织的管理思想和管理模式。分布式数据库提供了解决整个信息资产被分裂所成的信息孤岛,为孤岛联系在一起提供桥梁.本文主要介绍分布式数据库的研究现状,存在的一些问题以及未来的发展趋势。 关键词分布式数据库;发展趋势;现状及问题 1.引言 随着信息技术的飞速发展,社会经济结构、生产方式和消费结构已经发生了重大变化,这些变化深刻地影响着人民生活的方方面面。尤其是近十年来人们对计算机的依赖性越来越强,同时也对计算机提出了更高的要求。随着数据库在各个行业中的不断发展,各行业也对数据库提出了更高的要求,数据量也急剧增加,同时有关大数据分析的讨论正在愈演愈烈.甚至出现了爆炸性增长的趋势,一方面是由于移动互联网和移动智能终端的普及发展,数据信息正以每年40%的速度增长,造成数据量庞大;同时,数据种类呈多样性,文本、图片、视频等结构化和非结构化数据共存;另一方面也要求实时交互性强;最重要的是大数据蕴含了巨大的商业价值。相应的对于管理这些数据的复杂度也随之增加。同时各行业部门或企业所使用的软硬件之间的差异,这给开发企业管理数据库管理软件带来了巨大的工作量,如果能够有效解决这个问题,即使用同一模块管理操作不同的数据表格,对不同的数据表格进行查询、插入、删除、修改等操作,也即对企业简单的应用实现即插即用的功能,那么就能大大地减少软件开发的维护和更新费用,缩短软件的开发周期。分布式数据库系统的开发,降低了企业开发的成本,提高了软件使用的回报率。当今社会已进入了信息时代,人们将越来越多的信息存储在网络中的计算机上。如何更有

分布式文件系统Hadoop+HDFS与传统文件系统Linux+FS的比较与分析

6苏州大学学报(工科版)第30卷 图1I-IDFS架构 2HDFS与LinuxFS比较 HDFS的节点不管是DataNode还是NameNode都运行在Linux上,HDFS的每次读/写操作都要通过LinuxFS的读/写操作来完成,从这个角度来看,LinuxPS是HDFS的底层文件系统。 2.1目录树(DirectoryTree) 两种文件系统都选择“树”来组织文件,我们称之为目录树。文件存储在“树叶”,其余的节点都是目录。但两者细节结构存在区别,如图2与图3所示。 一二 Root \ 图2ItDFS目录树围3LinuxFS目录树 2.2数据块(Block) Block是LinuxFS读/写操作的最小单元,大小相等。典型的LinuxFSBlock大小为4MB,Block与DataN-ode之间的对应关系是固定的、天然存在的,不需要系统定义。 HDFS读/写操作的最小单元也称为Block,大小可以由用户定义,默认值是64MB。Block与DataNode的对应关系是动态的,需要系统进行描述、管理。整个集群来看,每个Block存在至少三个内容一样的备份,且一定存放在不同的计算机上。 2.3索引节点(INode) LinuxFS中的每个文件及目录都由一个INode代表,INode中定义一组外存上的Block。 HDPS中INode是目录树的单元,HDFS的目录树正是在INode的集合之上生成的。INode分为两类,一类INode代表文件,指向一组Block,没有子INode,是目录树的叶节点;另一类INode代表目录,没有Block,指向一组子INode,作为索引节点。在Hadoop0.16.0之前,只有一类INode,每个INode都指向Block和子IN-ode,比现有的INode占用更多的内存空间。 2.4目录项(Dentry) Dentry是LinuxFS的核心数据结构,通过指向父Den姆和子Dentry生成目录树,同时也记录了文件名并 指向INode,事实上是建立了<FileName,INode>,目录树中同一个INode可以有多个这样的映射,这正是连

分布式数据库管理系统简介

分布式数据库管理系统简介 一、什么是分布式数据库: 分布式数据库系统是在集中式数据库系统的基础上发展来的。是数据库技术与网络技术结合的产物。 分布式数据库系统有两种:一种是物理上分布的,但逻辑上却是集中的。这种分布式数据库只适宜用途比较单一的、不大的单位或部门。另一种分布式数据库系统在物理上和逻辑上都是分布的,也就是所谓联邦式分布数据库系统。由于组成联邦的各个子数据库系统是相对“自治”的,这种系统可以容纳多种不同用途的、差异较大的数据库,比较适宜于大范围内数据库的集成。 分布式数据库系统(DDBS)包含分布式数据库管理系统(DDBMS)和分布式数据库(DDB)。 在分布式数据库系统中,一个应用程序可以对数据库进行透明操作,数据库中的数据分别在不同的局部数据库中存储、由不同的DBMS进行管理、在不同的机器上运行、由不同的操作系统支持、被不同的通信网络连接在一起。 一个分布式数据库在逻辑上是一个统一的整体:即在用户面前为单个逻辑数据库,在物理上则是分别存储在不同的物理节点上。一个应用程序通过网络的连接可以访问分布在不同地理位置的数据库。它的分布性表现在数据库中的数据不是存储在同一场地。更确切地讲,不存储在同一计算机的存储设备上。这就是与集中式数据库的区别。从用户的角度看,一个分布式数据库系统在逻辑上和集中式数据库系统一样,用户可以在任何一个场地执行全局应用。就好那些数据是存储在同一台计算机上,有单个数据库管理系统(DBMS)管理一样,用户并没有什么感觉不一样。 分布式数据库中每一个数据库服务器合作地维护全局数据库的一致性。 分布式数据库系统是一个客户/服务器体系结构。 在系统中的每一台计算机称为结点。如果一结点具有管理数据库软件,该结点称为数据库服务器。如果一个结点为请求服务器的信息的一应用,该结点称为客户。在ORACLE客户,执行数据库应用,可存取数据信息和与用户交互。在服务器,执行ORACLE软件,处理对ORACLE 数据库并发、共享数据存取。ORACLE允许上述两部分在同一台计算机上,但当客户部分和服务器部分是由网连接的不同计算机上时,更有效。 分布处理是由多台处理机分担单个任务的处理。在ORACLE数据库系统中分布处理的例子如: 客户和服务器是位于网络连接的不同计算机上。 单台计算机上有多个处理器,不同处理器分别执行客户应用。

分布式文件系统研究-GFS

分布式文件系统研究16:Global File System 分类:技术日志 前段时间比较忙,好久没发技术文章了,几天来一个,嘿嘿 Global File System 简介 GFS(Global File System)是Minnesota大学开发的基于SAN的共享存储的机群文件系统,后来Sis tina公司将GFS产品化。GFS在很长一段时间都是以源代码开放软件的形式出现的,后来由于Sistina希望通过向用户提供支持和服务的计划未能取得成功,为了要促进自己的财务收入,Sistina在2001年将GFS 变成了一种“专有软件”。Red Hat公司收购Sistina之后,在遵循GPL协议(General Public License)的条件下履行诺言公开了GFS的源代码。现在,GFS的全名被称为“红帽全球文件系统”(Red Hat Global File System ,GFS)的软件,每台服务器每年收取2200美元的费用。 可能是redhat为了更好的收取服务费的缘故,有关GFS的文档真是少之又少,我只能从网上一些零星的资料来看看GFS的概貌。 框架 GFS最初是在IRIX上开发的,后来移植到LINUX上,并开放源码。基本框架如下图所示。 图1 GFS的基本框架图 通过使用GFS,多台服务器可以共用一个文件系统来存储文件。信息既可以存储在服务器上,也可以存储在一个存储局域网络上。 GFS与GPFS结构相似,但它是全对称的机群文件系统,没有服务器,因而没有性能瓶颈和单一故障点。GFS将文件数据缓存于节点的存储设备中,而不是缓存在节点的内存中。并通过设备锁来同步不同节点对文件的访问,保持UNIX文件共享语义。GFS实现了日志,节点失效可以快速恢复。GFS使用SCSI

分布式文件系统MFS(moosefs)实现存储共享

由于用户数量的不断攀升,我对访问量大的应用实现了可扩展、高可靠的集群部署(即lvs+keepalived的方式),但仍然有用户反馈访问慢的问题。通过排查个服务器的情况,发现问题的根源在于共享存储服务器NFS。在我这个网络环境里,N个服务器通过nfs方式共享一个服务器的存储空间,使得 NFS服务器不堪重负。察看系统日志,全是nfs服务超时之类的报错。一般情况下,当nfs客户端数目较小的时候,NFS性能不会出现问题;一旦NFS服务器数目过多,并且是那种读写都比较频繁的操作,所得到的结果就不是我们所期待的。 下面是某个集群使用nfs共享的示意图: 这种架构除了性能问题而外,还存在单点故障,一旦这个NFS服务器发生故障,所有靠共享提供数据的应用就不再可用,尽管用rsync方式同步数据到另外一个服务器上做nfs服务的备份,但这对提高整个系统的性能毫无帮助。基于这样一种需求,我们需要对nfs服务器进行优化或采取别的解决方案,然而优化并不能对应对日益增多的客户端的性能要求,因此唯一的选择只能是采取别的解决方案了;通过调研,分布式文件系统是一个比较合适的选择。采用分布式文件系统后,服务器之间的数据访问不再是一对多的关系(1个NFS服务器,多个NFS 客户端),而是多对多的关系,这样一来,性能大幅提升毫无问题。 到目前为止,有数十种以上的分布式文件系统解决方案可供选择,如 lustre,hadoop,Pnfs等等。我尝试了 PVFS,hadoop,moosefs这三种应用,参看了lustre、KFS等诸多技术实施方法,最后我选择了moosefs(以下简称MFS)

这种分布式文件系统来作为我的共享存储服务器。为什么要选它呢?我来说说我的一些看法: 1、实施起来简单。MFS的安装、部署、配置相对于其他几种工具来说,要简单和容易得多。看看lustre 700多页的pdf文档,让人头昏吧。 2、不停服务扩容。MFS框架做好后,随时增加服务器扩充容量;扩充和减少容量皆不会影响现有的服务。注:hadoop也实现了这个功能。 3、恢复服务容易。除了MFS本身具备高可用特性外,手动恢复服务也是非常快捷的,原因参照第1条。 4、我在实验过程中得到作者的帮助,这让我很是感激。 MFS文件系统的组成 1、元数据服务器。在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当。希望今后MFS能支持多个master服务器,进一步提高系统的可靠性。 2、数据存储服务器chunkserver。真正存储用户数据的服务器。存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间复制(复制份数可以手工指定,建议设置副本数为3)。数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。 3、客户端。使用MFS文件系统来存储和访问的主机称为MFS的客户端,成功挂接MFS文件系统以后,就可以像以前使用NFS一样共享这个虚拟性的存储了。 元数据服务器安装和配置

相关文档
最新文档