大数据存储技术研究.docx
- 文档编号:24591985
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:13
- 大小:354.62KB
大数据存储技术研究.docx
《大数据存储技术研究.docx》由会员分享,可在线阅读,更多相关《大数据存储技术研究.docx(13页珍藏版)》请在冰豆网上搜索。
大数据存储技术研究
大数据存储技术研究
3013218099软工二班张敬喆
1.背景介绍
大数据已成为当前社会各界关注的焦点。
从一般意义上讲,大数据是指无法在可容忍的时间内,用现有信息技术和软硬件工具对其进行感知、获取、管理、处理和服务的数据集合。
近年来,大数据的飙升主要来自人们的日常生活,特别是互联网公司的服务。
据著名的国际数据公司(IDC)的统计,2011年全球被创建和复制的数据总量为1.8ZB(1ZB=1021B),其中75%来自于个人(主要是图片、视频和音乐),远远超过人类有史以来所有印刷材料的数据总量(200PB,1PB=1015B)。
然而,与大数据计算相关的基础研究,诸如大数据的感知与表示、组织与存储、计算架构与体系、模式发现与效应分析等,目前还没有成体系的理论成果。
对于大数据计算体系的研究,一方面,需要关注大数据如何存储,提供一种高效的数据存储平台;另一方面,为了应对快速并高效可靠地处理大数据的挑战,需要建立大数据的计算模式以及相关的优化机制。
2.相关工作
为了应对数据处理的压力,过去十年间在数据处理技术领域有了很多的创新和发展。
除了面向高并发、短事务的OLTP内存数据库外(Altibase,Timesten),其他的技术创新和产品都是面向数据分析的,而且是大规模数据分析的,也可以说是大数据分析的。
在这些面向数据分析的创新和产品中,除了基于Hadoop环境下的各种NoSQL外,还有一类是基于SharedNothing架构的面向结构化数据分析的新型数据库产品(可以叫做NewSQL),如:
Greenplum(EMC收购),Vertica(HP收购),Asterdata(TD收购),以及南大通用在国内开发的GBase8aMPPCluster等。
目前可以看到的类似开源和商用产品达到几十个,而且还有新的产品不断涌出。
一个有趣的现象是这些新的数据库厂商多数都还没有10年历史,而且发展好的基本都被收购了。
收购这些新型数据库厂商的公司,比如EMC、HP,都希望通过收购新技术和产品进入大数据处理市场,是新的玩家。
SAP除了收购Sybase外,自己开发了一款叫HANA的新产品,这是一款基于内存、面向数据分析的内存数据库产品。
这类新的分析型数据库产品的共性主要是:
架构基于大规模分布式计算(MPP);硬件基于X86PC服务器;存储基于服务器自带的本地硬盘;操作系统主要是Linux;拥有极高的横向扩展能力(scaleout)和内在的故障容错能力和数据高可用保障机制;能大大降低每TB数据的处理成本,为“大数据”处理提供技术和性价比支撑。
总的来看,数据处理技术进入了一个新的创新和发展高潮,机会很多。
这里的主要原因是一直沿用了30年的传统数据库技术遇到了技术瓶颈,而市场和用户的需求在推动着技术的创新,并为此创造了很多机会。
在大数据面前,越来越多的用户愿意尝试新技术和新产品,不那么保守了,因为大家开始清晰地看到传统技术的瓶颈,选择新的技术才有可能解决他们面临的新问题。
3.核心技术
1.大数据重复数据删除技术
在大数据时代,数据的体量和增长速度大大超过了以往,其中重复数据也在不断增大。
国际数据公司通过研究发现在数字世界中有近75%的数据是重复的,企业战略集团(Enterprise Strategy Group, ESG)指出在备份和归档存储系统中数据的冗余度超过90
%。
因此,高效的重复数据删除技术(Cluster Deduplica-tion)成为缩减数据占用空间并降
低成本的关键。
然而,由于这项技术是计算密集型和读写(I/O)密集型的技术,特别是重复删除运算相当消耗运算资源,要进行大量的读写处理,因此现有系统在存取性能方面还存在很多问题需要解决。
在大数据存储环境中,将集群重复数据删除技术有效地融入分布式集群存储架构中,可使存储系统在数据存储过程中对重复冗余数据进行在线去重,并在存储性能、存储效率以及去重率等方面得到优化。
2.具有重复数据删除功能的分布式存储架构
通过设计并实现具有重复数据删除功能的分布式文件系统,可使其具备高去重率、高可扩展性、高吞吐率等特征。
分布式重复数据删除系统的架构包括客户端、元数据服务器和数据服务器三部分(见图1)。
客户端主要提供集群重复数据删除系统对外的交互接口,并
在所提供的文件操作接口中实现基于重复数据删除的存储逻辑和对数据的预处理,如数据块的划分与“指纹”的提取。
元数据服务器实现了对元数据存储、集群的管理与维护,包
括管理在数据存储过程中整个会话,保存与管理分布式文件系统中的元数据,管理和维护系统存储状况,指导数据路由并满足系统存储的负载均衡。
数据服务器主要负责数据去重引擎以及数据的存储和管理。
数据服务器通过网络与客户端进行通信,响应客户端的读写请求,
通过网络与元数据服务器异步更新数据服务器的数据接收状况以及节点存储状况。
当接收到客户端的写请求时,数据服务器接收数据并在节点内进行冗余数据的去重。
网络通信模块可提供一种能够在客户端与分布式文件系统各节点间进行通信的有效机制,通过远程过程调用交换元数据和少量控制信息,通过流套接口(stream socket)网络传输大量的数据与指纹信息。
3.数据路由策略
基于单节点内的局部去重,即在一个节点内对数据进行去重,确保存储环境中系统的整体性能和存储带宽。
需要强调的是,数据的存储位置是关键,原因在于数据路由位置直接影响数据的去重率;根据数据的相似性以及数据局部性的相关理论,基于超块的高效局部相似路由算法可确保全局数据去重的可靠性。
在数据路由粒度方面,超块(SuperBlock)是对上传数据通过分块算法,如可变分块(Content-Defined Chunk-ing,CDC)、固定分块(Fixed-Sized Partition,FSP),进行分块后(见图2),由连续的几个小分块拼接成大的局部块。
文件由连续的超块组成,并将超块作为数据路由的单位,发送到选定的节点中进行节点内的冗余数据去重。
在数据去重方面,数据相似是指节点中已有超块与新来的超块之间的相似度,Jaccard距离可用于衡量两个超块的相似度。
通过有状态的局部相似路由算法,实现数据的路由。
4.大数据编码优化技术
基于纠删码的数据冗余技术是不同于多副本技术的另外一种容灾策略,其基本思想是:
通过纠删码算法对k个原始数据块进行数据编码,得到m个纠删码块,并将这k + m个数据块存到不同的数据存储节点中,以此建立容灾机制。
当k + m个元素中任意的不多于m个元素出错(包括数据和冗余出错)时,均可通过对应的重构算法恢复出原来的k块数据。
这种方法具有冗余度低、磁盘利用率高等特点。
相较于多副本策略,在大数据存储平台中利用纠删码建立容灾机制,对存储空间和网络带宽的需求有所降低,但是由于引进了纠删码计算,因此对纠删码编码的计算速度提出了要求。
最有效的办法就是减少纠删码计算过程的异或次数。
目前的调度算法都是启发式的,如CSHR、UBER-CSHR、X-Sets等。
用这些算法对一个柯西矩阵求取调度时,各自得到的调度都无法保证是所有调度方法中最优的,并且柯西矩阵配置参数(k, m, w)通过组合会得到个柯西矩阵,究竟哪一个矩阵会产生较好的调度,目前为止尚无规律可循。
针对该问题,为了提高数据编码效率,我们提出了关于纠删码求取调度组合的选择框架思想。
该框架基于现有技术提供了一种高效的数据编码方案——优化调度方案。
此方案能为柯西矩阵配置参数(k, m, w)选择出具有高编码效率的柯西矩阵和相应的调度,以用于大数据存储的数据编码。
该选择框架(见图3)包括如下三部分。
1. 首先准备柯西矩阵。
根据多种生成柯西矩阵的算法生成柯西矩阵集合{M0, M1, ⋯⋯, Mt-1}。
考虑到更新性能(柯西矩阵中“1”的个数越少越好),尽量选择“1”个数较少的柯西矩阵。
2. 对第1步准备好的柯西矩阵求取调度组合。
对每个柯西矩阵运行多种求取调度组合的启发式算法之后,得出各自最好的柯西矩阵和调度组合(M, S),具体结果为{(M0, S0), (M1,S1),⋯, (Mt-1, St-1)}。
3. 从第2步的结果中,选出所有调度组合中异或操作次数最少的,得到能使编码性能最高的柯西矩阵和调度组合(Mbest,Sbest)。
整体的选择框架描述如图4所示。
4.实验
实验要求:
A.MySQL数据库操作
Student学生表
Name
English
Math
Computer
zhangsan
69
86
77
lisi
55
100
88
1.根据上面给出的表格,利用MySQL设计出student学生表格;
a)设计完后,用select语句输出所有的相关信息,并给出截图;
b)查询zhangsan的Computer成绩,并给出截图;
c)修改lisi的Math成绩,改为95.给出截图.
2.详细过程
在数据库test中创建表grade,Name,English,Math,Computer分别为表的四个字段,其中Name为主键。
mySql语句:
createtablegrade(
Namevarchar(100)notnull,
Englishintnotnull,
Mathintnotnull,
Computerintnotnull,
primarykey(Name)
);截图:
b)插入数据并查看数据表内容
mySql语句:
insertintograde
values(\;zhangsan\;,69,86,77),(\;lisi\;,55,100,88);截图:
mySql语句:
select*fromgrade;
截图:
c)查询zhangsan的Computer成绩
mySql语句:
selectComputerfromgradewhereName="zhangsan";截图:
d)修改lisi的Math成绩,改为95
mySql语句:
updategradesetMath="95"whereName="lisi";截图:
B.HBase数据库操作
Student学生表
name
score
English
Math
Computer
zhangsan
69
86
77
lisi
55
100
88
1.根据上面给出的表格,用HbaseShell模式设计student学生表格。
a)设计完后,用scan指令浏览表的相关信息,给出截图。
b)查询zhangsan的Computer成绩,给出截图。
c)修改lisi的Math成绩,改为95,给出截图。
2.详细过程
a)创建数据表
Student表有两个列族:
name,score。
Score列族有三个列:
English,Math,Computer。
DDL语句:
create\\;student\\;,\\;name\\;,\\;score\\;
截图:
b)插入数据并查看数据表内容
DML语句:
插入:
put\\;student\\;,\\;zhangsan\\;,\\;score:
English\\;,\\;69\\;
put\\;student\\;,\\;zhangsan\\;,\\;score:
Math\\;,\\;86\\;
put\\;student\\;,\\;zhangsan\\;,\\;score:
Computer\\;,\\;77\\;
put\\;student\\;,\\;lisi\\;,\\;score:
Computer\\;,\\;88\\;
put\\;student\\;,\\;lisi\\;,\\;score:
Math\\;,\\;100\\;
put\\;student\\;,\\;lisi\\;,\\;score:
English\\;,\\;55\\;
scan\\;student\\;截图:
c)查询zhangsan的Computer成绩,
DDL语句:
get\\;student\\;,\\;zhangsan\\;,\\;score:
Computer\\;截图:
d)修改lisi的Math成绩,改为95
DDL语句:
put\\;student\\;,\\;lisi\\;,\\;score:
Math\\;,\\;95\\;截图:
C.MongoDB数据库操作
Student文档如下:
{
“name”:
“zhangsan”,
“score”:
{
“English”:
69,
“Math”:
86,
“Computer”:
77
}
}
{
“name”:
“lisi”,
“score”:
{
“English”:
55,
“Math”:
100,
“Computer”:
88
}
}
1.根据上面给出的文档,用Mongoshell设计出student集合.
a)设计完后,用find()方法输出两个学生的信息,给出截图;
b)用find函数查询zhangsan的所有成绩(只显示score列),给出截图。
c)修改lisi的Math成绩,改为95,给出截图。
2.详细过程
a)创建数据库和集合
创建数据库grade:
Mongo语句:
usegrade
截图:
创建集合student:
Mongo语句:
db.createCollection(\;student\;)
截图:
b)插入数据并查看集合内容
定义数据:
Mongo语句:
s=[{_id:
1,\;name\;:
\;zhangsan\;,\;score\;:
[{\;english\;:
\;69\;},{\;math\;:
\;86\;},{\;compuer\;:
\;77\;}]},{_id:
2,\;name\;:
\;lisi\;,\;score\;:
[{\;english\;:
\;55\;},
{\;math\;:
\;100\;},{\;compuer\;:
\;88\;}]}]
注释:
如果不添加_id字段,mongodb会默认分配id。
截图:
注释:
上图紧随这条Mongo语句后面的是,shell自动在终端上输出的该数据结构。
插入数据:
Mongo语句:
db.student.insert(s)
截图:
查看集合:
Mongo语句:
db.student.find()
截图:
c)用find函数查询zhangsan的所有成绩(只显示score列)
Mongo语句:
db.student.find({name:
\;zhangsan\;},{score:
1,_id:
0})
注释:
{name:
\;zhangsan\;}相当于mysql查询语句中的where条件限制语句,{score:
1}表示返回score列,加上_id:
0就不会返回id字段。
截图:
d)修改lisi的Math成绩,改为95
Mongo语句:
db.student.update({_id:
2,\;name\;:
\;lisi\;},{$set:
{\;score\;:
[{\;english\;:
\;55\;},{\;math\;:
\;95\;},{\;compuer\;:
\;88\;}]}})
注释:
相当于用update的lisi内容覆盖之前的insert的lisi内容截图:
5.总结
技术:
基于列存储+MPP架构的新型数据库在核心技术上跟传统数据库有巨大差别,是为面向结构化数据分析设计开发的,能够有效处理PB级别的数据量。
在技术上为很多行业用户解决了数据处理性能问题。
用户价值:
新型数据库是运行在x-86PC服务器之上的,可以大大降低数据处理的成本(1个数量级)。
未来趋势:
新型数据库将逐步与Hadoop生态系统结合混搭使用,用MPP处理PB级别的、高质量的结构化数据,同时为应用提供丰富的SQL和事务支持能力;用Hadoop实现半结构化、非结构化数据处理。
这样可同时满足结构化、半结构化和非结构化数据的处理需求。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 存储 技术研究
![提示](https://static.bdocx.com/images/bang_tan.gif)