Storm基于拓扑(Topology)实现对数据流的分布式实时处理。拓扑是一个有向无环图(Directed Acyclic Graph),一个典型的Storm的拓扑结构如图1.5所示。
Topology中数据以元组(Tuple)的形式进行转发和处理。和Hadoop中的MapReduce作业不同,Storm的拓扑一经启动将永久运行,不断处理实时到达的数据元组。
Storm拓扑由Spout和Bolt两类组件构成。Spout作为数据产生者,从一个外部源(例如Kafka)读取数据并并向Storm拓扑中喷射数据元组。Bolt作为数据消费者,对所接收的数据元组进行处理和转发。
一个复杂的Storm拓扑可由多个Spout和多个Bolt组成,且可以为每个Spout或Bolt设置其任务(Task)并行度,由多个任务并行完成其处理逻辑。Storm提供多种组件间的数据分发策略,例如随机分组(Shuffle grouping)、按字段分组(Field grouping)、全局分组(Global grouping)和广播发送(All grouping),用以完成Storm拓扑中上游组件的各个任务向下游组件的各个任务的数据分发.
Storm的优点包含以下几个方面:
(1)易整合:Storm可以方便与数据库系统进行整合。
(2)易使用:Storm提供丰富的API,方便用户的使用。
(3)易扩展:Storm可以方便部署和运行在大规模分布式集群中。
(4)易纠错:Storm可以自行重启故障节点,并完成对故障节点任务的重新分配。
(5)可靠的消息处理:Storm保证每个消息都能被系统完整处理。
(6)免费、开源:Storm是一款开源流处理框架,可以免费使用。
1.2.4 大数据处理的基本流程 1. 数据集成
大数据的一个重要特性就是多样化(Variety),这意味着产生大数据的来源广泛、类型庞杂、并经常存在数据冗余和错漏现象,给数据处理带来了巨大挑战。要想处理大数据,首要任务就是对数据源抽取的数据进行合理的集成。
数据集成是指通过访问、解析、规范化、标准化、整合、清洗、抽取、匹配、分类、修饰和数据交付等功能把不同来源、格式、特点、性质的数据在逻辑上或物理上有机地集中,从而为后期数据处理提供保障。数据集成的目的是保证数据的质量和可信性。如果数据集成工作没有做好,会导致整个大数据项目的延期甚至失败。因此,在大数据给人们带来价值之前,必须对其进行合理的集成。
2. 数据分析
数据分析是整个大数据处理流程中的核心环节,因为大数据所蕴含的价值需要通过数据分析得以实现。传统的数据分析技术包括数据挖掘、机器学习、统计分析等在用于处理大数据时可能需要进行必要的调整,因为这些技术在处理大数据时面临一些新的挑战,体现在以下几个方面:
大数据价值大(Value)的特性虽然意味着大数据蕴含了巨大价值,但是大数据同时也存在价值密度低的特点,体现在大数据中存在大量的冗余数据、噪音数据、遗漏数据和错误数据。因此,在进行数据分析之前,需要对大数据进行数据清洗、整合等集成工作。然而,对如此大规模的数据进行清洗和整合无疑会对硬件环境和算法性能提出新的要求。
3. 数据解释
虽然数据分析是大数据处理的核心,但是用户更关注对分析结果的展示。即使分析过程高效、分析结果正确,如果没有通过容易理解的方式给用户展示大数据的分析结果将会大大降低分析结果的实际价值,极端情况下甚至会误导用户。
传统的数据解释方法是在电脑终端上打印显示分析结果或以文本的形式向用户呈现分析结果。然而,大数据的分析结果往往规模大而且结果之间的关系错综复杂,因而传统的数据解释方法不适用于解释大数据的分析结果。
目前,业界推出了很多数据可视化技术,用图表等形象的方式向用户展现大数据的分析结果。常见的数据可视化技术包括标签云(Tag cloud)、历史流(History flow)和空间信息流(Spatial information flow)等。
1.3.1 数据库系统
数据库系统是以数据库技术为核心的计算机应用系统,其主要目的是处理生产和实践过程中产生的数据和信息,实现生产过程管理的自动化和信息化,提高信息管理效率。
数据库系统一般包含四个部分
1.数据库
定义:是数据库系统存放结构化数据的地方,是长期存储的、有组织的、可共享的数据的集合。
Ø 数据最终是以文件的形式存储在磁盘上,只有数据库管理系统才能对这些文件进行存取操作。
Ø 每一个数据库都至少有一个这样文件,称为数据文件。
Ø SQL Server数据库的数据文件以.mdf或.ndf为扩展名。
2.数据库管理系统(DBMS)
定义: DBMS是数据库的管理软件,是应用程序和数据库之间桥梁,即应用程序必须通过DBMS才能存取数据库中的数据。
Ø DBMS对数据的存取操作最终体现为对数据文件的更新和修改,但应用程序不能直接执行这种更新和修改操作。
Ø SQL Server 2014就是SQL Server数据库系统的一种DBMS。
3. 应用程序
定义: 是指通过访问数据库来完成用户操作的程序。
Ø 它介于系统用户和DBMS之间,用户通过操作应用程序来获取他们的需求,而应用程序则通过DBMS访问数据库来实现用户提出的需求。
Ø 应用程序可以用Java、JSP、.NET等技术开发。
4.系统用户
定义:是大致分为两类——系统用户和系统管理员。
Ø 系统用户是指应用程序的用户,他们是整个数据库系统的最终使用者;
Ø 系统管理员可以分为不同级别类型的管理人员,他们主要负责数据库的管理和维护工作。
数据库系统各部分之间的关系: