说到大数据,可以称是老生常谈了。但可以这样说,时至今日,还有很多IT从业者没有真正的理解何为大数据,大数据是用来解决什么问题。特别是不少从事售前、客户代表的工作者,无论什么项目都要和大数据扯上关系,生怕表现得不专业。现在网上也有很多文章都有介绍大数据的前世今生,介绍大数据在各行各业的应用,但还是让不少人不得其奥秘。我写这篇文章,先抛开当下热门的大数据技术,避开复杂的专业用语,用尽量白话的方式来谈谈大数据究竟为何物,究竟是何用途,希望能为大数据学者提供一个学习读物。如有任何不妥、错误的地方,还请各位多多指教。

      我觉得大数据可以从狭义和广义上来理解,从狭义上来讲就是当前的大数据技术和应用场景,广义上来将大数据可以归为一个范畴。好了不多说,免得各位读者晕头转向,我先从狭义上来讲大数据。即大数据究竟为何种技术。


什么是数据

      要说大数据,我们先说说什么是数据。
     “数据是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。”(百度百科)
      是不是看起来不好理解,没关系,我举几个例子。看图:

attachments-2018-02-3g7rP4XU5a93b10a37ded.jpg

     (1)我们描述第一张图,用t来表示温度,当t=0时,水结成冰。我们把t=0当做一个数据,这一个数据就描述了第一幅图。

      (2)现在描述第二张图,我们只列举几个汽车的指标,加速度a,最大速度v,制动系数β,耗油系数γ。那么我们把a,v,β,γ的取值当做4个数据,我们用这4个数据描述了第二幅图。
      (3)接着描述第三张图,我们同样只列举几个天体运行参数,星体质量m,运行半径r,公转周期T,自转周期t。同样我们把m,r,T,t的取值当做4个数据,我们用这4个数据描述了第三幅图。
      (4)第4张图是股票,我已近想不出来用什么数据来描述股票市场了,复杂程度已超出我的理解了。
      说了这么多,那数据是什么?数据其实就是我们对事物的一种描述,事物越复杂,我们需要的数据也就越多。例如天体运行,我们很难用语言文字来详细描述天体运行状态,比如用语言详细描述地球现在运行在什么位置,所以我们用数学的方式,以方程式为体现,来对事物进行描述。用数学的方式将事物抽象成上面的数据已经将事物的描述简化到一定程度,但是对于计算机来理解还是过于复杂,我们便用编码的方式将数据做成了计算机可以理解的0和1。这些对事物的描述,即是数据。


当代数据的特点

      那么高度信息化的今天,我们的数据又有什么样的特点呢?

      时代发展越来越快,我们对世界的认识进一步加深,我们需要记录的东西越来越多,不单单是量越来越大,种类也越来越多。从以前纸质记录文字,到录音机记录声音,再到后来的视频等等。

      随着信息产业的飞速发展,我们不能再像以前一样用纸笔来留存数据,也不能像上世纪70、80年代的计算机纸带打孔器来记录,传统的数据库软件好像也不能满足我们现有的存储需求。我们面临的问题:数据量越来越大,数据种类越来越多,传统IT架构越来庞大、臃肿,传统IT技术效率越来越低下。同时,我们对数据的安全,数据的共享,数据的使用也有了更高的需求。


需求驱动新兴技术

      就在这时,我们的IT精英充分发挥了聪明才智。随着互联网的发展,数据的存储、共享、管理、使用和传统的数据处理方式有了很大的变化。为了适应当前数据的管理要求,先驱们在理论上和技术大施拳脚,创造发明了一系列新理念新技术来解决数据日益膨胀带来的问题。随之便出现了一系列广为人知的数据处理技术,比如以分布式存储、并行式计算为核心架构的Hadoop。因此,我把当前新兴的、不同于传统的数据管理技术和先进的数据使用、管理理念,统一称之为大数据
      不知道说到这,小伙伴们对大数据有一个初步的认识没有。


一个例子

      在开始讲大数据的特点及核心要素之前,我先讲个大家都能明白的例子,使得大家能够更好地理解文章后面的内容。
      这个例子就是全国人口普查。2010年开展了第6次全国人口普查,普查内容包括:性别、年龄、民族、受教育程度、行业、职业、迁移流动、社会保障、婚姻生育、死亡、住房情况等。第六次人口普查登记(已上报户口)的全国总人口为1,339,724,852人。对于最后这个数字的由来,过程是很艰辛的,在信息化还不那么发达的2010年,并不是我们在电脑中统计×××号的个数就能得来的,还需要我们的民警进行核对、校验、排错,最后才得到的这个统计结果。
      那么各位小伙伴们,你们想一想,如果是你们来策划人口普查,会是怎样的思路?下面分享一下我的思路:
      首先我会细化统计单元,从省-市-区县-街道(这是我举的是例子,不是实际的行政区域划分),执行单位从上往下依次为公安部,各省公安厅,各市公安局,各区县公安局,各街道派出所。公安部要求各省公安厅,在规定时间内统计该省人口数量信息,然后各省公安厅要求市公安局,市公安局要求区县公安局,区县公安局要求街道派出所,派出所给各位民警分配具体的任务,每位民警统计哪些小区、商铺等,统计该街道的人口信息,然后做一个累加,核对、校验、排错,得出最后结果。
      这个例子,体现了两个重要的数据处理思想,并行计算,分布式存储。
      什么叫并行计算,就是大家在同一时间进行计算,就如上面的例子,江西省的民警和广东省的民警同时在统计各自辖区的人口。如果不是并行计算,而是1个民警来进行全国性的统计,这个工作是不是就会花费非常多的时间。
      那什么是分布式存储,就是一份信息,拆分成1个或多个部分,存在不同的地方,可能备份多次。比如上面的例子,湖南省某市某区某街道派出所,在完成了该辖区的统计工作后,统计信息先存在本地,再依次上报给区公安局,市公安局、省公安厅、公安部。这样这个地区的统计信息将储存在多个地方,最后公安部将有最全面的统计信息。这样公安部的统计信息就很难丢失。
      上面人口普查的例子,不知道小伙伴们理解得怎么样。为了再深入一步,我再举一个例子——支付宝的风控大脑,详细信息参看:
      http://www.sohu.com/a/164126216_297161


大数据的真正用途

      那么讲到现在,我要说说大数据的真正用途了,也可以说是数据的真正用途。我觉得用6个字就可以概括:找规律,找联系。

      马克思主义中提到,我们要认识事物发展的客观规律和内在联系。我们认识世界的过程,就是一个找规律的过程,我们通过无数地观察、比对找到天体运行规律,通过分析、推演找到物种进化的规律,通过实验找到肠胃消化的规律。这也就好比机器在大数据中进行学习的过程,比如支付宝风控大脑这个例子,计算机采集尽量多的数据,进行统计学分析,来对客户进行身份验证,这就是找规律的一个很好的体现。
      当然,找事物的客观发展规律和内在联系是大数据的真正用途,但不是终极目标,我们的终极目标是通过认识事物的发展规律和内在联系,从而充分发挥人的主观能动性来改造世界使我们的世界更加美好(虽说有些科技破坏环境,但我们的愿景是美好的)。而计算机发挥能动性,又得提到了另一个火热的技术,人工智能。大数据为人工智能做了铺垫。好了,点到为止,不扯远了。
      总之来讲,大数据是用来帮助人们寻找规律和内在联系的。机器的运算速度快,运算量大,可以长时间高负荷运行,这是人所没有的优势,所以在未来的发展中,数据科学一定会是热门的学科之一。


大数据技术覆盖范围

      大数据技术是很多技术的一个总称,其覆盖的范围包括数据采集、数据存储、数据建模、数据分析和数据变现,我简单的解释一下这部分。
      数据采集,即数据从何而来,这个范围涉及很广。比如原始数据采集,像我们的物联网项目中,传感器可以采集各种数据,温湿度,PM2.5指数,噪声分贝等等。又比如某网站的访问量,某资源的下载量和浏览量等等,这都可以当做数据采集。这里会涉及的技术包括传感器,Apache/Nginx网站架构等。
      数据存储,这个好理解,即是我们怎么存储我们采集到的数据。可以采用关系型或非关系型数据库进行存储,也可以采用文本文件txt进行存储。
      数据建模,即我们怎么建立对数据的基本处理方法,像上文提到的人口普查,就是一个数量累加的操作,当然我们要解决的远不是数据累加这样简单的基本模型,比如支付宝的风控大脑,就需要建立一个复杂的数学模型。
      数据分析,这样是数据处理极为核心的一部分。在建立起模型后,我们要把数据带入到模型中进行分析,包括但不限于校队、核查、统计、分类。如人口普查的例子,我们是不是需要对“黑户”进行单独处理,是不是需要对人口流动进行单独分类排重。这里我暂时不展开讲,数据分析是体现数据价值最直观、有效的方式。
      数据变现,即我们对数据进行一系列操作后得到的结果。我们费了那么多力,最后得出的结果必然要对我们的实际生产有指导效果,肯定不能得到的结果是一堆无用的统计数字。数据变现的方式有很多种,可以是我们给领导汇报的PPT材料,可以是指导国家制定计划生育政策的参考数据,也可以是支付宝有效放到的重要保障。反正就一点,产生的数据一定要有价值,这就是数据变现的核心思想。


大数据的两大核心要素

      我觉得,大数据技术的核心要素有两部分,第一是数据,第二是模型。

      首先说数据,上文我也说了,当前数据的膨胀速度可以说是非常吓人,我觉得用摩尔定律来形容数据增长毫不夸张,我们的数据呈指数级增长是有目共睹的。那么这就有3个关键问题需要我们解决。数据的存储、数据的安全与灾备、数据的调用。

      当前,数据计量早已突破GB单位,PB、EB、ZB级别的数据量也不再罕见。数据的存储便成为一个很大的问题。在硬件层面上,从早期的软盘、光盘、机械硬盘,到后来的RAID、固态硬盘等等,数据量的膨胀也在催生存储介质的研究发展。在软件层面,如何存储数据也很关键,如果选取的技术不当,也会造成数据使用的困扰,比如一个以txt形式存储Apache的日志文件,可能会到达几十GB,而这样大的文本文件读起来是非常困难的。在架构层面上,如何进行架构设计、技术选型,也是非常关键,选用何种数据库最实惠,是选择分布式存储还是集中式,小企业是否采需要采购云服务商的数据存储服务。这几个层面上的问题都是我们在解决数据存储时需要面对的。

      数据的安全与灾备,这是老生常谈的问题了。如何进行数据的安全防护,如何设置数据的共享机制,以及大量的数据如何进行备份,我在这里也就不多说了,数据安全问题从来都是热门话题。

      数据存储的第3个问题,就是数据调用。我所说的数据调用,即是使用何种手段、方法去访问数据。还拿日志文件说事,MySQL的日志文件直接读取不直观,用mysqldump来读取就直观一点;比如数据库中的大表,在大表中查询一个数据会较费时;再比如P2P网络中对资源的调度。当然如果数据量少,传统的方式还能够应付,但当要处理海量数据时,数据调用方法的细微差距会导致系统运行质量的天差地别。

      上面说的是大数据核心要素中的数据部分,下面我说一下大数据处理模型。

      所谓模型,通俗来讲,就是我们如何处理数据,数据处理完毕以后要得出怎样的结果。在我们开始一项工作之前,我们首先得要有明确的目标,有了明确目标以后,我们需要分析,为了达到这个目标,我们可能需要哪些数据,这些数据是怎样对结果产生影响的。

      建模这一过程,我用一个简单的方程式来表述:

      y=f1(x1)+f2(x2)+f3(x3)+f4(x4)+......

      我们用y来表示我们最后要寻找的结果,x1、x2、x3、x4......就是我们预先判断会影响结果y的因子,f1、f2、f3、f4......表示这些因子会怎样来影响结果y。首先我们要建立这样一个模型,然后开始采集数据并进行统计、回归分析。在分析的过程中可能会排除一些无关因子,也可能发现一些新因子,这样需要对原模型进行修改。我举一个上世界80年代的例子,一位普林斯顿大学的经济学家奥利·阿什菲尔特对葡萄酒的品质做了一个量化计算:

      葡萄酒的品质=12.145+0.00117×冬天的降雨量+0.0614×葡萄生长期平均气温-0.00386×收获季节降雨量

      这就是奥利对大量数据进行分析后,使用统计、回归的数学方法找到的葡萄酒品质的规律。

      我举的这个例子很简单,现在我们的实际生产中可能要面对的更复杂的需求和更难预知的模型,但是建模的中心思想都是一样的。就如支付宝风控大脑,为了判断出支付操作人是否为账户所有人,风控大脑要采集多维度的数据来进行综合判断。

  

写在最后

      感谢小伙伴的阅读,如有不妥之处,还望各位小伙伴多多指教。