Apache beam中的便携式有状态大数据处理

目标:

  1. 什么是 apache beam?
  2. 状态
  3. 计时器
  4. 例子&小demo

一、什么是 apache beam?

上面两个图片一个是正面切图,一个是横向切图;

这里只是大数据对于批量处理和流处理的一些生态圈的各个工具的发展前后历程,我觉着不够具体,总之,flink是beam的一种体现:

Apache Beam本身不是一个流式处理平台,而是一个统一的编程框架,它提供了开源的、统一的编程模型,帮助你创建自己的数据处理流水线,实现可以运行在任意执行引擎之上批处理和流式处理任务。Beam对流式计算场景中的所有问题重新做了一次归纳,然后针对这些问题提出了几种不同的解决模型,然后再把这些模型通过一种统一的语言给实现出来,最终这些Beam程序可以运行在任何一个计算平台上(只要相应平台——即Runner实现了对Beam的支持)。它的特点有:

  • 统一的:对于批处理和流式处理,使用单一的编程模型;
  • 可移植的:可以支持多种执行环境,包括Apache Apex、Apache Flink、Apache Spark和谷歌Cloud Dataflow等;
  • 可扩展的:可以实现和分享更多的新SDK、IO连接器、转换操作库等;

Flink可以和谷歌的cloud dataflow相比,dataflow数据流是一种原生的谷歌云数据处理服务,是一种构建、管理和优化复杂数据流水线的方法,用于构建移动应用、调试、追踪和监控产品级云应用。

在网上找了相关的资料,说的比较详细:

https://www.cnblogs.com/AlanWilliamWalker/p/10366823.html

Beam 模型

Beam模型处理的目标数据是无限的时间乱序数据流,不考虑时间顺序或是有限的数据集可看做是无限乱序数据流的一个特例。

接下来从问题中抽象出四个具体问题(也就是WWWH):

1, What are you computing,对数据的处理是哪种类型,数据转换、聚合或者是两者都有。(read,map,reduce)

2,  Where in event time,数据在什么范围中计算?例如,基于Process-Time的时间窗口?基于Event-Time的时间窗口?滑动窗口等等(event time windowing)

3,  When in processing time,何时将计算结果输出?在这里引入了一个Trigger机制,Trigger决定何时将计算结果发射出去,发射太早会丢失一部分数据,丧失精确性,发射太晚会导致延迟变长,而且会囤积大量数据,何时Trigger是由水位线来决定的,在Beam SDK中由Pipeline中的水位线和触发器指定。

4,  How do refinements relate,迟到数据如何处理?例如,将迟到数据计算增量结果输出,或是将迟到数据计算结果和窗口内数据计算结果合并成全量结果输出。在Beam SDK中由Accumulation指定。

用例:

下面是“有状态的计算”的一个例子,易于理解:

关于State:

Timers计时器

对于有状态的计时器 下面是更多的例子被使用到:

●每键任意编号

●仅当结果变化时输出

●对缓慢变化的尺寸进行更严格的“侧输入”管理

●流式连接矩阵/连接biclize

●细粒度组合聚合和输出控制

●每个关键的“工作流程”,如用户注册流程和到期

●低延迟重复数据消除(让第一个通过,压扁其余部分)

Apache beam中的便携式有状态大数据处理的更多相关文章

  1. Apache Beam中的函数式编程理念

    不多说,直接上干货! Apache Beam中的函数式编程理念 Apache Beam的编程范式借鉴了函数式编程的概念,从工程和实现角度向命令式妥协. 编程的领域里有三大流派:函数式.命令式.逻辑式. ...

  2. Apache Beam实战指南 | 大数据管道(pipeline)设计及实践

    Apache Beam实战指南 | 大数据管道(pipeline)设计及实践  mp.weixin.qq.com 策划 & 审校 | Natalie作者 | 张海涛编辑 | LindaAI 前 ...

  3. Apache Beam实战指南 | 手把手教你玩转KafkaIO与Flink

    https://mp.weixin.qq.com/s?__biz=MzU1NDA4NjU2MA==&mid=2247492538&idx=2&sn=9a2bd9fe2d7fd6 ...

  4. Apache Beam编程指南

    术语 Apache Beam:谷歌开源的统一批处理和流处理的编程模型和SDK. Beam: Apache Beam开源工程的简写 Beam SDK: Beam开发工具包 **Beam Java SDK ...

  5. Apache Beam的API设计

    不多说,直接上干货! Apache Beam的API设计 Apache Beam还在开发之中,后续对应的API设计可能会有所变化,不过从当前版本来看,基于对数据处理领域对象的抽象,API的设计风格大量 ...

  6. Apache Beam,批处理和流式处理的融合!

    1. 概述 在本教程中,我们将介绍 Apache Beam 并探讨其基本概念. 我们将首先演示使用 Apache Beam 的用例和好处,然后介绍基本概念和术语.之后,我们将通过一个简单的例子来说明 ...

  7. Apache Beam: 下一代的大数据处理标准

    Apache Beam(原名Google DataFlow)是Google在2016年2月份贡献给Apache基金会的Apache孵化项目,被认为是继MapReduce,GFS和BigQuery等之后 ...

  8. Apache Flink中的广播状态实用指南

    感谢英文原文作者:https://data-artisans.com/blog/a-practical-guide-to-broadcast-state-in-apache-flink 不过,原文最近 ...

  9. Apache Beam 传 大数据杂谈

    1月10日,Apache软件基金会宣布,Apache Beam成功孵化,成为该基金会的一个新的顶级项目,基于Apache V2许可证开源. 2003年,谷歌发布了著名的大数据三篇论文,史称三驾马车:G ...

随机推荐

  1. centos7 源码安装redis

    安装3.x [root@node1 ~]# yum install wget gcc-c++ make [root@node1 ~]# wget http://download.redis.io/re ...

  2. 记一次sshd启动报错,Failed to start OpenSSH server daemon.

    sshd -t [root@mysql5-slave proj]# sshd -t @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...

  3. Codeforces Round #551 (Div. 2) A-E

    A. Serval and Bus 算出每辆车会在什么时候上车, 取min即可 #include<cstdio> #include<algorithm> #include< ...

  4. 【待考察】Appium使用技巧,助你快速入门移动端自动化!

    Appium使用技巧,助你快速入门移动端自动化! 原创: 柠檬班superman 柠檬班软件测试 1月4日 关注并置顶[柠檬班]的小哥哥小姐姐 “猪”年行大运 说说最近研究移动端的自动化 移动端的自动 ...

  5. 200用户的并发用户配置(CSV)

    我来解释一下为什么标题是,设置多个参数对浏览器进行访问,原本想写成对app或者web,但是我想只要有参数的地方无聊是app或者web或者小程序,都是可以用到设置参数的. 第一步:在线程组下添加参数配置 ...

  6. 《深入浅出 Java Concurrency》目录

    最近在学习J.U.C,看到一个大神 关于这个系列写的非常精辟,由于想做笔记,故系列转载并记录之. 原文:http://www.blogjava.net/xylz/archive/2010/07/08/ ...

  7. ARM 版本

    M  microcontroller 单片机 STM32                                M0 M0+   M3  M4  M7低功耗 A applicatioin 应用 ...

  8. centos svn强制要求提交代码时写注释

    1. 重命名svn主目录中hooks的pre-commit.tmpl文件为pre-commit,并添加可执行权限 mv pre-commit.tmpl pre-commit chmod u+x pre ...

  9. 06python上

    product_list=[ ('Mac',9000), ('kindle',800), ('tesla',900000), ('python book',105), ('bike',2000), ] ...

  10. JDK1.7 ConcurrentHashMap--解决高并发下的HashMap使用问题

    高并发下也可以使用HashTable .Collections.synchronizedMap因为他们是线程安全的,但是却牺牲了性能,无论是读操作.写操作都是给整个集合加锁,导致同一时间内其他操作均为 ...