产生数据的有很多数据源,如各种工业、医疗的仪器和设备,各种物联网传感器,还有互联网的平台、系统及应用,人们的各种工作、生活行为等。数据采集就是利用一定的方法和手段从这些数据源中将数据收集上来,最终能够以数字化的方式将数据存储在一定的介质中。足够的数据量是大数据战略建设的基础,因此数据采集是大数据价值挖掘中重要的一环,其后的分析处理都建立在数据采集的基础上。
如前所述,数据的采集有基于仪器和设备的电子信号或数字信号的采集,有基于物联网传感器的采集,也有基于网络信息的采集。如在智能交通中,数据的采集有基于GPS的定位信息采集、基于交通摄像头的视频采集、基于交通卡口的图像采集、基于路口的线圈信号采集等。而在互联网上的数据采集是对各类网络媒介,如搜索引擎、新闻网站、论坛、微博、博客、电商网站、视频网站等的各种页面信息和用户访问信息进行采集,采集的内容主要有文本信息、URL、访问日志、日期和图片等。之后需要把采集到的各类数据进行清洗、过滤、去重等预处理并分类归纳存储。
数据采集的目的是对数据进行加工利用,最终发掘出数据的价值。具体来说,数据采集是为了构建体系化的数据资源,形成数据资产,然后对这些数据资产进行深度的分析、统计、加工、处理,最终能够发现和挖掘出数据的潜在价值,用于在战略、生产、经营、管理、营销、市场等各个环节进行监测和辅助决策,发现问题及风险,更好地服务于市场及客户等。其最终的目的是充分发挥数据的价值,促进生产力的提升,创造出更多的价值。
数据采集的原理根据数据源的不同,也存在一定的差异性。总体来说,数据采集是需要从监测单元中通过一定的工具采集出信号或数据。如在工业和物联网领域,是从仪器、设备或传感器等被监测对象的模拟或数字被测单元中自动采集非电量或者电量信号,经过有线或无线的方式,传送到存储设备或系统中,再通过计算机系统进行分析和处理。在这种情况下,数据采集的工作方式是将监测单元采集到的各种物理现象转换为电信号或数字信号,通过传输模块到计算机中,再转换为能理解的物理单位及数据。
针对网络信息或互联网系统的数据采集,则一般是通过监测程序、守护进程(Daemon),或是集成在相应系统或网页里的采集程序或脚本完成的,所采集到的数据直接进行本地存储,或是通过网络传送到服务器进行存储。
针对物理现象的数据采集,尤其是在物联网领域,是为了测量电压、电流、温度、湿度、压力等物理现象而开发出一套采集工具或系统。它基于传感器、模数转换、无线通信模块等硬件,结合计算机及应用软件,完成各种物理现象的测量、转换及数据记录。常见的数据采集工具通常是集成了数据采集逻辑的采集芯片、采集仪表、数据采集卡,或者是专用的数据采集设备,如二氧化碳监测仪、医疗血糖采集仪器等。
网络及互联网信息的采集,则是基于数据采集程序及脚本。在数据量呈爆炸式增长的今天,数据的种类丰富多样,也有越来越多的数据需要将存储和计算放到分布式平台。在大型互联网平台中,如电商网站、媒体门户等,经常需要采集后台各个服务节点的日志,然后进行分析挖掘,用作产品或服务推荐等,数据采集工具也需要能够应对大量、实时、多点的数据。
数据采集首先是要从数据源获取到原始数据,获取方式一般用采样的方式。采样可以是连续采样,也可以是间隔一段时间,对同一监测点进行重复采集。采集的数据大多是瞬时值,也可以是某段时间内的一个特征值。
在采集到原始数据后,还需要对数据进行ETL(抽取、转换、加载),即不同数据源及格式的数据经过抽取,然后进行清洗、转换、分类、集成等预处理过程,转换为事件、文件或数据表,才能加载到对应的存储系统中。
数据采集系统是结合基于计算机的测量软硬件产品来实现灵活的、用户自定义的数据测量及采集系统。在工业及物理测量领域,根据实际应用环境和需求的不同,各行各业有着各种不同的数据采集系统。如在医疗领域,X射线仪、CT(计算机断层成像)仪、PET(正电子发射体层成像)仪、超声成像仪、MRI(磁共振成像)仪等,这些都是我们所听说过的医疗数据采集仪器。
在网络信息采集领域,业界当前已经有了一些高效的数据采集工具,如Flume、Scribe、Chukwa和Kafka等。
Flume是Apache开源的一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统,可用于从不同来源的系统中采集、汇总和传输大容量的日志数据到指定的数据存储中。Flume支持在日志系统中定制各类数据发送方来收集数据,同时还可以提供对数据进行简单处理、写到各种定制数据接受方的能力。
Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用。它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS——分布式文件系统等)上,以便于进行集中统计分析处理。它为日志的“分布式收集,统一处理”提供了一个可扩展、高容错的方案。当中央存储系统的网络或者机器出现故障时,Scribe会将日志转存到本地或者另一个位置,当中央存储系统恢复后,Scribe会将转存的日志重新传输给中央存储系统。
Chukwa是一个开源的用于监控大型分布式系统的数据收集系统。这是构建在Hadoop的HDFS和MapReduce框架之上的,继承了Hadoop的可伸缩性和健壮性。Chukwa还包含了一个强大和灵活的工具集,可用于展示、监控和分析已收集的数据。
Kafka是LinkedIn用于日志处理的分布式消息队列,LinkedIn的日志数据容量大,但对可靠性要求不高,其日志数据主要包括用户行为(登录、浏览、单击、分享、喜欢)以及系统运行日志(CPU、内存、磁盘、网络、系统及进程状态)。
当前很多的消息队列服务提供可靠交付保证,并默认是即时消费(不适合离线)。高可靠交付对LinkedIn的日志不是必需的,故可通过降低可靠性来提高性能,同时通过构建分布式的集群,允许消息在系统中累积,使得Kafka同时支持离线和在线日志处理。