【大数据架构(1)】Lambda Architecture – Realtime Data Processing 论文重点翻译

文章目录

  • 1. INTRODUCTION
  • 2. LAMBDA ARCHITECTURE
    • A) BATCH LAYER
    • B) SPEED LAYER
    • C) SERVICE LAYER
  • 3. LIMITATIONS OF THE TRADITIONAL LAMBDAARCHITECTURE
  • 4. A PROPOSED SOLUTION
    • 1. 架构说明
    • 2. 前后架构改进对比

1. INTRODUCTION

Lambda架构背后的需求是由于虽然MR能够处理大数据量,且准确性很高,但是高延迟不适用于实时计算。一个好的解决方案是通过kafka+spark组合为流模型,虽然能够提供高可用、低延迟但是准确性会有问题。
 

lambda架构说明
lambda架构的目标是统一批处理和流处理,并满足可拓展、高可用(对于硬件和人工的错误)需求。

The LA architecture aims to meet the needs of a robust system that is scalable and fault-tolerant against hardware failures and human mistakes

 

2. LAMBDA ARCHITECTURE

在这里插入图片描述

 

A) BATCH LAYER

不可变数据集的特点

  • LA的难点在于主数据集。主数据集不断地以追加方式接收新数据。这种方式非常适合维护数据的不可变性。Marz强调不可变数据集的重要性,因为具备容错性,可以重复计算。
  • 批处理层更喜欢重新计算算法而不是增量(状态计算ing)算法。
  • 增量算法的问题在于无法解决人为错误所带来的挑战。批处理层的重新计算特性创建了简单的批处理视图,因为在预计算期间解决了复杂性问题。

 

支持数据模型简化

其次,因为不需要对数据建立索引,所以不可变数据模型支持简化。批处理层中的主数据集不断增长,并且是体系结构中的详细数据源。主数据集允许对历史数据进行随机读取

 

批处理对于机器学习的作用

此外批处理用于处理历史数据并提供准确的结果,机器学习算法需要时间来训练模型,并随着时间的推移提供更好的结果。

 
批处理的主要问题是高延迟性,所以需要速度层。

 

B) SPEED LAYER

速度层实时处理消息,虽然实时处理没有考虑到数据的完整性,但是弥补了批处理层的高延迟。

为了创建最新数据的实时视图(视图生产到服务层),速度层牺牲了吞吐量,来降低延迟。当数据接收后实时视图便生成,但不如批处理层的完整或精确。这种设计背后的想法是,一旦批处理层的准确结果到达,它们就会覆盖实时视图
 

不同层次的角色分离是 Lambda 架构之美的体现。

  1. 批处理层通过对整个主数据集进行运行参与了资源密集型操作。
  2. 速度层采用不同的方法来满足低延迟的要求。与批处理层的重新计算方法相比,速度层采用增量计算。增量计算更加复杂,但速度层处理的数据规模要小得多,而且视图是短暂的。采用随机读/随机写方法重用和更新以前的视图。

 

增量计算策略

基本逻辑:批处理先加载所有的数据生成批视图。实时处理当加载新数据时就会创建视图,当再有新的数据时,通过使用之前的视图+新数据来更新实时视图。
在这里插入图片描述

 

C) SERVICE LAYER

服务层负责存储批处理层和速度层的输出。
 

流批结果配合使用

根据架构图,每当查询 Lambda 架构时,服务层会合并批处理和实时视图,并输出结果。合并的视图可以显示在仪表板上或用于创建报告。因此,Lambda 架构将数据密集但准确的批处理层的结果与快速响应的速度层根据所需的用例进行组合。
 
这里的视图就是:流批任务生成的物化视图。

 

3. LIMITATIONS OF THE TRADITIONAL LAMBDAARCHITECTURE

一开始LA的批数据层由hadoop、MapReduce组成,速度层由storm组成,服务层由ElephantDB 和 Cassandra构成。

LA的问题:

  • 开发和维护复杂
    Lambda架构中对同样的业务逻辑进行两次编程:一次为批量计算的ETL系统,一次为流式计算的Streaming系统。针对同一个业务问题产生了两个代码库,维护起来麻烦。
  • 创建一个统一解决方案需要处理流批结果合并需求、debug问题以及操作的复杂性
  • 输入数据需要同时进入到批和速度层
  • 并不是那么通用:现实中许多企业要么都使用批处理系统,要么使用流处理系统去处理他们的问题

 

4. A PROPOSED SOLUTION

1. 架构说明

就上面描述的,LA可能会导致编码的复杂性,debug、维护的问题。可以通过组合不同的组件来实现LA,这里通过使用kafka、spark(计算引擎)、Cassandra(视图)、Zeppelin(存储层)来优化LA架构。

之前的架构中,有两套处理系统用于处理批和流数据,批模式中用HDFS+MR处理、流中使用Storm处理,此架构中使用spark作为流批一体的计算引擎。如下图:

在这里插入图片描述

 

2. 前后架构改进对比

在这里插入图片描述
 

spark VS MR
在这里插入图片描述

改进的架构中

  • kafka减少了复制数据的开销。LA中的批和速度层可以消费kafka中的数据,这减少了复制的复杂性以及简化了架构。
  • spark的流批Rich API非常适合LA架构,RDD的代码可以被重用,并且API简化了维护和debug。此外对于批处理,spark基于内存处理提高了处理速度。
  • kafka的commit log对于事件流非常有效。commit log是不可变的,所以存储为追加数据。用户的历史事件可以被用于处理。
  • kafka的log可以被重放,新的视图可以通过Cassandra物化。

 

参考:
https://download.csdn.net/download/hiliang521/88881089

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

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

相关文章

SpringBoot+PDF.js实现按需分片加载预览(包含可运行示例源码)

SpringBootPDF.js实现按需分片加载预览 前言分片加载的效果前端项目前端项目结构前端核心代码前端项目运行 后端项目后端项目结构后端核心代码后端项目运行 项目运行效果首次访问分片加载 项目源码 前言 本文的解决方案旨在解决大体积PDF在线浏览加载缓慢、影响用户体验的难题…

C 程序结构

在我们学习 C 语言的基本构建块之前,让我们先来看看一个最小的 C 程序结构,在接下来的章节中可以以此作为参考。 C Hello World 实例 C 程序主要包括以下部分: 预处理器指令函数变量语句 & 表达式注释 让我们看一段简单的代码&#x…

Fabric V2.5 通用溯源系统——区块链部分设计

本节对Fabric V2.5 通用溯源系统的区块链部分做一个简单的介绍,包括目录结构、文件作用、设计思路。此节内容免费发布在TrueTechLabs Fabric学习交流QQ群。 购买专栏前请认真阅读:《Fabric项目学习笔记》专栏介绍 TrueTechLabs Fabric学习交流QQ群: 一、区块链部分文件目录简…

基于Python校园鲜花水果商城系统(Django框架)开题答辩常规问题和如何回答(答辩指导)

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

React最常用的几个hook

React最常用的几个Hook包括:useState、useEffect、useRef以及useContext。 useState: 用于在函数组件中添加状态管理。它返回一个数组,第一个元素是当前状态的值,第二个元素是更新状态的函数。在使用时,可以通过解构赋…

代码库管理工具Git介绍

阅读本文同时请参阅-----免费的Git图形界面工具sourceTree介绍 Git是一个分布式版本控制系统,它可以帮助开发者跟踪和管理代码历史。Git的命令行工具是使用Git的核心方式,虽然它可能看起来有些复杂,但是一旦掌握了基本命令,你…

【C++私房菜】序列式容器的迭代器失效问题

目录 一、list的迭代器失效 二、vector的迭代器失效 1、空间缩小操作 2、空间扩大操作 三、总结 在C中,当对容器进行插入或删除操作时,可能会导致迭代器失效的问题。所谓迭代器失效指的是,原先指向容器中某个元素的迭代器,在…

【每日前端面经】2023-02-28

题目来源: 牛客 使用TS的目的 提供很好的智能提示方便进行代码重构明确定义参数类型和函数重载 Type和Interface的区别 type主要用于创建联合类型、交叉类型、以及定义复杂的类型别名interface主要用于定义对象和类的结构 Any和泛型 虽然用any类型能够接收任何类型的参数…

Retrofit核心原理

Retrofit是一个类型安全的HTTP客户端库,广泛用于Android和Java应用中,用于简化网络请求和响应的处理。本文将深入探讨Retrofit的核心原理,帮助开发者理解其背后的工作机制。 Retrofit简介 Retrofit是Square公司开发的一个开源库&#xff0c…

MWC 2024丨美格智能推出5G RedCap系列FWA解决方案,开启5G轻量化新天地

2月27日,在MWC 2024世界移动通信大会上,美格智能正式推出5G RedCap系列FWA解决方案。此系列解决方案具有低功耗、低成本等优势,可以显著降低5G应用复杂度,快速实现5G网络接入,提升FWA部署的经济效益。 RedCap技术带来了…

YOLO V5、SAM、RESNET50模型在GPU环境下搭建过程

好的,我将提供更详细的步骤来搭建YOLOv5、SAM和ResNet50模型在GPU环境下的过程。 **1. 环境设置:** 确保你的环境满足以下要求: - CUDA和CuDNN已正确安装,并与你的GPU兼容。 镜像下载cudnntensorflow_cudnn镜像下载-CSDN博客 …

pclpy Ransac平面分割算法输出的索引从点云中提取点云的子集

pclpy Ransac平面分割算法输出的索引从点云中提取点云的子集 一、算法原理二、代码三、结果1.sor统计滤波2.Ransac内点分割平面3.Ransac外点分割平面 四、相关数据 一、算法原理 1、Ransac介绍 RANSAC(RAndom SAmple Consensus,随机采样一致)算法是从一组含有“外点”(outlier…

Flink CDC 提取记录变更时间作为事件时间和 Hudi 表的 precombine.field 以及1970-01-01 取值问题

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

如何使用ArcGIS Pro为栅格图添加坐标信息

在某些时候,我们从网上获取的资源是一张普通的栅格图,没有任何的坐标信息,如果想要和带坐标信息的数据一起使用就需要先添加坐标信息,在GIS上,我们把这个过程叫做地理配准,这里为大家介绍一下地理配准的方法…

golang的反射探索

1、golang中反射常用的场景 1》类型检查—通用类包或者函数的时候,在运行时可以动态的获取任意对象的类型信息 2》动态调用方法—运行时动态的选择使用哪个方法 3》结构体标签处理—结构体字段一般是通过tag来注解。运行时可以通过反射读取tag。常用于解析配置文件&…

雾锁王国Enshrouded服务器CPU内存配置怎么选择?

雾锁王国/Enshrouded服务器CPU内存配置如何选择?阿里云服务器网aliyunfuwuqi.com建议选择8核32G配置,支持4人玩家畅玩,自带10M公网带宽,1个月90元,3个月271元,幻兽帕鲁服务器申请页面 https://t.aliyun.com…

使用 Go 语言读取文件内容并进行反序列化

在现代软件开发过程中,经常需要读取配置文件或数据文件,并将这些文件的内容转换成程序可以理解和操作的数据结构。对于使用Go语言的开发者来说,标准库中提供的一系列工具和包能够帮助完成从文件读取到数据反序列化的整个流程,特别…

通过shell编写内存监视的脚本来介绍一些基本shell脚本操作

目录 知识概览 总体脚本编写 date awk grep bc 知识概览 总体脚本编写 #!/bin/bash#定义日志的文件名和日期 cdate$(date %Y%m%d%H%M%S) logfile"/tmp/memlog_{$0}.log"#拿到ip ip_addr$(ip add|grep "ens33$"|awk {print $2})#总内存和使用的内存 m…

成为大佬之路--linux软件安装使用第000000018篇--linux安装nacos

官网 Nacos官网 | Nacos 官方社区 | Nacos 下载 | Nacos 安装包 Releases alibaba/nacos GitHub 安装 1.创建目录 mkdir -p /opt/nacos cd /opt/nacos 2.下载安装包 wget https://github.com/alibaba/nacos/releases/download/1.4.7/nacos-server-1.4.7.tar.gz 3.解压…

如何使用Fastapi上传文件?先从请求体数据讲起

文章目录 1、请求体数据2、form表单数据3、小文件上传1.单文件上传2.多文件上传 4、大文件上传1.单文件上传2.多文件上传 1、请求体数据 前面我们讲到,get请求中,我们将请求数据放在url中,其实是非常不安全的,我们更愿意将请求数…