软考 系统架构设计师系列知识点之大数据设计理论与实践(8)

接前一篇文章:软考 系统架构设计师系列知识点之大数据设计理论与实践(7)

所属章节:

第19章. 大数据架构设计理论与实践

          第3节 Lambda架构

19.3.3 Lambda架构介绍

1. 批处理层

2. 加速层

对加速层批处理视图建立索引,便于能快速进行即席查询(Ad Hoc Queries)。它存储实时视图并处理传入的数据流,以便更新这些视图。

加速层(Batch Layer)可以很好地处理离线数据,但有很多场景数据不断实时生成,并且需要实时查询处理。Speed Layer正是用来处理增量的实时数据。

Speed Layer和Batch Layer比较类似。如图19-7所示:

加速层(Speed Layer)对数据进行计算并生成Realtime View,其主要区别在于:

(1)Speed Layer处理的数据是最近的增量数据流Batch Layer处理的是全体数据集

(2)Speed Layer为了效率,接收到新数据时不断更新Realtime View,而Batch Layer根据全体离线数据集直接得到Batch View

Lambda架构将数据处理分解为Batch Layer和Speed Layer有如下优点:

  • 容错性

Speed Layer中处理的数据也不断写入Batch Layer,当Batch Layer中重新计算的数据集包含Speed Layer处理的数据集后,当前的Real-time View就可以丢弃,这也就意味着Speed Layer处理中引入的错误,在Batch Layer重新计算时都可以得到修正。这一点也可以看成是CAP理论中的最终一致性(Eventual Consistency)的体现。

  • 复杂性隔离

Batch Layer处理的是离线数据,可以很好地掌控。Speed Layer采用增量算法处理实时数据,复杂性比Batch Layer要高很多。通过分开Batch Layer和Speed Layer,把复杂性隔离到Speed Layer,可以很好地提高整个系统的鲁棒性和可靠性。

  • 横向扩容(Scalable)

当数据量/负载增大时,可扩展的系统通过增加更多的机器资源来维持性能。也就是常说的系统需要线性可扩展,通常采用scale out(通过增加机器的个数)而不是scale up(增加机器的性能)。

3. 服务层

Lambda架构的Serving Layer用于响应用户的查询请求,合并Batch View和Real-time View中的结果数据集到最终的数据集。该层提供了主数据集上执行的计算结果的低延迟访问。读取速度可以通过数据附加的索引来加速。与加速层类似,该层必须满足以下要求,例如随机读取、批量写入、可伸缩性和容错能力。

这涉及数据如何合并的问题。前面讨论了查询函数的Monoid性质,如果查询函数满足Monoid性质,即满足结合律,只需要简单地合并Batch View和Real-time View中的结果数据集即可;否则,可以把查询函数转换成多个满足Monoid性质的查询函数的运算,单独对每个满足Monoid性质的查询函数进行Batch View和Real-time View中的结果数据集合并,然后再计算得到最终的结果数据集。另外,也可以根据业务自身的特性,运用业务自身的规则来对Batch View和Real-time View中的结果数据集合并。如图19-8所示:

至此,“19.3.3 Lambda架构介绍”的全部内容就讲解完了。更多内容请看下回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/626031.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【shell】利用k9s和config文件进入k8s集群脚本

1、需要自行安装k9s 2、config文件放在home的.kube隐藏文件夹下 #!/bin/bash# define log & color readonly FG_GREY"30" #灰色 readonly FG_RED"31" readonly FG_GREEN"32" readonly FG_YELLOW"33" readonly FG_BLU…

【数组】【自定义排序】Leetcode 56. 合并区间

【数组】【自定义排序】Leetcode 56. 合并区间 解法1 ---------------🎈🎈56. 合并区间 题目链接🎈🎈------------------- 解法1 进行二维数组按照第一维度升序排序:Arrays.sort( nums, (o1,o2) -> o1[0]-o2[0] ) …

使用YOLOv8训练自己的目标检测数据集(VOC格式/COCO格式)

yolov8训练自己的数据集 1. 下载项目2. 搭建环境3. 数据集格式转换3.1 VOC格式转YOLO格式3.2 COCO格式转YOLO格式 4. 训练数据5. 推理预测6. 模型导出 1. 下载项目 git clone https://github.com/ultralytics/ultralytics.git2. 搭建环境 conda create --name ultralytics py…

Spring核心容器总结

2.2 核心容器总结 2.2.1 容器相关 BeanFactory是IoC容器的顶层接口,初始化BeanFactory对象时,加载的bean延迟加载 ApplicationContext接口是Spring容器的核心接口,初始化时bean立即加载 ApplicationContext接口提供基础的bean操作相关方法…

SQL系统函数知识点梳理(Oracle)

这里写目录标题 函数系统函数转换函数to_date()to_char()将数值转换成字符格式 添加货币符号将日期转换成字符 其他不常用的转换函数 字符型函数连接函数大小写转换函数大写转换小写转换首字母大写,其余的小写 替换函数去除空格函数截取函数填充函数获取字符长度函数…

什么是Rust语言?探索安全系统编程的未来

🚀 什么是Rust语言?探索安全系统编程的未来 文章目录 🚀 什么是Rust语言?探索安全系统编程的未来摘要引言正文📘 Rust语言简介🌟 发展历程🎯 Rust的技术意义和优势📦 Rust解决的问题…

Proxmox VE 创建用户

前言 实现创建用户组、创建用户、分配用户角色权限 创建一键创建用户组脚本 用户密码testpve/1234.com用户组testgroupPVEVMUser 角色权限,此角色是默认系统的,查看、备份、配置 CD-ROM、VM 控制台、VM 电源管理pveum role list 查看特权列表pveum us…

Java NIO,高效操作I/O流的必备技能

Java IO在工作中其实不常用到,更别提NIO了。但NIO却是高效操作I/O流的必备技能,如顶级开源项目Kafka、Netty、RocketMQ等都采用了NIO技术,NIO也是大多数面试官必考的体系知识。虽然骨头有点难啃,但还是要慢慢消耗知识、学以致用哈…

OpenHarmony开发实例:【鸿蒙.bin文件烧录】

使用HiBurn烧录鸿蒙.bin文件到Hi3861开发板 鸿蒙官方文档的“Hi3861开发板第一个示例程序”中描述了——如何使用DevEco Device Tool工具烧录二进制文件到Hi3861开发板; 本文将介绍如何使用HiBurn工具烧录鸿蒙的.bin文件到Hi3861开发板。 获取HiBurn工具 通过鸿蒙…

机器人码垛机的技术特点与应用

随着科技的飞速发展,机器人技术正逐渐渗透到各个行业领域,其中,机器人码垛机在物流行业的应用尤为引人瞩目。它不仅提高了物流效率,降低了成本,更在改变传统物流模式的同时,为行业发展带来了重大的变革。 一…

(十一)C++自制植物大战僵尸游戏客户端更新实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/cFP3z 更新检查 游戏启动后会下载服务器中的版本号然后与本地版本号进行对比,如果本地版本号小于服务器版本号就会弹出更新提示。让用户选择是否更新客户端。 在弹出的更新对话框中有显示最新版本更新的内容…

Axure实现导航栏的展开与收缩

Axure实现导航栏的展开与收缩 一、概要介绍二、设计思路三、Axure制作导航栏四、技术细节五、小结 一、概要介绍 使用场景一般是B端后台系统需要以导航栏的展开与收缩实现原型的动态交互,主要使用区域是左边或者顶部的导航栏展开与收缩,同一级导航下的小…