版本 | 日期 | 备注 |
---|---|---|
1.0 | 2021.5.9 | 文章首发 |
这是我的学习笔记,大量摘抄网上、书本里的内容,将我自己认为关联度较高的内容呈现上来。
大数据从数据源开始,经过分析、挖掘到最终获得价值一般需要经过6个主要环节,包括数据收集、数据存储、资源管理与服务协调、计算引擎、数据分析和数据可视化,技术体系如图所示。每个环节都面临不同程度的技术挑战。
数据源
数据收集层由直接跟数据源对接的模块构成,负责将数据源中的数据近实时或实时收集到一起。数据源具有分布式、异构性、多样化及流式产生等特点:
❑ 分布式:数据源通常分布在不同机器或设备上,并通过网络连接在一起。
❑ 异构性:任何能够产生数据的系统均可以称为数据源,比如Web服务器、数据库、传感器、手环、视频摄像头等。
❑ 多样化:数据的格式是多种多种多样的,既有像用户基本信息这样的关系型数据,也有如图片、音频和视频等非关系型数据。
❑ 流式产生:数据源如同“水龙头”一样,会源源不断地产生“流水”(数据),而数据收集系统应实时或近实时地将数据发送到后端,以便及时对数据进行分析。
数据收集层
❑ 主要由关系型与非关系型数据收集组件,分布式消息队列构成。
❑ Sqoop/Canal:关系型数据收集和导入工具,是连接关系型数据库(比如MySQL)和Hadoop(比如HDFS)的桥梁,Sqoop可将关系型数据库中的数据全量导入Hadoop,反之亦可,而Canal则可用于实现数据的增量导入。
❑ Flume:非关系型数据收集工具,主要是流式日志数据,可近实时收集,经过滤,聚集后加载到HDFS等存储系统。
❑ Kafka:分布式消息队列,一般作为数据总线使用,它允许多个数据消费者订阅并获取感兴趣的数据。相比于其他消息队列,它采用分布式高容错设计,更适合大数据应用场景。
数据储存层
在大数据时代,由于数据收集系统会将各类数据源源不断地发到中央化存储系统中,这对数据存储层的扩展性、容错性及存储模型等有较高要求,总结如下:
❑ 扩展性:在实际应用中,数据量会不断增加,现有集群的存储能力很快将达到上限,此时需要增加新的机器扩充存储能力,这要求存储系统本身具备非常好的线性扩展能力。
❑ 容错性:考虑到成本等因素,大数据系统从最初就假设构建在廉价机器上,这就要求系统本身就有良好的容错机制确保在机器出现故障时不会导致数据丢失。
❑ 存储模型:由于数据具有多样性,数据存储层应支持多种数据模型,确保结构化和非结构化的数据能够很容易保存下来。
典型的应用:
- HDFS
- Kudu
- HBase
资源管理与服务协调层
主要是为了解决:
- 资源利用率
- 运维成本高
Iaas、K8S、Omega都属于这一层。
计算引擎层
计算引擎层是大数据技术中最活跃的一层,直到今天,仍不断有新的计算引擎被提出。 总体上讲,可按照对时间性能的要求,将计算引擎分为三类:
❑ 批处理:该类计算引擎对时间要求最低,一般处理时间为分钟到小时级别,甚至天级别,它追求的是高吞吐率,即单位时间内处理的数据量尽可能大,典型的应用有搜索引擎构建索引、批量数据分析等。
❑ 交互式处理:该类计算引擎对时间要求比较高,一般要求处理时间为秒级别,这类系统需要跟人进行交互,因此会提供类SQL的语言便于用户使用,典型的应用有数据查询、参数化报表生成等。
❑ 实时处理:该类计算引擎对时间要求最高,一般处理延迟在秒级以内,典型的应用有广告系统、舆情监测等。
数据分析层
数据分析层直接跟用户应用程序对接,为其提供易用的数据处理工具。为了让用户分析数据更加容易,计算引擎会提供多样化的工具,包括应用程序API、类SQL查询语言、数据挖掘SDK等。
在解决实际问题时,数据科学家往往需根据应用的特点,从数据分析层选择合适的工具,大部分情况下,可能会结合使用多种工具,典型的使用模式是:首先使用批处理框架对原始海量数据进行分析,产生较小规模的数据集,在此基础上,再使用交互式处理工具对该数据集进行快速查询,获取最终结果。
数据可视化层
数据可视化层是直接面向用户展示结果的一层,由于该层直接对接用户,是展示大数据价值的“门户”,因此数据可视化是极具意义的。考虑到大数据具有容量大、结构复杂和维度多等特点,对大数据进行可视化是极具挑战性的。