Streaming with Apache Training
Apache Flink流式传输
本次培训主要专注在四个重要的概念:连续处理流数据,事件时间,有状态的流处理和状态快照。
流处理
流是数据天然的栖息地,无论是来自Web服务器的事件,来自证券交易所的交易,还是来自工厂车间的机器传感器读数,数据都是作为流的一部分创建的。但是当我们分析数据时,我们可以围绕有界或无界流组织我们的处理过程,我们选择的范式会产生生远的影响。
批处理 是我们处理有界数据流时的工作范例。这种操作模式中我们可以选择在产生任何结果之前注入整个数据集,例如,对数据进行排序,计算全局统计信息或生成汇总所有输入的最终报告。
流处理 另一方面,流处理涉及无界数据流。从概念上来说,至少输入可能永远不会结束,因此我们被迫在数据抵达时进行连续处理。
在Flink中,应用程序由用户定义的算子转换的数据流组成。这些数据流形成有向图,这些图以一个或多个源开头,并以一个或多个接收器结束。
一个应用可能从流式源消费实时数据如消息队列或分布式日志,例如Apache Kafka或Kinesis。但是Flink也可以从很多数据源中获取有界的,历史的数据。类似的,Flink应用程序生成的结果流可以发送到各种系统,Flink中保存的状态可以通过REST API访问。
实时流处理
对于大多数流式应用而言,使用处理实时数据的相同代码重新处理历史数据并生成确定的,一致的结果是非常有价值的
同样关键的是注意时间触发的顺序,而不是事件被处理的顺序,以及能够推断一组事件何时完成。例如考虑电子商务交易或者金融交易中涉及的一系列事件。
这些对于实时流处理要求使用记录在数据流中的事件时间的时间戳,而不是使用处理数据的机器时间。
状态流处理
Flink的操作是有状态的。这意味着一个事件如何被处理取决于在此之前的事件所积累的影响。状态可能被用于一些简单的事情,例如计算每分钟显示在面板上的事件,或者用于一些复杂的事情,例如用于欺诈检测模型计算特征。
Flink应用程序在分布式集群上并行运行。给定运算符的各种并行实例将在单独的线程中独立执行,并且通常将在不同的机器上运行。
有状态运算符的并行实例集实际上是分片键值存储。每个并行实例负责处理特定键组的事件,并且这些键的状态保存在本地。
下图显示了作业图中前三个运算符的并行度为2的作业,终止于并行度为1的接收器。第三个运算符是有状态的,我们看到第二个和第三个运算符之间正在发生完全连接的网络洗牌。这样做是为了通过某个键对流进行分区,以便一起处理所有需要处理的事件。
状态始终在本地访问,这有助于Flink应用程序实现高吞吐量和低延迟。您可以选择在JVM堆上保持状态,或者它太大了,有效的组织在磁盘数据结构上。
强大的流处理
Flink能够通过状态快照和流重放的组合提供容错和精确一次语义。这些快照捕捉分布式管道的全部状态,将偏移记录到输入队列中,以及整个作业图中的状态,这是因为已经将数据摄取到该点。当发生故障时,源被倒带,状态恢复,并且恢复处理。如上所述,这些状态快照是异步捕获的,而不会妨碍正在进行的处理。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
HBase+Spark技术双周刊 第五期
【点击订阅HBase+Spark技术双周刊】 优质博文推荐 2019年1月&2月云栖技术活动汇总:50+直播与Meetup资料下载 刚刚过完节日,云栖社区的线上直播和线下沙龙已经陆续展开啦,辗转之间,我们即将告别二月的寒冬,迎来三月的阳春,下面为大家汇总了一月二月份的直播和沙龙资料大全,最好的学习时机就是现在,速速收藏吧~ 云HBase Spark分析引擎对接云数据库POLARDBHBase Spark分析引擎是云数据库HBase版提供的分析引擎,其可以对接阿里云的多种数据源,同时也支持对接云数据库POLARDB。POLARDB是阿里云自研的下一代关系型云数据库,100%兼容MySQL,性能最高是MySQL的6倍。本文主要介绍HBase Spark分析引擎如何对接云数据库POLARDB。 HBase社区福利 | HBase初学者的福利来袭HBase 有着如此多的应用,越来越多的公司都在使用它,这就导致越来越多的开发者们需要学习 HBase。中国HBase技术社区联合阿里云HBase数据库团队为大家带来了福利。阿里云HBase为我们提供了免费的HBase环境! 直播往期回顾——视...
- 下一篇
Elasticsearch 评分排序
背景 通过脚本改变评分 背景 近期有一个需求,需要对优惠券可用商品列表加个排序,只针对面值类的券不包括折扣券。 需求是这样的,假设有一张面值券 50 块钱,可用商品列表 A 100、B 40、C 10,当用户查询当前券可用商品列表的时候优先将卡券可以直接抵扣且不需要用户在额外支付的商品排在前面。 C 10 B 40 A 100 其实排序有很多侧重,比如: 1.根据用户利益最大化原则,排序列表应该是 B、C、A 2.根据用户购买习惯,有可能是 A、B、C3.根据运营策略、第三方利益等有可能是C、B、A 这里暂且先不扩展如何对商品列表进行智能排序,如果需要完整的个性化商品推荐,涉及很多东西,后面有经验在拿来分享。 我们就这个简单的 case,一开始最直接的想法就是加个排序列,建索引的时候将排序值计算好直接写入。后来分析了下原来索引(__index__) 结构不是这种笛卡尔积的排列,所以在短时间内很难立马上线,需要新建 index 结构。 后来通过讨论用影响评分的方法来解决,可以节省时间快速上线。 通过脚本改变评分 ES query DSL 支持很多种类型的查询,结果的排序如果没有特殊声明 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果