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