上期我们说到大数据的概念,其实,大数据比我们想象中的还要复杂,本期,我们主要从技术的角度介绍一下大数据的知识。
大数据技术是一系列技术的总称,它是集合了数据采集与传输、数据存储、数据处理与分析、数据挖掘、数据可视化等技术,是一个庞大而复杂的技术体系。
根据大数据从来源到应用,实现传输的流程,可以将大数据技术架构分为数据收集层、数据存储层、数据处理层、数据治理与建模层、数据应用层。
大数据技术架构图
一、数据收集层
大数据收集层主要采用了大数据采集技术,实现对数据的ETL操作,ETL,是英文Extract-Transform-Load的缩写,数据从数据来源端经过抽取(extract)、转换(transform)、加载(load)到目的端。用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据模型,将数据加载到数据仓库中去,最后对数据仓库中的数据进行数据分析和处理。数据采集位于数据分析生命周期的重要一环,它通过传感器数据、社交网络数据、移动互联网数据等方式获得各种类型的结构化、半结构化及非结构化的海量数据。由于采集的数据种类错综复杂,对于这种不同种类的数据。
在现实生活中,数据产生的种类很多,并且不同种类的数据产生的方式不同。对于大数据采集的数据类型,主要有以下三类:
(1)互联网数据:主要包括互联网平台上的公开信息,主要通过网络爬虫和一些网站平台提供的公共API(如Twitter和新浪微博API)等方式从网站上获取数据。这样就可以将非结构化数据和半结构化数据的网页数据从网页中提取出来。并将其提取、清洗、转换成结构化的数据,将其存储为统一的本地文件数据。目前常用的网页爬虫系统有Apache Nutch、Crawler4j、Scrapy等框架;
(2)系统日志数据:许多公司的业务平台每天都会产生大量的日志数据。对于这些日志信息,我们可以得到出很多有价值的数据。通过对这些日志信息进行日志采集、收集,然后进行数据分析,挖掘公司业务平台日志数据中的潜在价值。为公司决策和公司后台服务器平台性能评估提高可靠的数据保证。系统日志采集系统做的事情就是收集日志数据提供离线和在线的实时分析使用。目前常用的开源日志收集系统有Flume、Scribe等;
(3)数据库数据:些企业会使用传统的关系型数据库MySQL和Oracle等来存储数据。除此之外,Redis和MongoDB这样的NoSQL数据库也常用于数据的采集。企业每时每刻产生的业务数据,以数据库一行记录形式被直接写入到数据库中。
数据采集技术
二、数据存储层
当大量的数据收集完后,我们需要对大数据进行存储。数据的存储分为持久化存储和非持久化存储。持久化存储表示把数据存储在磁盘中,关机或断电后,数据依然不会丢失。非持久化存储表示把数据存储在内存中,读写速度快,但是关机或断电后,数据丢失。
对于持久化存储而言,最关键的概念就是文件系统和数据库系统。常见的分布式文件系统HDFS、对应的分布式非关系型数据库系统Hbase,以及另一个非关系型数据库MongoDB。
而支持非持久化的系统,包括Redis、Berkeley DB和Memcached,则为前述的存储数据库提供了缓存机制,可以大幅地提升系统的响应速度,降低持久化存储的压力。
三、数据处理层
当我们把数据收集好了、数据存储以及读写也都没有问题,我们手握着这一堆数据干嘛?除了保存原始数据,做好数据备份之外,我们还需要考虑到利用他们产生更大的价值。那么首先我们需要对这些数据进行处理。大数据处理分为两类,批量处理(离线处理)和实时处理(在线处理)。
在线处理就是指对实时响应要求非常高的处理,如数据库的一次查询。而离线处理就是对实时响应没有要求的处理,如批量地压缩文档。通过消息机制可以提升处理的及时性。
Hadoop的MapReduce计算是一种非常适合的离线批处理框架。为了提升效率,下一代的管理框架YARN和更迅速的计算框架Spark最近几年也在逐步的成型之中。在此基础上,人们又提出了hive、pig、impala和spark SQL等工具,进一步简化了某些常见的查询。
Spark Streaming和Storm则在映射和归约的思想基础上,提供了流式计算框架,进一步提升处理的实时性。
同时可以利用ActiveMQ和Kafka这样的消息机制,将数据的变化及时推送到各个数据处理系统进行增量的更新。由于消息机制的实时性更强,通常还会与spark streaming、storm这样的流式计算结合起来使用。
四、数据治理与建模层
数据收集、数据存储和数据处理是大数据架构的基础设置。一般情况下,完成以上三个层次的数据工作,已经将数据转化为基础数据,为上层的业务应用提供支撑。但是大数据时代,数据类型多样,单位价值稀疏的特点,要求对数据进行治理和融合建模。通过利用R语言、Python等对数据进行ETL预处理,然后再根据算法模型、业务模型进行融合建模,从而更好地为业务应用提供优质底层数据。
在对数据进行ETL处理和建模后,需要对获取的数据进行进一步管理,可以采用相关的数据管理工具,包括元数据管理工具、数据质量管理工具、数据标准管理工具等,实现数据的全方位管理。
五、数据应用层
数据应用层是大数据技术和应用的目标。通常包括信息检索、关联分析等功能。Lucene、Solr和Elasticsearch这样的开源项目为信息检索的实现提供了可能。
大数据架构为大数据的业务应用提供了一种通用的架构,还需要根据行业领域、公司技术积累以及业务场景,从业务需求、产品设计、技术选型到实现方案流程上具体问题具体分析,利用大数据可视化技术,进一步深入,形成更为明确的应用,包括基于大数据交易与共享、基于开发平台的大数据应用、基于大数据的工具应用等。