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

devtools/2025/1/20 2:44:57/

🌐大数据架构

大数据处理系统分析 🔍

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

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

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

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

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/devtools/115294.html

相关文章

C语言中的信号量、进程同步与互斥、线程同步与互斥详解

文章目录 信号量的基本概念信号量的基本操作信号量的使用场景C语言中使用信号量一,信号量相关的函数示例代码解释: 二、进程同步与互斥1. 进程同步的方式:信号量示例代码:使用信号量进行进程同步解释:2. 进程互斥的方式…

PL/SQL程序设计入门

PL/SQL程序设计 PL/SQL起步鼻祖:hello World语法分析声明部分举例 应用举例 PL/SQL 起步鼻祖:hello World 先举个例子,用PL/SQL打印输出hello world declarev_string varchar2(20); beginv_string:hello world;dbms_output.put_line(v_str…

Oracle发送邮件功能:配置自动化发信指南?

Oracle发送邮件服务设置方法?怎么用Oracle数据库发信? Oracle数据库作为企业级应用的核心,其内置的发送邮件功能为企业提供了强大的自动化工具。AokSend将详细介绍如何配置Oracle发送邮件功能,以实现自动化发信,从而提…

Vue使用axios二次封装、解决跨域问题

1、什么是 axios 在实际开发过程中,浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。从 Vue.js 2.0 版本之后,官方推荐使用 axios 来实现 Ajax 请求。axios 是一个基于 promise 的 HTTP 客户端。 关于 promise 的详细介…

TCP 和 UDP 协议的区别?

参考TCP 和 UDP的区别_tcp和udp的区别-CSDN博客

C语言习题~day35

1. int f(int x){ return ((x>2) ? x*f(x-1) : 3); } int i; if(f(2)) 执行如上函数后. i的值为() A.30 B.无限递归 C.9 D.2160 先计算内层的f(2),因为 2 不大于 2,所以返回 3,即f(2)3。 然后计算f(f(2))…

使用 Python 绘制 BTC 期权的波动率曲面

波动率曲面(Volatility Surface)是期权交易中展示隐含波动率随行权价(strike price)和到期时间(expiry time)变化的一种三维图形。 本文尝试通过 Python,通过 ccxt 基于从交易所获取期权的指标…

函数组件、Hooks和类组件区别

1. 函数组件(Function Components) 函数组件是接收props并返回React元素的纯JavaScript函数。它们不能拥有自己的状态(state)或生命周期方法,但在React 16.8中引入Hooks之后,这种情况发生了变化。 特点&a…