系统架构设计师 大数据架构篇一

ops/2024/9/23 16:35:44/

🌐大数据架构

大数据处理系统分析 🔍

大数据处理系统三大挑战 🚀

  • 非结构化数据处理:如何处理非结构化和半结构化数据。
  • 复杂性与不确定性大数据复杂性、不确定性特征描述的刻画方法和大数据的系统建模。
  • 异构性影响:数据异构性与决策异构性的关系对大数据知识发现与管理决策的影响。

大数据处理架构>系统架构八大特征 🏗️

  • 鲁棒性和容错性 🛡️:系统能够在组件失败时继续运行。
  • 低延迟读取和更新能力 ⏱️:快速响应数据读取和更新请求。
  • 横向扩容 🌟:系统能够通过增加节点来扩展处理能力。
  • 通用性 🌍:适用于多种类型的数据处理任务。
  • 延展性 📈:系统设计允许功能和性能的扩展。
  • 即席查询能力 🔎:支持用户即时发起的查询请求。
  • 最少维护能力 🔧:系统设计注重减少维护工作量。
  • 可调试性 🐛:系统提供有效的错误定位和调试手段。

Lambda 架构 🌈

Lambda 架构介绍 📖

Lambda 架构提供了一个能够满足大数据系统关键特性的架构,包括高容错、低延迟、可扩展等。它整合离线计算与实时计算,融合不可变性、读写分离和复杂性隔离等原则,可集成 Hadoop、Kafka、Spark、Storm 等各类大数据组件。

Lambda 架构的三层 📚

  • 处理层 (Batch Layer) 📊:负责批处理离线数据。
  • 加速层 (Speed Layer) ⚡:负责处理实时数据流,提供快速查询。
  • 服务层 (Serving Layer) 📡:整合批处理层和加速层的结果,提供统一的数据查询和服务接口。

设计Batch Layer 和 Speed Layer 的依据 🛠️

  • 容错性 🔄:Speed Layer 中处理的数据也不断写入Batch Layer,实现错误修正。
  • 复杂性隔离 🏭:通过分开Batch Layer 和 Speed Layer,隔离复杂性,提高系统的鲁棒性和可靠性。
批处理层(Batch Layer) 🏛️
  • 基础层,处理离线数据。
  • 数据集3大属性
    • 原始数据
    • 数据不可变
    • 永远是真实数据。
  • 特点
    • Monoid 特性 🔗:支持分布+合并操作。
    • 高可靠性 💾:使用容错性较强的分布式文件系统。
    • 长时间窗口 🕒:不要求实时性,可使用较长时间窗口。
    • 复杂计算 🧮:可进行复杂的数据计算和分析任务。
伪代码示例 (Batch Layer)
function processBatchData():rawData = readDataFromSource("HDFS")processedData = transform(rawData)storeData(processedData, "HDFS")function storeData(data, storageSystem):// 存储数据到分布式文件系统storageSystem.save(data)
加速层(Speed Layer) 🚀
  • 实时处理层,负责处理实时数据流。
  • 特点
    • 实时性 ⏲️:快速响应查询请求。
    • 部分数据集 📈:处理部分数据,生成增量更新。
    • 简单计算 📊:执行较简单的计算任务。
伪代码示例 (Speed Layer)
function processRealTimeData(stream):for data in stream:updatedData = processData(data)serveData(updatedData)function serveData(data):// 将数据提供给服务层servingLayer.update(data)
服务层(Serving Layer) 📱
  • 最上层,提供数据查询和服务接口。
  • 特点
    • 统一查询接口 🔗:整合批处理层和加速层的结果。
    • 数据合并 📑:保证查询结果的完整性和一致性。
    • 数据展示和分发 📊:展示查询结果,提供数据分发接口。
伪代码示例 (Serving Layer)
function queryData(query):batchData = batchLayer.getData()speedData = speedLayer.getData()result = mergeData(batchData, speedData)return resultfunction mergeData(batchData, speedData):// 合并批处理数据和实时数据combinedData = combine(batchData, speedData)return combinedData

Lambda 架构的实现 🛠️

  • Hadoop(HDFS) 📚:作为主数据存储层。
  • Spark或Storm 🌩️:构成速度层,提供快速的数据处理能力。
  • HBase或Cassandra 📊:作为服务层,提供实时的数据访问和更新。
  • Hive 🐝:用于创建可查询的视图。

Lambda 架构优缺点 📌

优点 🎯
  • 容错性好 🛡️。
  • 查询灵活度高 🎉。
  • 易伸缩 📈。
  • 易扩展 🌟。
缺点 🚫
  • 全场景覆盖带来的编码开销 💼。
  • 针对具体场景重新离线训练一遍益处不大 🔄。
  • 重新部署和迁移成本很高 💸。

总结 🧐

大数据架构设计需要考虑的关键点包括处理非结构化数据、应对复杂性和不确定性以及管理数据和决策的异构性。Lambda架构通过其三层设计——批处理层、加速层和服务层——提供了一个强大且灵活的框架,以支持大数据的存储、处理和查询需求。这种架构强调了容错性、低延迟、可扩展性和通用性等关键特征。

记忆口诀 🎓

  • 三大挑战:非结构化、复杂异构。
  • 八大特征:鲁棒低延迟,横向可扩展,通用又可延展,即席查询少维护,可调试。
  • Lambda三层:批处理层稳如山,加速层快如风,服务层一统江湖。

趣味记忆互联网案例故事 🌐

大数据架构的角色扮演

  • 批处理层:想象它是图书馆的档案室,保存着所有历史书籍和记录,随时可供深入研究和长期保存。
  • 加速层:就像新闻编辑室,处理即时新闻和快讯,迅速响应当前事件。
  • 服务层:类似于图书馆的前台服务台,为用户提供一个统一的接口来检索和获取信息,无论是来自档案室还是编辑室。

Lambda架构的日常故事

  • 容错性:就像将一份重要文件同时保存在云盘和U盘中,即使一个丢失了,另一个仍然可以恢复数据。
  • 复杂性隔离:类似于将工作和休闲活动分开,每个区域专注于其任务,减少干扰,提高效率。
  • Monoid特性:可以想象成乐高积木,每一块都可以独立使用,也可以与其他积木组合,创造出复杂的结构。

参与点评
读者朋友们,如果您在阅读过程中,对文章的质量、易理解性有任何建议,欢迎在评论区指出,我会认真改进。


http://www.ppmy.cn/ops/114860.html

相关文章

Java中的事件(动作监听-ActionListener)

(一)、ActionListener接口 ActionListener接口用于处理用户界面上的动作事件,例如:按钮点击、菜单选择等。实现ActionListener接口需要重写actionPerformed(ActionEvent e)方法,该方法会在动作发生时被调用。 &#…

数据库基础知识---------------------------(3)

MYSQL的索引 用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行。按实现方式分为Hash索引和BTree索引 单列索引 普通索引 允许在定义索引的列中插入重复值和空值唯一索引 索引列的值必…

如何选购笔记本电脑?要看哪些参数?

如何选购笔记本电脑?要看哪些参数? 文章目录 如何选购笔记本电脑?要看哪些参数?1、CPU(中央处理器)2、GPU(显卡)3、RAM(内存)4、硬盘5、屏幕6、散热7、接口8、…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.AVL树

1.AVL 树 1.1AVL 树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查 找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962…

前端常用的主流框架有哪些

前端开发中,有几个主流框架非常受欢迎,它们为开发者提供了丰富的功能和高效的开发体验。以下是一些当前最常用的前端主流框架: React: React 是由 Facebook 开发的一个用于构建用户界面的 JavaScript 库。它鼓励使用组件化的开发模…

WinCC flexible配方与PLC的同步

1配方术语的含义 配方变量:配方画面上通过输入/输出域显示配方成分的数值; 图1. 配方条目数值:配方视图中用于显示配方成分的数值,即配方每条数据记录的数值; 图2. 激活同步变量”Synchronize tags”: 需…

【C++】哈希桶

前言 哈希桶是哈希表中用于存储数据的基本单元,也称为哈希槽或存储桶。 哈希桶(Hash Bucket)** 是哈希表数据结构中的一个概念。、哈希表通过哈希函数将输入数据映射到一个存储位置,而哈希桶就是这些存储位置中的一个单元。哈希桶…

MyBatis XML映射文件编写【后端 18】

MyBatis XML映射文件编写 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs …