让你一文看懂大数据的前世今生

让你一文看懂大数据的前世今生

当今世界,每一天人们通过各种各样的电子终端制造海量的数据,这些数据有不同的形式,并且来自于一些独立的或关联的应用。

我们现有的数据处理、分析、存储和理解能力,在这股大数据的洪流面前显得力不从心。社交网络应用诞生普及以来,用户可以随心所欲地发布内容,这更加速了数据的快速增长,让本已拥有海量数据的互联网变得更为庞大。

不仅如此,手机里的感应器正从我们身上实时读取各个方面的数据。一部手机可以处理的数据量远远不止通话记录这么简单,毕竟通话记录的发明只是为了方便结账。

可以预见的是物联网(IoT)会把数据规模提升到一个前所未有的高度。到时候,任何人和任何机器(不论是家用咖啡机还是轿车和公共汽车,不论是在火车站还是在机场)都有着松散的联系。

数以万亿计的相连物体无疑会产生巨大的信息海洋,而我们必须大海捞针,去发现有价值的信息,从而提升生活质量,让世界变得更好。例如,每天早上起床后,为了最优化通勤时间,信息处理系统需要综合处理交通、天气、建筑、警察管制和你的日程安排信息,并在有限的时间里进行深度优化。

为了处理多到让人难以置信的数据,我们需要快捷高效、合理利用资源的实时处理方法。

一文看懂大数据的前世今生

01 大数据

用一个具体的数据大小来定义“大数据”是没有意义的,哪怕用拍字节(PB,相当于一千兆字节)也不够。比较有意义的定义是大数据通常太大而难以用常规算法和技术来管理,尤其是当我们要从中提取知识的时候。

二十年前人们还在为吉字节(GB)量的数据挣扎,而写本文的时候纠结的单位已经变成了下表中的太字节(TB)和拍字节(PB)。毫无疑问二十几年后,我们纠结的数据单位会变成表格更下面的几行。

一文看懂大数据的前世今生

(单位:字节)

2001年,在Gartner工作的分析师Doug Laney用3个V特性定义了大数据管理:

  • 数据容量(volume):数据量前所未有且持续增长,但是我们能处理的数据量相对而言并没有增加。
  • 数据种类(variety):数据种类繁多,有文字、传感器数据、音频、视频、图片等,我们要从所有这些数据中提取信息。
  • 数据运动(velocity):数据源源不断,我们想从中实时获取有用的信息。

而后其他V特性又被陆续添加进来:

  • 数据可变性(variability):数据结构或者说用户解释数据的方法,一直在变化。
  • 数据价值(value):数据有用之处仅仅在于其能导向更佳的决策并最终赢得优势。
  • 数据可靠性(validity and veracity):有些数据不完全可靠,必须要控制这些不确定性。

Gartner公司在2012年把大数据的定义总结为:

体量庞大、高速变动和种类繁多的信息资产,需要采用经济型和创新型的信息处理方式,以增强信息洞察及决策的能力。

大数据的应用应该让人们获得更好的服务、更佳的消费体验和更高的健康质量:

  • 商业:个性化体验和客户流失检测。
  • 科技:把处理时间的单位从小时级降低到秒级。
  • 健康:挖掘医疗记录和基因数据,以监控病情、提升健康水平。
  • 智慧城市:专注发展可持续经济和高质量生活,合理有效地利用自然资源。

举一个大数据挖掘的应用案例,我们来看一下Global Pulse是如何工作的。Global Pulse是一个联合国的倡议组织,旨在利用大数据改善发展中国家人民的生活质量 。该组织由大数据创新实验室构成,其大数据挖掘策略如下:

  1. 研究新的方法和技术来分析实时电子数据,尽早检测出潜在的漏洞。
  2. 组装一个免费、开源的技术工具套件,来分析实时数据并分享研究假设。
  3. 建立综合的全球Pulse实验室网络,从国家层面试行数据挖掘策略。

大数据挖掘的改革并不仅限于工业化国家,因为手机在发展国家也逐渐普及开来。全球超过50亿部的手机中,大约80%都源自发展中国家。

一文看懂大数据的前世今生

1. 工具:开源革命

大数据的现象本质上和开源软件革命息息相关。大公司比如雅虎、推特、领英、谷歌和Facebook都从开源项目中受益,并且对其做出贡献,例如:

  • Apache Hadoop

这是一个基于MapReduce编程模型和Hadoop分布式文件系统(HDFS)的平台,用于运行数据密集型的分布式应用。用户可以在Hadoop上快速开发应用,在计算机集群上并行处理海量数据。

Apache Hadoop的相关项目:Apache Pig、Apache Hive、Apache HBase、Apache ZooKeeper、Apache Cassandra、Cascading、Scribe和Apache Mahout都是主要基于Hadoop,具有拓展性的机器学习和数据挖掘开源软件。

  • Apache Spark

这是一个运行在Hadoop架构上,专为大规模数据处理而设计的数据处理引擎。Spark提供了大量的库,包括SQL、DataFrames、MLlib for machine learning、GraphX和Spark Streaming。开发者可以在同一个应用中无缝组合使用这些库。

  • Apache Flink

这是一个流式的数据流执行引擎,为数据流的分布式计算提供了数据分布、数据通信和容错机制。基于流执行引擎,Flink提供了几个易于开发应用的API。如果说Apache Spark的Spark Streaming是个可以用微批次数据来模拟流处理的批处理引擎,那么Apache Flink就是可以做到批处理的流处理引擎。

  • Apache Storm

这是一个分布式数据流处理系统,同Apache S4及Apache Samza类似。

  • TensorFlow

这是一个用机器学习和深度神经网络的开源包。

一文看懂大数据的前世今生

2. 大数据带来的挑战

由于数据的本质:庞大、多样、变化,大数据的管理和分析在未来仍有诸多挑战。接下来几年,研究者和从业者需要处理的部分挑战如下:

  • 架构分析

目前尚不清楚如何搭建最优化的架构分析系统,用于同时处理历史数据和实时数据。第一个架构是Nathan Martz提出的Lambda架构。

Lambda架构划成三层:批处理层、服务层和速度层,可以在任何数据上实时运行任意功能。它在同一个系统里整合了Hadoop和Storm,分别用于批处理层和速度层的计算。一个更近期的方案是由领英的Kreps提出的Kappa架构。它简化了Lambda架构,删去了批量处理系统。

  • 评估

有效的评估方法是得出重要的统计结论,并且避免概率的陷阱。如果“多重假设问题”没有处理好,很容易像Efron说的那样,一下子在大数据集和成千上万亟待解答的问题上出错。

在进行数据评估时,更重要的是避免陷入纸上谈兵的误区,即只注重技术上的衡量标准,比如错误率和速度,而忽视了对现实的影响。Wagstaff曾讨论过,想要驳倒那些觉得大数据徒有虚名的人,唯一的办法就是定期发布达到挑战性问题的合理标准的应用,就像他的论文里解释的那样。

  • 分布式挖掘

许多数据挖掘技术都在分布式挖掘上也有一定用途。为了开发出这些技术的分布式版本,需要更多实验研究和理论分析。

  • 数据变化

数据可能随时变化,因此大数据挖掘技术要注重灵活应变,有时还要能明确侦测到变化。正是这种需求促进了本书的许多数据流挖掘技术的开发。

  • 数据压缩

存储空间的大小和大数据处理息息相关。节省空间有两个主要的途径:压缩,无损于信息;或者取样,选择具有代表性的数据。压缩耗时更多而需要的空间更少,相当于化时间为空间。取样虽然有损信息,但是可以节省数量级的空间。比如Feldman等人就用核集(coreset)简化了大数据的问题。核集是数据集的一个小子集,能够可靠地估算原本的数据。

  • 数据可视化

大数据分析还有一个主要问题就是如何可视化结果,其挑战在于要用易于理解的方法表现大量数据里的信息。就像The Human Face of Big Data这本书所说,大数据可视化需要新的技术和框架来呈现故事。

  • 隐藏的大数据

大部分原本有用的数据实际上都没发挥作用,因为它们没加标签、基于文件或者非结构化。2012年IDC对大数据的研究解释道,如果能加上标签和分析,2012年里有23%(632艾字节)的数字世界能够被用于大数据。然而那时只有3%可能有用的数据被加上了标签,被分析的数据就更少了。

这个数字这几年可能还在下降。开放数据和语义网运动的出现让我们意识到了这个问题,并且改善了情况。

一文看懂大数据的前世今生

02 实时分析

一个大数据的著名例子是实时分析。对一个组织来说,重要的不仅是立即获得查询结果,更是根据刚刚产生的数据进行查询。

1. 数据流

数据流是一个用于支持实时分析的抽象的算法概念。数据流是指一系列的数据项,可以是无限的。每一个数据项都有时间戳,所以也就有了时间顺序。数据项接踵而至,而我们想要建立并维护这些实时数据项的模型,比如模式或者预测者。

处理数据流的时候,在算法方面有两个主要挑战:数据流数据庞大并且流动速度快,而我们需要从中实时提取信息。这意味着通常需要接受近似的解决方案,以便节省时间和内存;另一个挑战是数据会演变,所以我们建立的模型要能适应数据里的变化。

2. 时间和内存

准确度、时间和内存是数据流挖掘的三个主要维度:我们希望得到用最少时间和最小总内存,获取最高准确度的方法。

只要把时间和内存合并到单一成本测量,就完全有可能把评估降维到二维任务。另外要注意的还有,与传统的数据挖掘类似,因为高速数据流无法缓冲,所以处理单个数据项的时间和总时间是相关的。

3. 应用一览

产生数据流的场景有很多,这里我们举几个例子:

  • 传感器数据和物联网:每天越来越多的传感器用于工业中的过程监控和质量改善。城市也开始部署庞大的传感器网络,用于监控人流的移动,检查道路和桥梁的健康情况、市内交通和人口的重要常数(vital constant)等。
  • 远程通信:远程通信公司有大量的手机通话记录。现在,手机通话和位置也变成了需要实时处理的大数据来源。
  • 社交媒体:在社交网站比如Facebook、推特、领英和Instagram上,用户持续产生互动和贡献的数据。随之产生了两个需要实时数据分析的问题:话题社群的发现和情感分析。
  • 市场和电子商务:销售行业正在实时收集大量交易数据,分析其背后价值,并且探测电子交易中的诈骗。
  • 健康护理:照料病人的时候,医院收集大量时效性很强的数据,并且监控病人的重要指标,比如血压、心率和体温。远程医疗还会监控病人在家的数据,可能用不同的传感器检测他们的日常活动。这样的系统还可以处理实验测试结果、病例报告、X光和数字图片。有些数据可用于实时提供病人身体情况变化的警报。
  • 流行病和灾害:源于网络的数据流可以用来探测流行病和自然灾害,还可以和各种官方中心的统计结合,用于进行疾病和灾害的控制和预防。
  • 计算机安全:计算机系统要防范盗窃和一切对硬件、软件和信息的伤害,还要防范来自系统内部服务的打断和误导,特别是内在的威胁检测和入侵检测。
  • 电力需求预测:供应商需要提前知道客户的用电情况,而这个指数会随着天数、年数、地理、天气、经济状况、用户习惯和其他因素改变。要从大量分散的数据中预测结果是一个相当复杂的问题。
分享扩散:

改版

反馈