1. 大数据时代数据管理方式研究
大数据时代数据管理方式研究
1数据管理技术的回顾
数据管理技术主要经历了人工管理阶段、文件系统阶段和数据库系统阶段。随着数据应用领域的不断扩展,数据管理所处的环境也越来越复杂,目前广泛流行的数据库技术开始暴露出许多弱点,面临着许多新的挑战。
1.1 人工管理阶段
20 世纪 50 年代中期,计算机主要用于科学计算。当时没有磁盘等直接存取设备,只有纸带、卡片、磁带等外存,也没有操作系统和管理数据的专门软件。该阶段管理的数据不保存、由应用程序管理数据、数据不共享和数据不具有独立性等特点。
1.2 文件系统阶段
20 世纪 50 年代后期到 60 年代中期,随着计算机硬件和软件的发展,磁盘、磁鼓等直接存取设备开始普及,这一时期的数据处理系统是把计算机中的数据组织成相互独立的被命名的数据文件,并可按文件的名字来进行访问,对文件中的记录进行存取的数据管理技术。数据可以长期保存在计算机外存上,可以对数据进行反复处理,并支持文件的查询、修改、插入和删除等操作。其数据面向特定的应用程序,因此,数据共享性、独立性差,且冗余度大,管理和维护的代价也很大。
1.3数据库阶段
20 世纪 60 年代后期以来,计算机性能得到进一步提高,更重要的是出现了大容量磁盘,存储容量大大增加且价格下降。在此基础上,才有可能克服文件系统管理数据时的不足,而满足和解决实际应用中多个用户、多个应用程序共享数据的要求,从而使数据能为尽可能多的应用程序服务,这就出现了数据库这样的数据管理技术。数据库的特点是数据不再只针对某一个特定的应用,而是面向全组织,具有整体的结构性,共享性高,冗余度减小,具有一定的程序与数据之间的独立性,并且对数据进行统一的控制。
2大数据时代的数据管理技术
大数据(big data),或称巨量资料,指的是所涉及的资料量规模巨大到无法透过目前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。大数据有 3 个 V,一是大量化(Volume),数据量是持续快速增加的,从 TB级别,跃升到 PB 级别;二是多样化(Variety),数据类型多样化,结构化数据已被视为小菜一碟,图片、音频、视频等非结构化数据正以传统结构化数据增长的两倍速快速创建;三是快速化 (Velocity),数据生成速度快,也就需要快速的处理能力,因此,产生了“1 秒定律”,就是说一般要在秒级时间范围内给出分析结果,时间太长就失去价值了,这个速度要求是大数据处理技术和传统的数据挖掘技术最大的区别。
2.1 关系型数据库(RDBMS)
20 世纪 70 年代初,IBM 工程师 Codd 发表了著名的论文“A Relational Model of Data for Large Shared DataBanks”,标志着关系数据库时代来临。关系数据库的理论基础是关系模型,是借助于集合代数等数学概念和方法来处理数据库中的数据,现实世界中的实体以及实体之间的联系非常容易用关系模型来表示。容易理解的模型、容易掌握的查询语言、高效的优化器、成熟的技术和产品,使得关系数据库占据了数据库市场的绝对的统治地位。随着互联网 web2.0 网站的兴起,半结构化和非结构化数据的大量涌现,传统的关系数据库在应付 web2.0 网站特别是超大规模和高并发的 SNS(全称 Social Networking Services,即社会性网络服务) 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题。
2.2 noSQL数据库
顺应时代发展的需要产生了 noSQL数据库技术,其主要特点是采用与关系模型不同的数据模型,当前热门的 noSQL数据库系统可以说是蓬勃发展、异军突起,很多公司都热情追捧之,如:由 Google 公司提出的 Big Table 和 MapRece 以及 IBM 公司提出的 Lotus Notes 等。不管是那个公司的 noSQL数据库都围绕着大数据的 3 个 V,目的就是解决大数据的 3个 V 问题。因此,在设计 noSQL 时往往考虑以下几个原则,首先,采用横向扩展的方式,通过并行处理技术对数据进行划分并进行并行处理,以获得高速的读写速度;其次,解决数据类型从以结构化数据为主转向结构化、半结构化、非结构化三者的融合的问题;再次,放松对数据的 ACID 一致性约束,允许数据暂时出现不一致的情况,接受最终一致性;最后,对各个分区数据进行备份(一般是 3 份),应对节点失败的状况等。
对数据的应用可以分为分析型应用和操作型应用,分析型应用主要是指对大量数据进行分类、聚集、汇总,最后获得数据量相对小的分析结果;操作型应用主要是指对数据进行增加、删除、修改和查询以及简单的汇总操作,涉及的数据量一般比较少,事务执行时间一般比较短。目前数据库可分为关系数据库和 noSQL数据库,根据数据应用的要求,再结合目前数据库的种类,所以目前数据库管理方式主要有以下 4 类。
(1)面向操作型的关系数据库技术。
首先,传统数据库厂商提供的基于行存储的关系数据库系统,如 DB2、Oracle、SQL Server 等,以其高度的一致性、精确性、系统可恢复性,在事务处理方面仍然是核心引擎。其次,面向实时计算的内存数据库系统,如 Hana、Timesten、Altibase 等通过把对数据并发控制、查询和恢复等操作控制在内存内部进行,所以获得了非常高的性能,在很多特定领域如电信、证券、网管等得到普遍应用。另外,以 VoltDB、Clustrix 和NuoDB 为代表的 new SQL 宣称能够在保持 ACDI 特性的同时提高了事务处理性能 50 倍 ~60 倍。
(2)面向分析型的关系数据库技术。
首先,TeraData 是数据仓库领域的领头羊,Teradata 在整体上是按 Shared Nothing 架构体系进行组织的,定位就是大型数据仓库系统,支持较高的扩展性。其次,面向分析型应用,列存储数据库的研究形成了另一个重要的潮流。列存储数据库以其高效的压缩、更高的 I/O 效率等特点,在分析型应用领域获得了比行存储数据库高得多的性能。如:MonetDB 和 Vertica是一个典型的基于列存储技术的数据库系统。
(3)面向操作型的 noSQL 技术。
有些操作型应用不受 ACID 高度一致性约束,但对大数据处理需要处理的数据量非常大,对速度性能要求也非常高,这样就必须依靠大规模集群的并行处理能力来实现数据处理,弱一致性或最终一致性就可以了。这时,操作型 noSQL数据库的优点就可以发挥的淋漓尽致了。如,Hbase 一天就可以有超过 200 亿个到达硬盘的读写操作,实现对大数据的处理。另外,noSQL数据库是一个数据模型灵活、支持多样数据类型,如对图数据建模、存储和分析,其性能、扩展性是关系数据库无法比拟的。
(4)面向分析型的 noSQL 技术。
面向分析型应用的 noSQL 技术主要依赖于Hadoop 分布式计算平台,Hadoop 是一个分布式计算平台,以 HDFS 和 Map Rece 为用户提供系统底层细节透明的分布式基础架构。《Hadoop 经典实践染技巧》传统的数据库厂商 Microsoft,Oracle,SAS,IBM 等纷纷转向 Hadoop 的研究,如微软公司关闭 Dryad 系统,全力投入 Map Rece 的研发,Oracle 在 2011 年下半年发布 Big Plan 战略计划,全面进军大数据处理领域,IBM 则早已捷足先登“,沃森(Watson)”计算机就是基于 Hadoop 技术开发的产物,同时 IBM 发布了 BigInsights 计划,基于 Hadoop,Netezza 和 SPSS(统计分析、数据挖掘软件)等技术和产品构建大数据分析处理的技术框架。同时也涌现出一批新公司来研究Hadoop 技术,如 Cloudera、MapRKarmashpere 等。
3数据管理方式的展望
通过以上分析,可以看出关系数据库的 ACID 强调数据一致性通常指关联数据之间的逻辑关系是否正确和完整,而对于很多互联网应用来说,对这一致性和隔离性的要求可以降低,而可用性的要求则更为明显,此时就可以采用 noSQL 的两种弱一致性的理论 BASE 和 CAP.关系数据库和 noSQL数据库并不是想到对立的矛盾体,而是可以相互补充的,根据不同需求使用不同的技术,甚至二者可以共同存在,互不影响。最近几年,以 Spanner 为代表新型数据库的出现,给数据库领域注入新鲜血液,这就是融合了一致性和可用性的 newSQL,这种新型思维方式或许会是未来大数据处理方式的发展方向。
4 结束语
随着云计算、物联网等的发展,数据呈现爆炸式的增长,人们正被数据洪流所包围,大数据的时代已经到来。正确利用大数据给人们的生活带来了极大的便利,但与此同时也给传统的数据管理方式带来了极大的挑战。
2. 大数据的预处理过程包括
大数据采集过程中通常有一个或多个数据源,这些数据源包括同构或异构的数据库、文件系统、服务接口等,易受到噪声数据、数据值缺失、数据冲突等影响,因此需首先对收集到的大数据集合进行预处理,以保证大数据分析与预测结果的准确性与价值性。
大数据的预处理环节主要包括数据清理、数据集成、数据归约与数据转换等内容,可以大大提高大数据的总体质量,是大数据过程质量的体现。 数据清理技术包括对数据的不一致检测、噪声数据的识别、数据过滤与修正等方面,有利于提高大数据的一致性、准确性、真实性和可用性等方面的质量;
数据集成则是将多个数据源的数据进行集成,从而形成集中、统一的数据库、数据立方体等,这一过程有利于提高大数据的完整性、一致性、安全性和可用性等方面质量;
数据归约是在不损害分析结果准确性的前提下降低数据集规模,使之简化,包括维归约、数据归约、数据抽样等技术,这一过程有利于提高大数据的价值密度,即提高大数据存储的价值性。
数据转换处理包括基于规则或元数据的转换、基于模型与学习的转换等技术,可通过转换实现数据统一,这一过程有利于提高大数据的一致性和可用性。
总之,数据预处理环节有利于提高大数据的一致性、准确性、真实性、可用性、完整性、安全性和价值性等方面质量,而大数据预处理中的相关技术是影响大数据过程质量的关键因素
3. 什么是数据一致性和完整性,如何保证
数据一致性通常指关联数据之间的逻辑关系是否正确和完整.而数据存储的一致性模型则可以认为是存储系统和数据使用者之间的一种约定.如果使用者遵循这种约定,则可以得到系统所承诺的访问结果常用的一致性模型有:
a、严格一致性(linearizability, strict/atomic Consistency):读出的数据始终为最近写入的数据.这种一致性只有全局时钟存在时才有可能,在分布式网络环境不可能实现.
b、顺序一致性(sequential consistency):所有使用者以同样的顺序看到对同一数据的操作,但是该顺序不一定是实时的.
c、因果一致性(causal consistency):只有存在因果关系的写操作才要求所有使用者以相同的次序看到,对于无因果关系的写入则并行进行,无次序保证.因果一致性可以看做对顺序一致性性能的一种优化,但在实现时必须建立与维护因果依赖图,是相当困难的.
d、管道一致性(PRAM/FIFO consistency):在因果一致性模型上的进一步弱化,要求由某一个使用者完成的写操作可以被其他所有的使用者按照顺序的感知到,而从不同使用者中来的写操作则无需保证顺序,就像一个一个的管道一样. 相对来说比较容易实现.
e、弱一致性(weak consistency):只要求对共享数据结构的访问保证顺序一致性.对于同步变量的操作具有顺序一致性,是全局可见的,且只有当没有写操作等待处理时才可进行,以保证对于临界区域的访问顺序进行.在同步时点,所有使用者可以看到相同的数据.
f、 释放一致性(release consistency):弱一致性无法区分使用者是要进入临界区还是要出临界区, 释放一致性使用两个不同的操作语句进行了区分.需要写入时使用者acquire该对象,写完后release,acquire-release之间形成了一个临界区,提供 释放一致性也就意味着当release操作发生后,所有使用者应该可以看到该操作.
g、最终一致性(eventual consistency):当没有新更新的情况下,更新最终会通过网络传播到所有副本点,所有副本点最终会一致,也就是说使用者在最终某个时间点前的中间过程中无法保证看到的是新写入的数据.可以采用最终一致性模型有一个关键要求:读出陈旧数据是可以接受的.
h、delta consistency:系统会在delta时间内达到一致.这段时间内会存在一个不一致的窗口,该窗口可能是因为log shipping的过程导致.这是书上的原话.我也搞不很清楚.数据库完整性(Database Integrity)是指数据库中数据的正确性和相容性.数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计.包括实体完整性.域完整性.参照完整性.用户定义完整性.可以主键.check约束.外键来一一实现.这个使用较多.
4. 大数据开发工程师Hadoop(HDFS是如何保证数据可靠性的)
HDFS是如何保证数据可靠性的?
(1)安全模式
① HDFS刚启动时,NameNode进入安全模式,处于安全模式的NameNode不能做任何的文件操作,甚至内部的副本创建也是不允许的,NameNode这时需要和各个DataNode进行通信,获得DataNode存储的数据块信息,并对数据块信息进行检查,只有通过了NameNode的检查,一个数据块才被认为是安全的。当认为安全的数据块所占比例达到了某个阈值,NameNode才会开始启动;
(2)SecondaryNamenode备份机制
① 在Hadoop中使用SecondaryNameNode来备份NameNode的元数据,以防止在NameNode宕机的时候,能从SecondaryNameNode中恢复出NameNode上的元数据;
② NameNode中保存了整个文件系统的元数据,而SecondaryNameNode的作用就是周期性保存NameNode的元数据。元数据中包括FSImage镜像文件数据和EditLog编辑日志。FSImage相当于HDFS的检查点,NameNode启动时候会读取FSImage的内容到内存,并将其与EditLog日志中的所有修改信息合并生成新的FSImage。在NameNode运行过程中,所有关于HDFS的修改都将写入EditLog日志文件中。这样,如果NameNode宕机,可以通过SecondaryNameNode中保存的FSImage和EditLog数据恢复出NameNode最近的状态,尽量减少数据的损失;
(3)心跳机制和副本重新创建
① 为了保证NameNode和各个DataNode的联系,HDFS采用了心跳机制。NameNode周期性的向各个DataNode发送心跳包,而收到心跳包的DataNode要进行回复。因为心跳包是定时发送的,所以NameNode就把要执行的命令也通过心跳包发送给DataNode,而DataNode收到心跳包,一方面要回复NameNode,另一方面就要开始应用数据的传输;
② 如果检测到DataNode失效,NameNode之前保存在这个DataNode上的数据就变成不可用数据。如果有的副本存储在失效的DataNode上,那么需要重新创建这个副本,放到另外可用的地方去;
(4)数据一致性
① 一般来讲,DataNode与应用交互的大部分情况都是通过网络进行的,而网络数据传输带来的一大问题就是数据是否原样到达。为了保证数据的一致性,HDFS采用了数据校验和(checkSum)机制。创建文件时,HDFS会为这个文件生成一个校验和,校验和文件和文件本身保存在同一空间中。传输数据时会将数据与校验和数据一起传输,应用收到数据后可以进行校验,如果两个校验的结果不同,则文件出错了,这个数据块就变成无效的。如果判定为无效,则需要从其他DataNode上读取副本数据;
(每日1小题,进步1点点)
5. 什么是网络大数据
大数据应用程序需要处理大规模信息,而且在出于弹性的考虑将数据复制到多个位置时,信息的规模变得越来越大。但是,大数据的最重要属性并不在于它的规模,而在于它将大作业分割成许多小作业的能力,它能够将处理一个任务的资源分散到多个位置变为并行处理。
关键因素
1.网络弹性与大数据应用程序
如果有一组分布式资源必须通过互联网络进行协调时,可用性就变得至关重要。如果网络出现故障,那么造成的后果是出现不连续的坏计算资源与数据集。
2.解决大数据应用中的网络拥塞问题
大数据应用程序不仅仅是规模大,而且还有一种我称为突发性的特性。当一个作业启动之后,数据就开始流转。在高流量时间段里,拥塞是一个严重的问题。然而,拥塞可能引起更多的队列延迟时间和丢包率。此外,拥塞还可能触发重转,这可能让本身负载繁重的网络无法承受。因此,网络架构设计时应该尽可能减少拥塞点。按照可用性的设计标准,减少拥塞要求网络具有较高的路径多样性,这样才能允许网络将流量分散到大量不同的路径上。
3.大数据中网络一致性要比迟延性更重要
实际上,大多数大数据应用程序对网络延迟并不敏感。如果计算时间的数量级为几秒钟或几分钟,那么即使网络上出现较大延迟也是无所谓的——数量级大概为几千毫秒。然而,大数据应用程序一般具有较高的同步性。这意味着作业是并行执行的,而各个作业之间较大的性能差异可能会引发应用程序的故障。因此,网络不仅要足够高效,而且要在空间和时间上具有一致的性能。
4.现在就要准备大数据未来的可伸缩性
可能让人有点意外的是,大多数大数据集群实际上并不大。
可伸缩性并不在于现在集群现在有多大规模,而是说如何平衡地扩展支持未来的部署规模。如果基础架构设计现在只适合小规模部署,那么这个架构将如何随着节点数量的增加而不断进化?在将来某一个时刻,它是否需要完全重新设计架构?这个架构是否需要一些近程数据和数据位置信息?关键是要记住,可伸缩性并不在于绝对规模,而是更关注于实现足够规模解决方案的路径。
5.通过网络分割来处理大数据
网络分割是创建大数据环境的重要条件。在最简单的形式上,分割可能意味着要将大数据流量与其他网络流量分离,这样应用程序产生的突发流量才不会影响其他关键任务工作负载。除此之外,我们还需要处理运行多个作业的多个租户,以满足性能、合规性和/或审计的要求。这些工作要求在一些场合中实现网络负载的逻辑分离,一些场合则还要实现它们的物理分离。架构师需要同时在两个方面上进行规划,但是初始需求最好统一在一起。
6.大数据网络的应用感知能力
虽然大数据的概念与Hadoop部署关系密切,但是它已经成为集群环境的代名词。根据不同应用程序的特点,这些集群环境的需求各不同相同。有一些可能对对带宽要求高,而有一些则可能对延迟很敏感。总之,一个网络要支持多应用程序和多租户,它就必须要能够区分自己的工作负载,并且要能够正确处理各个工作负载。
6. 如何进行大数据处理
大数据处理之一:收集
大数据的收集是指运用多个数据库来接收发自客户端(Web、App或许传感器方式等)的 数据,而且用户能够经过这些数据库来进行简略的查询和处理作业,在大数据的收集进程中,其主要特色和应战是并发数高,因为同时有可能会有成千上万的用户 来进行拜访和操作
大数据处理之二:导入/预处理
虽然收集端本身会有许多数据库,但是假如要对这些海量数据进行有效的剖析,还是应该将这 些来自前端的数据导入到一个集中的大型分布式数据库,或许分布式存储集群,而且能够在导入基础上做一些简略的清洗和预处理作业。导入与预处理进程的特色和应战主要是导入的数据量大,每秒钟的导入量经常会到达百兆,甚至千兆等级。
大数据处理之三:核算/剖析
核算与剖析主要运用分布式数据库,或许分布式核算集群来对存储于其内的海量数据进行普通 的剖析和分类汇总等,以满足大多数常见的剖析需求,在这方面,一些实时性需求会用到EMC的GreenPlum、Oracle的Exadata,以及根据 MySQL的列式存储Infobright等,而一些批处理,或许根据半结构化数据的需求能够运用Hadoop。 核算与剖析这部分的主要特色和应战是剖析触及的数据量大,其对系统资源,特别是I/O会有极大的占用。
大数据处理之四:发掘
主要是在现有数据上面进行根据各种算法的核算,然后起到预测(Predict)的作用,然后实现一些高等级数据剖析的需求。主要运用的工具有Hadoop的Mahout等。该进程的特色和应战主要是用于发掘的算法很复杂,并 且核算触及的数据量和核算量都很大,常用数据发掘算法都以单线程为主。
关于如何进行大数据处理,青藤小编就和您分享到这里了。如果您对大数据工程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于数据分析师、大数据工程师的技巧及素材等内容,可以点击本站的其他文章进行学习。