1.2 大数据开源框架
大数据带来的巨大商业价值驱动了依靠数据牟利的大公司的激烈竞争。近年来,大数据开源框架如雨后春笋般不断出现。根据大数据技术的主要分类,典型的大数据开源框架的分类如图1-2所示。
图1-2 大数据开源框架的分类
1.2.1 大数据获取技术
数据获取处于大数据生命周期的第一个环节,它通过传感器、社交网络、移动互联网等方式获得类型的结构化、半结构化及非结构化的海量数据。由于数据量巨大,数据获取主要包括3种方式,即系统日志采集、网络数据采集以及数据库采集。可以完成数据获取的技术包括 Zero Message Queue、Rabbit Message Queue、Active Message Queue以及Apache Kafka等。
1.2.2 大数据管理技术
大数据管理技术主要包括数据库相关技术和大数据平台资源管理技术。数据存储技术主要研究如何组织和存储数据,如何高效地获取和处理数据。数据存储经历了人工管理阶段、文件系统阶段和数据库系统阶段,而数据独立性最高的阶段是数据库系统阶段。数据库系统根据业务需求,又相继出现了传统关系型数据库(MySQL、PostgreSQL)、文档型数据库(MongoDB、Apache CouchDB、Terrastore)、列存储数据库(Vertica、Apache HBase)、键/值对型数据库(Redis、Riak)、图数据库(Neo4j、InfiniteGraph)以及基于内存的分布式文件系统(Alluxio)。
大数据平台资源管理技术主要负责为任务调动数据中心大量的资源,快速地匹配合适资源,如调度数据中心资源的能力、优化内存资源管理、平衡网络带宽以及实现集群高可用等。这类的大数据资源管理技术可以使集群在利用率、资源统一管理和数据共享等方面为企业带来巨大的好处。类似的大数据框架包括Apache Zookeeper、Apache Hadoop YARN、Apache Mesos、Apache Mnemonic等。
1.2.3 大数据处理技术
大数据处理技术主要负责对数据系统中的数据进行计算。从最早期的Hadoop开源平台,到现在的DataTorrent的Apache Apex和谷歌的Apache Beam等,都体现了随着数据量的增大,企业对数据处理的实时性、复杂性、容错性以及稳定性越来越高的要求。
按处理时间的跨度要求,我们将大数据处理技术主要分为实时处理平台和批处理平台。实时处理通常的时间跨度在数百毫秒到数秒之间,批处理的时间跨度则通常在几分钟到数小时之间。批处理处理的数据集通常符合3个特征:首先是有界,指有限的数据集合;其次是持久,数据存储在某种类型的持久存储位置中;最后是大量,批处理通常是处理海量数据集的唯一方法。大量数据的处理需要耗费大量时间,因此批处理不适合对处理时间要求较高的场合,因此出现了实时处理平台。开源实时处理平台主要有Apache Storm、Spark Streaming、Apache Flink、Apache Beam、Apache Apex等,而开源批处理平台主要有Apache Hadoop、Apache Spark、Apache Kylin等。
1.2.4 大数据安全与治理技术
数据治理是指在企业数据生命的整个周期(从数据采集到数据使用直至数据存档)制定由业务推动的数据政策、数据所有权、数据监控、数据标准以及指导方针。数据治理的重点在于,要将数据明确作为企业的一种资产来看待。数据治理主要包括元数据治理、生命周期管理和数据质量管理,数据治理平台主要包括Apache Falcon、Apache Atlas等。
大数据平台首先要考虑其自身基础设施的安全。由于数据的涉密属性,大数据平台不太会考虑使用云的形式。另外,由于取决于搭建大数据平台的技术及数据库,还需要进行针对Hadoop、Hive等的安全管理。需要指出的是,大数据设计的初衷并不是为了安全而考虑,因此整个安全管理机制并不成熟,比如Hadoop早期版本缺少身份认证机制、节点之间的传输无法加密,后续的版本提供了此类的机制之后,进行升级又可能会导致Hadoop不可用。NoSQL数据库则缺乏一些传统数据库提供的安全功能,比如基于角色的访问控制功能。因此在大数据架构中,使用统一的、最小化权限的版本进行自动化配置是最重要的。类似的大数据安全技术包括Apache Kerberos、Apache Ranger、Apache Sentry、Apache Metron等。
1.2.5 大数据分析与挖掘技术
大数据分析技术是指对规模巨大的数据进行分析的技术。数据分析可以让数据分析师对数据产生更加优质的诠释。大数据分析处理的最终目标,是从复杂的数据集合中发现新的关联规则,为进行深度挖掘提供基础,以得到有效用的新信息。数据分析的开源软件主要包括Apache Mahout、Apache Spark MLlib、Apache Lens等。
从海量的数据库中选择、探索、识别出有效的、新颖的、具有潜在效用的乃至最终可理解的模式,以获取商业利益的非平凡的过程,这就是 Fayyad 和Piatetsky-Shapiror在1996年提出的数据挖掘的定义。这个定义有3个要点:处理海量的数据;揭示企业运作中的内在规律;为企业运作提供直接决策分析,并带来巨大经济效益。进行数据挖掘用到的框架主要包括TensorFlow、Caffe、PyTorch、TensorFlow Lite等计算框架。
1.2.6 大数据可视化技术
可视化可以直观地展示数据,让数据自己“表达”,让企业得到理想的结果。不论是数据分析专家,还是普通用户,在分析大数据时,最基本的要求就是对数据进行可视化分析。经过可视化分析后,大数据的特点可以直观地呈现出来,将单一的表格变为丰富多彩的图形模式,简单明了、清晰直观,更易于企业接受。由此可见,数据可视化尤为重要。数据可视化技术是实现数据可视化的重要基础。可视化技术可以帮助决策者和分析师挖掘不同数据之间的联系,这是一种可视化的洞察力。类似的工具有Tableau、Apache Zeppelin、Jaspersoft Community、BIRT、KNIME等。
大数据是当今信息技术发展的前沿和热点领域,物联网、互联网以及移动通信网络的飞速发展催生了大数据问题,带来了速度、结构、体量、成本、价值、安全隐私、互联互通等各方面的问题,传统的信息技术处理手段在面对大数据问题时已显得力不从心,其缺乏扩展性、高效性、安全性等。大数据问题需要大数据技术来解决,而同时大数据问题又能促进大数据技术的真正落地和实施,二者是相辅相成的关系。我们重点从大数据获取、大数据管理、大数据处理、大数据安全与治理以及大数据分析与挖掘等方面描述大数据所涵盖的几大类技术,大数据技术正在随着数据量的日益剧增和处理需求的不断发展,不断地影响着我们的生活习惯和方式。