大数据技术生态
本文主要抄录《大数据测试技术与实践》
由下而上可以划分为:
- 数据采集
- 关系与非关系数据采集组件,分布式消息队列等,如kafka、sqoop
- 数据存储
- 分布式存储系统、关系和非关系数据库等,如HDFS、MySQL
- 管理调度
- 资源管理和调度YARN,容器Kubernetes、服务协调zookeeper、工作流调度平台(如Azkaban)等
- 计算机分析
- 批处理(MapReduce)、流计算(Flink)、查询分析(Impala)和图计算(Gelly)等
- 组件应用
- 各种数据分析和机器学习工具,如Hive、Pig、TensorFlow
大数据采集计算
- 系统日志采集,如kafka、Flume
- 网络数据采集,如爬虫
- 其他数据采集
大数据存储计算
分布式文件系统 HDFS
-
主要解决大数据存储问题
-
GFS(Google File System)的开源实现
-
Hadoop两大核心组成部分之一,另外一个是MapReduce
-
遵循主从(master/salve)框架
-
可以由单台服务器扩展到数千台服务器
-
NameNode关联和维护HDFS文件系统的读写操作
-
多个DataNode1负责存储数据
HDFS优点
- 具有高度容错能力,能实时监测错误并且自动恢复。
- 类似于服务器的容灾能力,当某台服务器挂了,就启用备用服务器,进行数据同步
- 数据存储为Streaming流式数据存储 。批处理数据,而不是实时处理,提高了大量处理数据的能力,但是会牺牲响应时间
- 大数据集。提供了cluster集群架构,集群可扩展为数百个节点
- 数据简单一致性。一次性写入多次读取,一个文件创建后就不可再修改,这样可以简化数据一致性
- 跨硬件和跨软件。平台的可移植性
海量数据列式存储:Hbase
-
HDFS容错率很高,即便是在系统崩溃的情况下,也能够在节点之间快速传输数据。HBase是非关系数据库,是开源的Not-Only-SQL数据库,它的运行建立在Hadoop上。HBase依赖于CAP定理(Consistency, Availability, and Partition Tolerance)中的CP项
-
HDFS最适于执行批次分析。然而,它最大的缺点是无法执行实时分析,而实时分析是信息科技行业的标配。HBase能够处理大规模数据,它不适于批次分析,但它可以向Hadoop实时地调用数据。
-
HDFS和HBase都可以处理结构、半结构和非结构数据。因为HDFS建立在旧的MapReduce框架上,所以它缺乏内存引擎,数据分析速度较慢。相反,HBase使用了内存引擎,大大提高了数据的读写速度。
-
HDFS执行的数据分析过程是透明的。HBase与之相反,因为其结构基于NoSQL,它通过在不同的关键字下进行排序而获取数据。
大数据分析技术
- 批处理计算。针对大规模数据的批量处理,主要代表产品有MapReduce、Spark
- 流计算。针对流数据的实时计算,主要代表产品有,Spark Streaming、Flink 、Storm等
- 查询分析计算。针对大规模数据的存储管理和查询分析,主要代表产品有Hive、Impala等
- 图计算。针对大规模图结构数据的处理,主要代表产品有Pregel、Gelly等
批处理计算-MapReduce
-
进行大量数据处理时,用MapReduce进行分布式计算,这样可大量减少计算时间,还有Spark、Pig等就是类似的代表产品或技术
-
Map将任务分割成更小任务,由每台服务器分别执行
-
Reduce将所有服务器返回的结果汇总,整理成最终结果
流计算
-
流式处理假设数据的潜在价值是数据的新鲜度、实时性,需要尽快处理得到结果。在这种方式下,数据以流的方式到达。在数据连续到达的过程中,由于流携带了大量数据,只有小部分的流数据被保存在有限的内存中。流处理方式用于在线应用,通常工作在秒或毫秒级别。
-
目前主流的流处理组件包括:Strom、Spark Streaming、KafKa、Flume、Flink、S3等
- Spark 和 Strom、Flink对比,无法在对实施要求很高的流处理场景中
OLAP引擎
- 即联机分析处理。OLAP对业务数据执行多维分析,并提供复杂计算,趋势分析和复杂数据建模的能力。它主要用于支持企业决策管理分析,是许多商务智能(BI)应用程序背后的技术。
- 目前开源的引擎很多,如Hive、Impala、Persto等
Hive
其他参考
大数据管理调度技术
分布式集群资源调度框架-YARN
- 针对Hadoop1.0中MR的不足,引入了Yarn框架。Yarn框架中将JobTracker资源分配和作业控制分开,分为Resource Manager(RM)以及Application Master(AM)。
- Hadoop的MapReduce架构称为YARN(另一种资源协助者),是效率更高的资源管理器核心
- Client客户端,用户向Resource Manage请求执行运算
- 在NameNode会有Resource Manage统筹管理运算请求
- 在其他的DateNode会有 Node Manager负责运行,监督每个任务运行情况,并向Resource Manage 汇报状态
容器管理系统:Kubernetes
- 常见的大数据技术组件一般有对应的开源项目支持部署,如Flink,Spark也有官方支持Spark on Kubernetes运行模式等
ZooKeeper
-
是大数据的动物管理员,是一个开源的分布式的,是Hadoop的一个子项目
-
Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave管理模式
-
Zookeeper=文件系统+通知机制
常用的工作流调度平台
- 对于简单的任务调度,可以使用Linux Crontab,但是对于在多台机器上、任务之前有依赖关系时,Linux Crontab就不能满足需求,因此需要分布式任务调度系统来进行任务编排
- 业界常用开源调度平台有:Azkaban、Oozie、Airflow等
大数据商业产品
- 大数据解决方案提供商
- 大数据云计算服务商
- 大数据SaaS服务商
- 大数据开发平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理