什么是大数据?你可能需要知道这些
The following article is from 计算机世界 Author 专送干货的
分析大量数据只是大数据不同于以前数据分析的部分因素。想了解其他三个因素是什么吗?
内容转自:计算机世界;作者:焦旭
人类每天都在吃饭、睡觉、工作和玩耍,这个过程就产生了数据——非常非常多的数据。据IBM公布的消息显示,人类每天产生2.5垓(一京是一亿亿,一万京为一垓)字节的数据。该数量相当于从地球堆叠到月球又返回来的所有DVD碟片所能存储的数据总量,其中包括了我们发送的文本、我们上传的照片,以及工业传感器的数据,还有机器间通信的所有数据。
这就是为什么“大数据”现如今如此流行的主要原因。简单地说,当人们谈论大数据时,他们指的是能够获得大量的数据、分析数据,并将其变成有用的东西。
大数据究竟是什么?
大数据涉及到以下内容,但又远不止于这些:
大量的数据,通常来自多个来源。
在大量数据的基础上,数据类型也各不相同——通常要同时面对多种类型的数据,这些数据还随着时间不断变化,且这些数据不需要先转换成特定的格式,也不需要保持一致。
分析数据所采用的方式允许出于不同的目的对相同数据池进行持续分析。
所有这一切都能够迅速完成,甚至是实时的。
在早期,业界提出了一个缩写词来描述四个特征中的三个:VVV,代表了体量(volume,体量巨大)、类型繁多(variety,不同类型的数据,数据随时间变化)、速度(velocity)。
大数据和数据仓库
VVV首字母缩写遗漏了一个关键的概念,即不需要永久地改变(转换)要分析的数据。这种非破坏性的分析意味着谁都可以出于不同的目的去分析相同的数据池,并可以分析从不同源收集的数据。
作为对比,数据仓库是专门设计用于特定目的、分析特定数据,并对数据进行结构化处理,转换为特定的格式。在整个过程中,为了特定的目的,原始数据基本上需要全部被打乱——这被称之为提取、转换和加载(ETL)。数据仓库的ETL方法只针对特定的数据进行特定的分析。这适用于所有数据都要在您的工作系统中的情况,但是在今天互联网连接的世界里,数据来自四面八方,这就不太适用了。
但是,不要认为大数据会使数据仓库过时。大数据系统可以让您非常方便地处理非结构化数据,但您得到的查询结果类型远没有数据仓库的那么复杂。毕竟,数据仓库的目的是深入分析数据,它之所以能很好地做到这一点,是因为它把所有数据都转换为一致的格式,使您能够去构建用于深度挖掘的数据集等类似的工作。数据仓库供应商花了多年的时间来优化他们的查询引擎,回答典型业务环境中的问题。
大数据支持您分析来自多个数据源的大量数据,但分辨率较低。因此,在未来一段时间内,我们将同时使用传统的数据仓库和新方法。
大数据背后的技术突破
为实现大数据四方面的特征——体量巨大、类型繁多、非破坏式使用和速度,这需要技术上的突破,包括分布式文件系统(Hadoop)的发展,这是一种方便快捷地了解不同数据的方法(最早是谷歌的MapReduce,还有最近的Apache Spark),以及根据需要访问和移动数据的云/互联网基础设施。
直到大约十年前,一次处理的数据量还相对较少。(嗯,当时,我们都认为数据仓库是非常巨大的。自从互联网产生数据并把各处的数据连接起来之后,情况发生了巨大的变化。)有限的数据存储数量和位置,计算能力不足,处理来自多个源的不同数据格式的能力也有限,这些因素使得几乎无法完成数据处理任务。
随后,大约2003年的时候,谷歌的研究人员开发了MapReduce。这种编程技术首先把数据映射到一系列键/值,对类似的键值进行计算,将它们缩减为单个值,然后在数百台或者数千台低成本机器上并行处理每一批数据,从而简化了大规模数据集的处理。这种庞大的并行特性使谷歌能够从越来越大量的数据中更快的得到搜索结果。
2003年左右,谷歌实现了两个突破,这使得大数据的发展更进一步。一是Hadoop,它是由两项关键服务组成的:
使用Hadoop分布式文件系统(HDFS),可靠的存储数据。
使用称为MapReduce的技术进行高性能并行数据处理。
Hadoop运行在商用无共享服务器集群上。您可以随意添加或者删除Hadoop集群中的服务器;系统会检测并修复任何服务器上的硬件或者系统问题。换句话说,Hadoop是自我修复的。不管系统进行了修改还是出现了故障,它都能提供数据,运行大规模、高性能处理工作。
虽然Hadoop为数据存储和并行处理提供了一个平台,但真正的价值来自于附加组件、交叉集成和技术的定制实现。为此,Hadoop提供了子项目,这些子项目为平台增加了功能和新特性:
Hadoop Common:支持其他Hadoop子项目的公共实用程序。
Chukwa:一个用于管理大型分布式系统的数据采集系统。
Hbase:一个可扩展的分布式数据库,为大型表提供结构化数据存储支持。
HDFS:一种分布式文件系统,支持对应用数据的大吞吐量访问。
Hive:提供数据摘要和即席查询的数据仓库基础设施。
MapReduce:计算集群上大数据集分布式处理的软件框架。
Pig:并行计算的高级数据流语言和执行框架。
ZooKeeper:分布式应用的高性能协调服务。
大部分Hadoop平台的实现应至少包括其中的一些子项目,因为它们通常是开发大数据所必需的。例如,大多数企业选择使用HDFS作为主要的分布式文件系统,把HBase作为数据库,它可以存储数十亿条数据。使用MapReduce或者最近的Spark几乎是必须的,因为它们提高了Hadoop平台的速度和敏捷性。
采用MapReduce,开发人员可以在分布式处理器集群或者单机上开发并行处理大量非结构化数据的程序。MapReduce框架分为两个功能区:
Map,这一功能把工作分发到分布式集群中的不同节点上。
Reduce,这一功能将工作排序并把结果解析为单个数值。
MapReduce的主要优点之一是它是容错的,这通过监视集群中的每个节点来实现;每个节点都需要定期报告完成的工作和状态更新。如果一个节点保持沉默的时间比预期的间隔长,那么主节点会发出通知并将工作重新分配给其他节点。
Apache Hadoop是以MapReduce为核心的一种开源框架,两年后才开发出来。Hadoop最初是用来索引现在不太常用的Nutch搜索引擎的,现在几乎所有的主要行业都使用Hadoop来进行多种大数据工作。在Hadoop的分布式文件系统和YARN(Yet Another Resource Negotiator,另一种资源调度器)的支持下,该软件使用户能够处理分布在数千台设备上大量的数据集,就好像它们都在一台巨大的机器上一样。
2009年,加州大学伯克利分校的研究人员开发了Apache Spark来替代MapReduce。Spark使用内存存储进行并行计算,因此,它比MapReduce快100倍。Spark可以作为一个独立的框架或者在Hadoop内部运行。
即使使用Hadoop,您仍然需要一种方法来存储和访问数据。这通常是通过MongoDB、CouchDB或者Cassandra等NoSQL数据库来实现的,它们专门处理分布在多台机器上的非结构化或者半结构化数据。对于数据仓库,大量不同类型的数据融合成统一的格式,并存放在一个数据存储中,与数据仓库不同,这些工具不会改变数据的根本性质或者位置——电子邮件仍然是电子邮件,传感器的数据仍然是传感器的数据,而且可以存储在任何地方。
然而,把体量巨大的数据存储在机器集群上的NoSQL数据库中,如果您不使用这些数据,那就体现不出这种方式的优势所在。而这才是大数据分析的用武之地。Tableau、Splunk和Jasper BI等工具支持您解析数据,以识别模式、提取含义,并揭示出新的深度分析结果。您由此要开展的工作会因您的需求而有所不同。
- FIN -