• 原文地址:

    Big Data: Lambda Architecture in a nutshell

  • 原文作者:

    Trung Anh Dang

  • 译文出自:

    掘金翻译计划

  • 本文永久链接:

    github.com/xitu/gold-m…

  • 译者:

    jackwener

  • 校对者:

    zenblo、bljessica

  • 转自:https://juejin.cn/post/6887845604886741006

我们如何对抗 CAP 理论?

计算机科学中有一个 CAP 定理,分布式数据存储不可能同时提供以下三个保证中的两个以上。

  • 一致性

    每个节点读取的是最新结果或者是报错。

  • 可用性

    每个请求都会收到一个(非错误)响应,但不保证它包含最新的写入。

  • 分区容错

    尽管节点之间的网络丢弃(或延迟了)任意数量的消息,系统仍继续运行。

简史

2011年,内森·马兹(Nathan Marz)在他的博客中提出了一种解决 CAP 定理局限性的重要方法,即 Lambda 架构。

工作原理

让我们仔细看看 Lambda 架构。Lambda 架构分为三层: 批处理层(batch layer),加速层(speed layer),和服务层(serving layer)。

它结合了对同一数据的实时(real-time)和批量(batches)处理。

首先,传入的实时数据流在批处理层(batch layer)存储在主数据集中,并在加速层(speed layer)存储在内存缓存中。然后对批处理层中的数据建索引,且通过批处理视图使之可用。加速层(speed layer)中的实时数据通过实时视图(real-time views)暴露出来。最后,批处理视图和实时视图都可以独立查询,也可以一起查询,以回答任何历史的或实时的问题。

批处理层(Batch layer)

该层负责管理主数据集。主数据集中的数据必须具有以下三个属性。

  • 数据是原始的

  • 数据是不可变的

  • 数据永远是真实的

主数据集是正确性的保证(source of truth)。即使丢失所有服务层数据集和加速层数据集,也可以从主数据集中重建应用程序。

批处理层还将主数据集预计算到批处理视图(batch views)中,以便能进行低延迟查询。

由于我们的主数据集在不断增长,因此我们必须制定一种策略,以便在有新数据可用时管理批处理视图(batch views)。

  • 重新计算法

    抛弃旧的批处理视图,重新计算整个主数据集的函数。

  • 增量算法

    当新数据到达时,直接更新视图。

加速层(Speed layer)

加速层批处理视图建立索引便于能快速的即席查询(Ad hoc queries),它存储实时视图并处理传入的数据流,以便更新这些视图。基础存储层必须满足以下场景。

  • 随机读

    支持快速随机读取以快速响应查询。

  • 随机写

    为了支持增量算法,必须尽可能的以低延迟修改实时视图。

  • 可伸缩性

    实时视图应随它们存储的数据量和应用程序所需的读/写速率进行缩放。

  • 容错性

    当机器故障,实时视图应还能继续正常运行。

服务层(Serving layer)

该层提供了主数据集上执行的计算结果的低延迟访问。读取速度可以通过数据附加的索引来加速。与加速层类似,该层也必须满足以下要求,例如随机读取,批量写入,可伸缩性和容错能力。

Lambda 架构几乎可以满足所有属性

Lambda 体系结构基于几个假定:容错、即席查询、可伸缩性、可扩展性。

  • 容错:   Lambda 架构为大数据系统提供了更友好的容错能力,一旦发生错误,我们可以修复算法或从头开始重新计算视图。

  • 即席查询: 批处理层允许针对任何数据进行临时查询。

  • 可伸缩性: 所有的批处理层、加速层和服务层都很容易扩展。

    因为它们都是完全分布式的系统,我们可以通过增加新机器来轻松地扩大规模。

  • 扩展: 添加视图是容易的,只是给主数据集添加几个新的函数。

一些问题

层之间的代码如何同步

解决此问题的方法之一是通过使用通用库或引入流之间共享的某种抽象来为各层提供通用代码库。譬如 Summingbird or Lambdoop,Casado 这些框架

我们可以移除速度层(speed layer)吗?

是的,在许多应用程序中都不需要速度层(speed layer)。如果我们缩短批处理周期,则可以减少数据可用性中的延迟。另一方面,用于访问存储在 Hadoop 上的数据的新的更快的工具(例如 Impala , Drill 或 Tez 的新版本等),使在合理时间内对数据执行某些操作成为可能。

我们可以丢弃批处理层(batch layer)并处理速度层(speed layer)中的所有内容吗?

是的,一个例子是 Kappa Kreps 架构,它的示例建议在流中处理传入的数据,并且每当需要更大的历史记录时,它将从 Kafka 缓冲区中重新流化,或者如果我们必须进一步追溯到历史数据集群。

如何实现 Lambda 架构?

我们可以使用 Hadoop 数据湖在现实世界中实现此架构,在该数据湖中,HDFS 用于存储主数据集, Spark(或 Storm)可构成速度层(speed layer), HBase(或 Cassandra)作为服务层,由 Hive 创建可查询的视图。

Spark 数据倾斜及其解决方案

使用 Lambda 架构的公司

Yahoo

为了在广告数据仓库上进行分析,雅虎采取了类似的方法,也使用了 Apache Storm,Apache Hadoop 和 Druid²。

Netflix

Netflix Suro 项目是 Netflix 数据管道的主干,该管道有独立的数据处理路径,但不严格遵循 lambda 体系结构,因为这些路径可能用于不同的目的,不一定提供相同类型的视图(views)。

LinkedIn

使用 Apache Calcite 来桥接离线和近线计算。

总结

请记住: batch view = function (all data) realtime view = function (real-time view new data) and query = function (batch view real-time view).

很容易,对吧?

参考文献

  • [1] nathanmarz.com/blog/how-to…

  • [2] www.slideshare.net/Hadoop_Summ…

  • [3] netflixtechblog.com/announcing-…

推荐阅读:

Spark 数据倾斜及其解决方案

面试|spark刷爆磁盘与java弱引用的关系

漫画全面解释Spark企业调优点

大数据:简述 Lambda 架构相关推荐

  1. 大数据的Lambda架构

    Lambda架构 Lambda架构提供了一个结合实时数据和Hadoop预先计算(离线计算批处理层)的数据环境的混合平台, 以提供一个实时的数据试图. 分层架构: 批处理层(离线处理数据),实时处理层( ...

  2. 大数据平台Lambda架构详解

    Lambda架构由Storm的作者Nathan Marz提出.旨在设计出一个能满足.实时大数据系统关键特性的架构,具有高容错.低延时和可扩展等特. Lambda架构整合离线计算和实时计算,融合不可变( ...

  3. 《2022 大数据技术与架构视频合集》附PPT和文档,限时下载

    [传道篇]大数据架构师之技术栈及职业修养 01 大数据技术生态与架构演进 02 大数据技术体系与主流技术栈 03 大数据行业职位划分&典型职业发展路径 04 如何规划自己的职业发展方向 05 ...

  4. 普元王葱权:数字化时代需要新一代的大数据应用平台架构

    记者 | 杨丽 出品 | AI 科技大本营(rgznai100) 2018 年 12 月 6 日,北京新云南皇冠假日酒店,由中国计算机学会主办,CCF 大数据专家委员会承办,CSDN.中科天玑数据科技 ...

  5. 智能&大数据时代,架构师思维的十个学习步骤(优化版)

    前言: 秦朝的<书同文.车同轨>,加上唐朝的<诗同形>,有效的减法设计,创造了大一统(加法)的辉煌国度.君不见,在前面各步骤里,诸如:从复杂中设计出简单.以需求检验设计等都是基 ...

  6. 企业大数据平台仓库架构建设思路

    https://yq.aliyun.com/articles/57901 总体思路 随着互联网规模不断的扩大,数据也在爆炸式地增长,各种结构化.半结构化.非结构化数据不断地产生.新环境下的数据应用呈现 ...

  7. 【2017年第4期】工业大数据技术与架构

    郑树泉,1,3, 覃海焕,2,3, 王倩,1,3 1. 上海计算机软件技术开发中心,上海 201112 2. 上海电机学院电子信息学院,上海 201306 3. 上海产业技术研究院工程大数据服务创新中 ...

  8. 作者:石在辉(1983-),男,中移(苏州)软件技术有限公司大数据产品部方案架构师。...

    石在辉(1983-),男,中移(苏州)软件技术有限公司大数据产品部方案架构师,主要从事解决方案.战略规划.产品规划等工作.

  9. 大数据时代:架构师该具备什么?

      揭秘|学习|创新|实践 诚邀台湾"Android教父".国际资深架构师专家高焕堂先生3月31日亲临上海授课.4月12日将由Hadoop源码级专家王家林上海张江首场授课.     ...

  10. 大数据运维架构师培训(1):Zookeeper,Hadoop(HDFS,MR,Yarn)

    一.风哥大数据运维架构师实战培训专题2.0介绍 课程背景: 为满足想学习和掌握大数据运维与体系架构的学员,风哥特别设计的一套比较系统的大数据库运维培训课程. 课程目标: 本套风哥大数据运维架构师实战培 ...

最新文章

  1. python字符串连接方式_Python 字符串连接方式有这么种,你知道吗?
  2. 全民直播CTO张云龙:已全面迁移至阿里云
  3. SLAVE为什么一直不动了
  4. Eclipse过滤多余无用的Link文件和文件夹
  5. leetcode - 1191. K 次串联后最大子数组之和
  6. 为centos5.5添加axel插件
  7. VUE 生命周期图示
  8. array_filter移除空数组
  9. zabbix简介以及利用proxy和agent模式监控
  10. STM32-关于Proteus 仿真无法运行STM32CubeMX自动生成的代码
  11. Mysql 查询根节点下所有叶子节点
  12. 【Unity】添加 Device Simulator功能
  13. OpenCV 帧差法
  14. 如何将已有图片做成透明水印_手把手教你如何使用Photoshop CC 2014给图片添加透明水印的教程-网络教程与技术 -亦是美网络...
  15. 怎么用电脑设置让wifi变快
  16. Docker创建容器后无法update更新以及Job for docker.service failed because the control……错误
  17. [Android]自定义锁屏并屏蔽按键
  18. TMC2208电机驱动简介
  19. 百度推广——搜索营销新视角(百度官方出品,俞敏洪、吴晓波、徐雷力荐!)
  20. mysql索引命中查看_MySQL索引无法命中的几种情况及索引验证方法

热门文章

  1. 原成都传智播客团队更名新品牌名源代码教育
  2. 金蝶KIS旗舰版盘点机PDA,外购入库单扫码校验,入库扫码校验核对
  3. Linux 图形界面的开启与关闭
  4. C语言程序设计与实践 北理工 1. 达拉崩吧的酒宴
  5. 老男孩python课程表_老男孩Python全栈开发(92天全)视频教程 自学笔记14
  6. 可汗学院风格电子板书攻略:Wacom+ArtRage
  7. SAP ABAP 使用内存参数设置SET /GET PARAMTER ID
  8. VB.NET和PLC通讯,KepServer作为OPC通讯的服务器
  9. archlm检验python,Python sublime.arch方法代码示例
  10. Lesson 21-22 What’s on your mind now?