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. python3.6 内置函数

    python内置函数 # encoding: utf-8 # module builtins # from (built-in) # by generator 1.145 ""&q ...

  2. 枚举、反射等 GetEnumName GetEnumDescription

    /// <summary> /// Retrieves the name of the constant in the specified enumeration that has the ...

  3. python文件打开方式详解——a、a+、r+、w+区别

    出处: http://blog.csdn.net/ztf312/ 第一步 排除文件打开方式错误: r只读,r+读写,不创建 w新建只写,w+新建读写,二者都会将文件内容清零 (以w方式打开,不能读出. ...

  4. Java遍历Map对象的方式

    public static void main(String[] args) { HashMap<String, String> testMap = new HashMap<> ...

  5. [UE4]CheckBox

    一.CheckBox默认情况下是比较小的 二.要让CheckBox变大,最简单的方法就是直接设置Transform.Scale,但如此一来CheckBox就变得模糊了. 三.CheckBox控件是在C ...

  6. 杂谈2.cpp

    Ostream类定义的插入运算符(<<)使数据插入到输出流,istream定义的抽取运算符(>>)能够从输入流中抽取信息 Cin和cout都是智能对象,能够根据程序上下文将信息 ...

  7. Node学习笔记(一)

    1. node的特点: Node.js 不是一种独立的语言,与 PHP.Python.Perl.Ruby 的“既是语言也是平台”不同.Node.js 也不是一个 JavaScript 框架,不同于 C ...

  8. js开发相关

    获取url中的参数 (function ($) { $.getUrlParam = function (name) { var reg = new RegExp("(^|&)&quo ...

  9. Python 快速排序 算法

    基本的快排算法,二分法 #!/usr/bin/env python # encoding: utf-8 l1=[1,4,2,6,3] def path_sort(l,start_index,end_i ...

  10. 关于javabean

    [javabean定义]定义:JavaBeans是Java语言中可以重复使用的软件组件,实质上是一种特殊的Java类.特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属 ...