栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据

东数云储小课堂(三):分布式存储技术应用篇

大数据 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

东数云储小课堂(三):分布式存储技术应用篇

结构化数据的存储及应用

所谓结构化数据是一种用户定义的数据类型,通过上篇文章我们可以知道所谓结构化数据是指数据之间关联系很大,关系型数据库这种,可以用表进行表示的。
在数据系统中,一般都存在大量的结构化数据,若存储结构化数据的数据库无法支撑时,一般采用水平扩展以及垂直扩展来解决这一问题。
水平扩展:简单来说,就是按照行来进行数据的划分,例如,将第一行数据分到数据库A中,第二行数据分配到数据库B中,但我们需要注意的是,该划分是有特定的规则。
垂直扩展:从字面意思来理解,就是按照列来进行数据的划分,一般来说是将按照功能或者类别划分的数据存储在不同的数据库中。垂直扩展与水平扩展各有优缺点,一般一个大型系统会将水平与垂直扩展结合使用。
从实际应用来看,可以用来做为核高基项目设计的结构化数据分布式存储等等需要用到水平&垂直切分扩展的数据访问框架的系统。

非结构化数据的存储及应用

相对于结构化数据而言,主要是数据之间的关联系不大,像文本图片之类的数据。例如:办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等。
谈到实现非结构化数据的相关技术,不得不提及分布式文件系统以及GFS,下图所示为GFS的系统架构图。
GFS将整个系统分为三类角色:Client(客户端)、Master(主服务器)、Chunk Server(数据块服务器)。
Client(客户端):是GFS提供给应用程序的访问接口,它是一组专用接口,不遵守POSIX规范,以库文件的形式提供。应用程序直接调用这些库函数,并与该库链接在一起。
Master(主服务器):是GFS的管理节点,主要存储与数据文件相关的元数据,而不是Chunk(数据块)。元数据包括:命名空间(Name Space),也就是整个文件系统的目录结构,一个能将64位标签映射到数据块的位置及其组成文件的表格,Chunk副本位置信息和哪个进程正在读写特定的数据块等。还有Master节点会周期性地接收从每个Chunk节点来的更新(“Heart- beat”)来让元数据保持最新状态。
Chunk Server(数据块服务器):负责具体的存储工作,用来存储Chunk。GFS将文件按照固定大小进行分块,默认是64MB,每一块称为一个Chunk(数据块),每一个Chunk以Block为单位进行划分,大小为64KB,每个Chunk有一个唯一的64位标签。GFS采用副本的方式实现容错,每一个Chunk有多个存储副本(默认为三个)。 Chunk Server的个数可有有多个,它的数目直接决定了GFS的规模。
在Google公布了GFS论文之后,许多开源组织基于GFS的论文开发了各自的分布式文件系统,其中比较知名的有HDFS,MooseFS,MogileFS等。
实际应用:由于核高基的项目中未来会有大量的数据与应用需要存储,所以我们设计时也采用分布式文件系统的方案,由于开源的分布式文件系统可以基本满足我们需求,另外从时间上来说也比较紧张,所以我们采用了开源的MooseFS作为底层的分布式文件系统。
MooseFS存在的问题:由于MooseFS是也是按照GFS论文设计的,只有一个Master(主服务器),虽然可以增加一个备份的日志服务器,但是还是存在Master无法扩展的问题,当单一Master节点上存储的元数据越来越多的时候,Master节点占用的内存会越来越多,直到达到服务器的内存上限,所以单一Master节点存在内存上的瓶颈,只能存储有限的数据,可扩展性差,并且不稳定。
对MooseFS的优化:面对MooseFS存在的问题,我们采用了类似分布式数据库中的“Sharding”技术,设计了一个分布式文件系统访问框架,可以做到对分布式文件系统做垂直与水平切分。这样就最大限度的保证了MooseFS系统的可扩展性与稳定性。

半结构化数据的存储及应用

所谓半结构化数据,就是介于上述两种数据类型之间,数据之间的关系简单,典型的代码是html文件,但是因为该数据不适合用用来存储传统的关系型数据库,因此我们在这里谈及“NoSQL”数据库。
NoSQL的定义:
1.“NoSQL”对其确切的称呼应该是非关系型数据库,具有非关系型,分布式,轻量级,支持水平扩展且一般不保证遵循ACID原则等特性。
使用松耦合类型、可扩展的数据模式来对数据进行逻辑建模(Map,列,文档,图表等),而不是使用固定的关系模式元组来构建数据模型。
2.以遵循于CAP定理(能保证在一致性,可用性和分区容忍性三者中中达到任意两个)的跨多节点数据分布模型而设计,支持水平伸缩。这意味着对于多数据中心和动态供应(在生产集群中透明地加入/删除节点)的必要支持,也即弹性(Elasticity)。
3.拥有在磁盘或内存中,或者在这两者中都有的,对数据持久化的能力,有时候还可以使用可热插拔的定制存储。
4.支持多种的‘Non-SQL’接口(通常多于一种)来进行数据访问。
NoSQL中的重要理论基础:
CAP理论:
C: Consistency 一致性
A: Availability 可用性(指的是快速获取数据)
P: Tolerance of network Partition 分区容忍性(分布式)
CAP原理告诉我们,这三个因素最多只能满足两个,不可能三者兼顾。对于分布式系统来说,分区容错是基本要求,所以必然要放弃一致性。对于大型网站来说,分区容错和可用性的要求更高,所以一般都会选择适当放弃一致性。对应CAP理论,NoSQL追求的是AP,而传统数据库追求的是CA,这也可以解释为什么传统数据库的扩展能力有限的原因。
base模型:
Basically Availble –基本可用
Soft-state –软状态/柔性事务
Eventual Consistency –最终一致性
base模型是传统ACID模型的反面,不同于ACID模型,base强调牺牲高一致性,从而获得可用性或可靠性。
基本可用是指通过Sharding,允许部分分区失败。
软状态是指异步,允许数据在一段时间内的不一致,只要保证最终一致就可以了。
最终一致性是整个NoSQL中的一个核心理念,强调最终数据是一致的就可以了,而不是时时一致。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/278251.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号