大数据的基本概念

大数据从字面上理解就是“海量数据”。

一.大数据的三个特点

  • 规模性(Volume)
  • 多样性(Variety)
  • 高速性(Velocity)

二.从数据库(Database,DB)到大数据(Big Data,BD)

1、数据规模

“池塘” 的处理对象通常以MB为基本单位,而“大海” 则常常以GB,甚至TB、PB为基本处理单位。

2、数据类型

“数据库”,数据的种类单一,往往仅一种或少数几种,这些数据又以结构化数据为主。而在“大数据” 中,数据的种类繁多,包含着结构化、半结构化以及非结构化的数据。

3、模式(Schema)和数据的关系

传统的数据库都是先有模式,然后才会产生数据。而大数据时代很多情况下难以预先确定模式,模式只有在数据出现之后才能确定。

4、处理对象

传统数据库中数据仅作为处理对象。而在大数据中,要将数据作为一种资源来辅助解决其他诸多领域的问题。

三.大数据的产生和应用

人类社会的数据产生方式大致经历了3个阶段。

  • 运营式系统阶段:数据的产生是被动的。比如超市的销售记录系统,银行的交易记录系统等等。
  • 用户原创内容阶段:数据的产生是主动的。比如博客、微博为代表的社交网络,使得用户产生数据的意愿更加强烈。
  • 感知式系统阶段:数据的产生是自动的。通过带有处理功能的传感器,设备运转进行监控,源源不断的产生新数据。

四.大数据处理框架

1、大数据处理模式

大数据主要的处理模式可以分为流处理(Stream Processing)和批处理(Batch Processing)两种。批处理是先存储后处理(Store-then-process),而流处理则是直接处理。

1.1 流处理

  • 目标:尽可能快的对最新的数据做出分析并给出结果。
  • 缺点:不会对所有的数据进行永久化存储,而且数据环境处在不断的变化之中,系统很难掌握。
  • 处理流程:由于响应时间的要求,流处理的过程基本在内存中完成,内存容量是限制流处理模型的一个主要瓶颈。
  • 应用场景:网页点击数的实时统计、传感器网络、在线状态监控等。
  • 技术框架:开源系统如Twitter的Storm、Yahoo的S4以及Linkedin的Kafka等。

1.2 批处理

Google提出的MapReduce编程模型是最具代表性的批处理模式。

  • 处理流程:MapReduce模型首先将用户的原始数据源进行分块,然后分别交给不同的Map任务区处理。Map任务从输入中解析出Key/Value对集合,然后对这些集合执行用户自行定义的Map函数得到中间结果,并将该结果写入本地硬盘。Reduce任务从硬盘上读取数据之后,会根据Key值进行排序,将具有相同key值的组织在一起。最后用户自定义的Reduce函数会作用于这些排好序的结果并输出最终结果。
  • 核心思想:(1)MapReduce模型简单,将问题分而治之(2)将计算推到数据而不是把数据推到计算,有效的避免数据传输过程中产生的大量通讯开销
  • 应用场景:生物信息学、文本挖掘等领域得到广泛的应用。
  • 业务划分:在线(Online)、近线(Nearline)和离线(Offline)。这种划分方式是按处理所耗时间来划分的。其中在线一般秒级,甚至毫秒级,通常采用流处理。离线的处理时间可以以天为基本单位,基本采用批处理。近线的处理时间一般在分钟级或者小时级,可以根据需求灵活选择。

2、大数据处理的基本流程

整个大数据的处理流程可以定义为在合适工具的辅助下,对广泛异构的数据源进行抽取和集成,结果按照一定的标准统一存储。利用合适的数据分析技术对存储的数据进行分析,从中提取有益的知识并利用恰当的方式将结果展现给终端用户。

2.1 数据抽取与集成

  • 因素:因为多样性的特点,数据类型极为繁杂。
  • 数据抽取与集成方式:(1)基于物化或是ETL方法的引擎(2)基于联邦数据库或中间件方法的引擎(3)基于数据流方法的引擎(4)基于搜索引擎的方法

2.2 数据分析

数据分析是整个大数据处理流程的核心,因为大数据的价值产生于分析过程。

  • 分析技术:数据挖掘、机器学习、统计分析等。
  • 应用场景:推荐系统、商业智能、决策支持等。

注:(1)在数据分析前必须进行数据清洗等预处理工作,预处理对于机器硬件以及算法是严峻的考验。
(2)算法需要变得具有可扩展性。当数据量增长到一定规模以后,可以从小量数据中挖掘出有效信息的算法并一定适用于大数据。

3、数据解释

对于用户来说往往更关心结果的展示。

数据解释的方法:

  • 对于传统:就是以文本形式输出结果或者直接在电脑终端上显示结果。
  • 对于大数据:可以考虑引入可视化技术和人机交互技术,引导用户逐步的进行分析。

五.关键技术分析

文件系统提供最底层存储能力的支持。为了便于数据管理,需要在文件系统之上建立数据库系统。通过索引等的构建,对外提供高效的数据查询等常用功能。最后通过数据分析技术从数据库中的大数据提取出有益的知识。

1、云计算:大数据的基础平台与支撑技术

如果将大数据比作“汽车”,支撑起这些“汽车”运行的“高速公路”就是云计算。正是云计算技术在数据存储、管理与分析等方面的支撑,才使得大数据有用武之地。Google使得以GFS、MapReduce、Bigtable为代表的一系列大数据处理技术被广泛应用,同时还催生出以Hadoop为代表的一系列云计算开源工具。

1.1 文件系统

GFS是构建在大量廉价服务器之上的一个可扩展的分布式文件系统,主要针对文件较大,且读远大于写的应用场景,采用主从(Master-Slave)结构。通过数据分块、追加更新(Append-Only)等方式实现了海量数据的高效存储。Google对GFS进行了重新的设计,该系统正式的名称为Colosuss,其中GFS的单点故障(指仅有一个主节点容易成为系统的瓶颈)

因为GFS文件系统频繁读取元数据等原因,效率很低,所以针对这种情况:

  • Facebook推出了专门针对海量小文件的文件系统Haystack,通过多个逻辑文件共享同一个物理文件、增加缓存层、部分元数据加载到内存等方式解决了海量图片存储问题。
  • 淘宝推出TFS 通过将小文件合并成大文件、文件名隐含部分元数据等方式实现了海量小文件的高效存储。

拓展:Bigtable的模型简单,不支持ACID特性。

1.2 数据库系统

采用非关系型数据库统称为NoSQL,具体的特点是:

(1)模式自由(2)支持简易备份(3)简单的应用程序接口(4)最终一致性(5)支持海量数据

1.3 索引与查询技术

就Google自身而言,索引的构建是提供搜索服务的关键部分,最早利用MaoReduce来更新的。因为每次需要批量更新索引,有些数据并未改变也需要处理掉,效率低,所以随后提出Percolator,这是一种增量式的索引更新器,每次更新不需要替换所有的索引数据,效率提高。

对NoSQL数据库上的查询优化主要有两种思路:

  • 采用MapReduce 并行技术优化多值查询:利用MapReduce查询时,每个MapTask处理一部分的查询操作,通过实现多个部分之间的并行查询来提高多值查询的效率。
  • 采用索引技术优化多值查询。

2、大数据处理工具

Hadoop 是目前最为流行的大数据处理平台。包含文件系统(HDFS)、数据库(HBase、Cassandra)、数据处理(MapReduce)等功能模块在内的生态系统。对Hadoop主要研究成果集中在对Hadoop平台性能的改进、高效的查询处理、索引构建和使用、在Hadoop之上构建数据仓库、Hadoop和数据库系统的连接、数据挖掘、推荐系统等

拓展:存储在Hadoop 的HDFS中的大数据,在集成的过程中进行数据转换。

 

展开阅读全文

没有更多推荐了,返回首页