当前位置: 首页 > news >正文

Jeff Bean谈Flink与流式处理的5大新发现

AI前线导读:

在大数据领域工作了近8年后,今年秋天,作为data Artisans的技术布道师,我在Apache Flink社区变得越来越活跃。在十月份举行的湾区Flink座谈会上,我从技术从业者的角度讨论了我对Flink的看法。虽然我是一名Flink新手,但我已经在大数据领域工作了很长时间。正如我在座谈会上所说的,我对人们这个领域的关注、投入和好奇心感到震惊。回想起来,这符合我对Apache Flink和Apache Flink社区的总体印象。下面我想介绍有关Apache Flink的5个早期印象,以及为什么企业应该在他们的流式处理架构中尽早尝试Flink。

更多干货内容请关注微信公众号“AI前线”(ID:ai-front)

流式处理一直是大数据项目的必经之路。

我在2010年进入大数据领域,当时最先进的是分布式文件系统,MapReduce、Hive、Pig、Flume和HBase。然而,低延迟数据处理长期以来一直是一个巨大的挑战。例如,在我进入该领域工作的头几个月,一位客户问我如何在Hive中对一个不断增长的表基于五分钟滚动窗口产生最新的聚合。这是一个非常困难的查询,客户和我都没有想出来该怎么做。MapReduce、Hive、Pig和后来的Spark使用越来越小的批处理操作来处理大量不同数据,获得接近低延迟的结果。一些框架如Flume和后来的Kafka让数据摄取、封装和传输变得更容易。其他查询系统(如HBase、Cassandra、Presto和Impala)可以近似实时地对新近摄取的数据进行交互式访问。但是,所有这些项目都忽略了客户和业务用户真正的需求:将数据表示为流,并基于流进行复杂有状态的分析。客户和最终用户通过各种有趣且昂贵的方式与延迟做斗争。

Apache Flink在2018年的增长非常惊人。

最近Qubole的一份调查报告显示,Apache Flink是2018年大数据和Hadoop生态系统中发展最快的引擎,与2017年的类似调查相比,采用量增长了125%。这种采用率的提升给人造成了一种很强烈的印象,Datanami网站的两篇与Flink不相关的文章中都提到了它。其中一篇感叹大数据生态系统变得日益复杂,涉及的项目呈爆发式的增长,以及在应用场景中采用了错误技术所涉及的风险,但又不遗余力地说明了Flink在采用方面的惊人增长。另一篇有关Cloudera Mike Olson的文章讨论了这个领域从“动物园动物争吵”到解决企业问题的演变,但它仍然给Flink的采用量增长点了一个赞。有时候,动物园里最好的动物不一定是你所期望的那个。

\"image\"

值得注意的是,虽然data Artisans支持Flink,销售Flink相关的产品,并聘请了很多原始作者和提交者,但现今Flink的大部分采用都发生在data Artisans公司之外,比如Netflix、阿里巴巴、Uber和Lyft,等等。

Flink的分层抽象非常具有表现力,让你能够自然地概念化你的数据。

在使用Hadoop项目(如MapReduce)多年之后,将流、状态、时间和快照的构造作为事件处理的构建块而不是键、值和执行阶段这些不完整的概念,这令人耳目一新。我的印象是Flink在接口以及这些接口如何与底层平台的功能相关联方面是最具表现力的。例如,SQL接口支持滚动窗口和复杂事件处理。如下图的滚动时间窗口示例所示——几年前我们还很那做到这些——但现在却可以使用简单的SQL来表示。图中还显示了流式API和processFunction抽象级别的相似表现力。

\"image\"

我们看到了包装最佳实践的出现。

供应商可以为活跃的开源项目带来价值的一个地方是在精心构建的产品中包装专业知识和最佳实践。采用率较高的开源项目在选择性和可配置性方面变得更加广泛,因为它们运行在特定的生产环境中。

data Artisans根据他们自己的经验以及Flink用户社区已经建立起的最佳实践包装了一些观点。例如,在部署方面,Apache Flink支持YARN、Mesos、Kubernetes和独立部署。同样,Flink的最终用户倾向于运行基于Flink的应用程序而不是Flink作业,这是Flink中可用的最高执行抽象。data Artisans为Flink引入了应用程序的概念,可在Kubernetes上部署Flink,包装了一个非常有用又可扩展的一集群一作业对应一个应用程序的最佳实践。这些简单的决策和包装的最佳实践有助于更早从Flink的采用中获得价值,从而让用户无需一次又一次地解决同类问题。因为包装了最佳实践,data Artisans Platform Application Manager不仅适用于生产部署:它也适用于开始应用Flink。

在其他项目做不到的地方,Flink却取得了成功。

Flink的流式处理有很多很好的生产应用场景。你可以从阿里巴巴、Netflix、Lyft、Uber、DriveTribe等公司那里了解更多有关它们通过采用Flink来满足它们的业务对流式处理的需求。我注意到,在在采用Flink之前,总是先尝试一下其他的项目。

阿里巴巴在参考另一个项目的微批处理范式时,“第一种方法是使用批处理作为起点,然后尝试在批处理之上进行流式处理。但是,这可能无法满足他们对延迟的严格要求,因为模拟流的微批处理需要一些固定的开销——所以当你尝试减少延迟时,开销的比例会增加。

在Flink Forward演讲中,来自Netflix的Shriya Arora说道:“从历史上看,我们已经通过批量的方式连接了大量数据集。然而,我们会问自己,数据是否是实时生成的,为什么不能在下游进行实时处理?”

同样,在讨论他们基于Flink的平台AthenaX时,Uber写道,他们在采用Flink之前尝试了Apache Storm和Apache Samza,“然而,这些解决方案还不够理想。用户要么被迫实现、管理和监控他们自己的流式分析应用程序,要么只能为预先定义的一组问题获取答案。”

在我看来,乍一看,微批次处理、lambda架构、辅助流式处理技术和替代流式处理项目等架构似乎都可以……直到有人从痛苦的经历中发现,低延迟处理和复杂分析无法通过廉价、可扩展和容错的方式来实现。

因此,我的建议是不要让自己在一开始就被困在错误的技术采用的痛苦中,而是尽早尝试使用Flink来解决你的流式处理问题。从Flink的采用模式来看,很多人走了弯路。

英文原文:
https://data-artisans.com/blog/early-observations-apache-flink

会议推荐:


12月20-21, AICon将于北京开幕,在这里可以学习来自Google、微软、BAT、360、京东、美团等40+AI落地案例,与国内外一线技术大咖面对面交流。

相关文章:

  • 解决 scapy “NameError: global name 'wrpcap' is not defined” 错误
  • 【xshell】xshell设置快捷键 设置Ctrl+C Ctrl+V快捷键为复制粘贴
  • Android FlatBuffers数据交互
  • 【man】 查看命令帮助文档
  • react 使用 react-loadable分包
  • Emacs学习(一)
  • 存档3
  • 笔记-SSZipArchive使用以及遇到的问题
  • Vue项目部署遇到的坑(你肯定会遇到!)
  • Hyper-v 与Oracle VM VirtualBox 之间的冲突问题
  • 手把手教您将 libreoffice 移植到函数计算平台
  • 通过一个实际例子理解Kubernetes里pod的自动scale - 水平自动伸缩
  • Centos7 Gitea安装教程 - 一款易搭建,运行快的Git服务器
  • LOJ #2058「TJOI / HEOI2016」求和
  • Java核心(五)深入理解BIO、NIO、AIO
  • Android组件 - 收藏集 - 掘金
  • Apache Spark Streaming 使用实例
  • If…else
  • java8 Stream Pipelines 浅析
  • Laravel5.4 Queues队列学习
  • nodejs调试方法
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 搞机器学习要哪些技能
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 解析 Webpack中import、require、按需加载的执行过程
  • 微信公众号开发小记——5.python微信红包
  • 由插件封装引出的一丢丢思考
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • # 数论-逆元
  • #if和#ifdef区别
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (12)目标检测_SSD基于pytorch搭建代码
  • (13):Silverlight 2 数据与通信之WebRequest
  • (c语言)strcpy函数用法
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (万字长文)Spring的核心知识尽揽其中
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)jdk与jre的区别
  • (转)Oracle存储过程编写经验和优化措施
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • /run/containerd/containerd.sock connect: connection refused
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @RequestMapping处理请求异常
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • []C/C++读取串口接收到的数据程序
  • [2016.7 day.5] T2
  • [Android] 修改设备访问权限
  • [Angular] 笔记 8:list/detail 页面以及@Input