一文让你彻底了解大数据实时计算引擎 Flink

后端 同时被 3 个专栏收录
3 篇文章 1 订阅
19 篇文章 1 订阅
5 篇文章 0 订阅

不知道你是否有过和我类似的经历?

我是 2018 年 6 月加入公司,一直负责监控平台的告警系统。之后,我们的整个监控平台架构中途换过两次,其中一次架构发生了巨大的变化。我们监控告警平台最早的架构如下图所示:

这个架构的挑战难点在于:

  • 海量的监控数据(Metric & Log & Trace 数据)实时写入 ElasticSearch;
  • 多维度的监控指标页面展示(Dashboard) 查 ElasticSearch 的数据比较频繁;
  • 不断递增的告警规则需要通过查询 ElasticSearch 数据来进行判断是否要告警。

从上面的几个问题我们就可以很明显的发现这种架构的瓶颈就在于 ElasticSearch 集群的写入和查询能力,在海量的监控数据(Metric & Log & Trace 数据)下实时的写入对 ElasticSearch 有极大的影响。

我依然清楚记得,当时经常因为写入的问题导致 ElasticSearch 集群挂掉,从而让我的告警和监控页面(Dashboard)歇菜(那会老被喷:为啥配置的告警规则没有触发告警?为啥查看应用的 Dashboard 监控页面没数据)。我也很无奈啊,只想祈祷我们的 ElasticSearch 集群稳一点。
timg-8

初次接触 Flink

在如此糟糕的架构情况下,我们挺过了几个月,后面由于一些特殊的原因,我们监控平台组的整体做了一个很大的架构调整,如下图:

主要做了四点改变:

  • 接入 Flink 集群去消费 Kafka 数据,告警的 Flink Job 消费 Kafka 数据去判断异常点,然后做告警
  • Metric & Trace 数据存储到 ElasticSearch,之前还存储在 ElasticSearch 中的有 Log 数据
  • Log 数据存储到 Cassandra
  • Dashboard 查询数据增加 API 查询 Cassandra 的日志数据

原先因为 Metric & Trace & Log 的数据量一起全部实时写入到 ElasticSearch 中,对 ElasticSearch 的压力很大,所以我们将 Log 的数据拆分存储到 Cassandra 中,分担了一些 ElasticSearch 的写入压力。

但是过后我们发现偶尔还会出现数据实时写入到 ElasticSearch 集群把 ElasticSearch 写挂的情况。所以那会不断调优我们的写入数据到 ElasticSearch 的 Flink Job,然后也对 ElasticSearch 服务端做了不少的性能调优。

另外那会我们的监控数据是以 10s 一次为单位将采集的数据发上来的,后面我们调整了下数据采集的策略(变成 30s 一次为单位采集数据),采取多种调优策略后,终于将我们的 ElasticSearch 弄稳定了。

遇到 Flink 相关的挑战

替换成这种新架构后,由于组里没人熟悉 Flink,再加上那会儿 Flink 的资料真的很少很少,所以当时在组里对 Flink 这块大家都是从 0 开始学习,于大家而言挑战还挺大的。

那时候我们跑在 Flink 上面的 Job 也遇到各种各样的问题:

  • 消费 Kafka 数据延迟
  • checkpoint 失败
  • 窗口概念模糊、使用操作有误
  • Event Time 和 Processing Time 选择有误
  • 不知道怎么利用 Watermark 机制来处理乱序和延迟的数据
  • Flink 自带的 Connector 的优化
  • Flink 中的 JobManager 和 TaskManager 经常挂导致 Flink Job 重启
  • Flink 集群模式的选型

因为碰到的各种各样的问题,所以才会促使我们不断地学习 Flink 的原理和内部机制,然后慢慢去解决上面遇到的各种问题,并逐步稳定我们监控平台运行的 Flink Job。

为什么要学习 Flink?

随着大数据的不断发展,对数据的及时性要求越来越高,实时场景需求也变得越来越多,主要分下面几大类:

那么为了满足这些实时场景的需求,衍生出不少计算引擎框架,现有市面上的大数据计算引擎的对比如下:

可以发现无论从 Flink 的架构设计上,还是从其功能完整性和易用性来讲都是领先的,再加上 Flink 是阿里巴巴主推的计算引擎框架,所以从去年开始就越来越火了!

虽然市面上讲 Flink 的太少太少,国内的中文资料太欠缺,已有的几本书籍也不甚详尽,但是国内在阿里的推动下,我相信 Flink 会越来越火的,并且阿里内部也将 Flink 做了一定的优化和修改,叫 Blink,今年年初也将源码贡献到 Flink 上面,后面在 Flink 1.9 版本会将 Blink 的功能进行合并到 Flink 上去。

目前,阿里巴巴、腾讯、美团、华为、滴滴出行、携程、饿了么、爱奇艺、有赞、唯品会等大厂都已经将 Flink 实践于公司大型项目中,带起了一波 Flink 风潮,势必也会让 Flink 人才市场产生供不应求的招聘现象。

我为什么要写 FLink 专栏?

在这个过程中我持续记录自己的 Flink 学习之路,目前已经对外公布了 20+ 篇 Flink 的个人学习博客,同时好多对 Flink 感兴趣的童鞋也加我一起讨论问题。

每天群里的童鞋会提很多遇到的 Flink 问题,但是我发现得到的回答比较少,其实这并不是因为群里大佬不活跃,而是因为大家对 Flink 的了解还不是很多,比如有的是大数据工程师但之前是搞 Spark 这块的,有的是转大数据开发的后端开发工程师,有的是对 Flink 这块比较感兴趣的研究生等。

因为自己就是从 Flink 小白过来的,所以知道初学者可能会遇到的哪些问题。当你回首的时候,你可能会发现,这么简单的问题自己当时那么费力地折腾了半天都出不来。这种时候要是有人指点一下,可以节省多少功夫啊!

所以自己在心里萌生了一个想法:写一个 Flink 专栏帮助大家尽快地从小白阶段过渡到入门阶段,然后再从入门到能够将 Flink 用上,在生产环境真正把你的 Flink Job 运行起来,再做到能够根据你生产环境出现的错误进行排查并解决,还能根据你的 Job 的运行状况进一步优化!

在这里插入图片描述

专栏亮点

  • 全网首个使用最新版本 Flink 1.9 进行内容讲解(该版本更新很大,架构功能都有更新),领跑于目前市面上常见的 Flink 1.7 版本的教学课程。

  • 包含大量的实战案例和代码去讲解原理,有助于读者一边学习一边敲代码,达到更快,更深刻的学习境界。目前市面上的书籍没有任何实战的内容,还只是讲解纯概念和翻译官网。

  • 在专栏高级篇中,根据 Flink 常见的项目问题提供了排查和解决的思维方法,并通过这些问题探究了为什么会出现这类问题。

  • 在实战和案例篇,围绕大厂公司的经典需求进行分析,包括架构设计、每个环节的操作、代码实现都有一一讲解。

专栏内容

内容介绍

预备篇

介绍实时计算常见的使用场景,讲解 Flink 的特性,并且对比了 Spark Streaming、Structured Streaming 和 Storm 等大数据处理引擎,然后准备环境并通过两个 Flink 应用程序带大家上手 Flink。

基础篇

深入讲解 Flink 中 Time、Window、Watermark、Connector 原理,并有大量文章篇幅(含详细代码)讲解如何去使用这些 Connector(比如 Kafka、ElasticSearch、HBase、Redis、MySQL 等),并且会讲解使用过程中可能会遇到的坑,还教大家如何去自定义 Connector。

进阶篇

讲解 Flink 中 State、Checkpoint、Savepoint、内存管理机制、CEP、Table/SQL API、Machine Learning 、Gelly。在这篇中不仅只讲概念,还会讲解如何去使用 State、如何配置 Checkpoint、Checkpoint 的流程和如何利用 CEP 处理复杂事件。

高级篇

重点介绍 Flink 作业上线后的监控运维:如何保证高可用、如何定位和排查反压问题、如何合理的设置作业的并行度、如何保证 Exactly Once、如何处理数据倾斜问题、如何调优整个作业的执行效率、如何监控 Flink 及其作业?

实战篇

教大家如何分析实时计算场景的需求,并使用 Flink 里面的技术去实现这些需求,比如实时统计 PV/UV、实时统计商品销售额 TopK、应用 Error 日志实时告警、机器宕机告警。这些需求如何使用 Flink 实现的都会提供完整的代码供大家参考,通过这些需求你可以学到 ProcessFunction、Async I/O、广播变量等知识的使用方式。

系统案例篇

讲解大型流量下的真实案例:如何去实时处理海量日志(错误日志实时告警/日志实时 ETL/日志实时展示/日志实时搜索)、基于 Flink 的百亿数据实时去重实践(从去重的通用解决方案 --> 使用 BloomFilter 来实现去重 --> 使用 Flink 的 KeyedState 实现去重)。

avatar
Flink 专栏思维导图

多图讲解 Flink 知识点

avatar

🔺 Flink 支持多种时间语义

Flink 提供灵活的窗口

🔺 Flink 提供灵活的窗口

Flink On YARN

🔺 Flink On YARN

Flink Checkpoint

🔺 Flink Checkpoint

Flink 监控

🔺 Flink 监控

你将获得什么

  • 掌握 Flink 与其他计算框架的区别
  • 掌握 Flink Time/Window/Watermark/Connectors 概念和实现原理
  • 掌握 Flink State/Checkpoint/Savepoint 状态与容错
  • 熟练使用 DataStream/DataSet/Table/SQL API 开发 Flink 作业
  • 掌握 Flink 作业部署/运维/监控/性能调优
  • 学会如何分析并完成实时计算需求
  • 获得大型高并发流量系统案例实战项目经验

作者介绍

zhisheng_个人介绍

适宜人群

  • Flink 爱好者
  • 实时计算开发工程师
  • 大数据开发工程师
  • 计算机专业研究生
  • 有实时计算场景场景的 Java 开发工程师

在这里插入图片描述

点击链接即可获取👉《大数据实时计算引擎 Flink 实战与性能优化》

  • 1
    点赞
  • 1
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

<p> <span style="color:#333333;">项目一Spark离线处理</span> </p> <p> <span style="color:#333333;">本项目来源于企业级电商网站的大数据统计分析平台,该平台以 Spark 框架为核心,对电商网站的日志进行离线和实时分析。 </span> </p> <br /><span style="color:#333333;">该大数据分析平台对电商网站的各种用户行为(访问行为、购物行为、广告点击行为等)进行分析,根据平台统计出来的数据,辅助公司中的 PM(产品经理)、数据分析师以及管理人员分析现有产品的情况,并根据用户行为分析结果持续改进产品的设计,以及调整公司的战略和业务。最终达到用大数据技术来帮助提升公司的业绩、营业额以及市场占有率的目标。 </span><br /><br /><p> <span style="color:#333333;">本项目使用了 Spark 技术生态栈中最常用的三个技术框架,Spark Core、Spark SQL 和 Spark Streaming,进行离线计算实时计算业务模块的开发。实现了包括用户访问 session 分析、页面单跳转化率统计、热门商品离线统计、广告流量实时统计 4 个业务模块。通过合理的将实际业务模块进行技术整合与改造,该项目几乎完全涵盖了 Spark Core、Spark SQL 和 Spark Streaming 这三个技术框架中大部分的功能点、知识点,学员对于 Spark 技术框架的理解将会在本项目中得到很大的提高。 </span> </p> <p> <span style="color:#333333;"><br /></span> </p> <p> <span style="color:#333333;">项目二Spark实时处理</span> </p> <p> <span style="color:#333333;"><span style="color:#333333;">项目简介</span><br /><span style="color:#333333;">对于实时性要求高的应用,如用户即时详单查询,业务量监控等,需要应用实时处理架构</span><br /><br /><span style="color:#333333;">项目场景</span><br /><span style="color:#333333;">对于实时要求高的应用、有对数据进行实时展示和查询需求时</span><br /><br /><span style="color:#333333;">项目技术</span><br /><span style="color:#333333;">分别使用canal和kafka搭建各自针对业务数据库和用户行为数据的实时数据采集系统,使用SparkStreaming搭建高吞吐的数据实时处理模块,选用ES作为最终的实时数据处理结果的存储位置,并从中获取数据进行展示,进一步降低响应时间。</span><br /><span style="color:#333333;"> </span><br /></span> </p> <p> <span style="color:#333333;"><br /></span> </p>
相关推荐
<p> <span style="color:#3D3D3D;">本教程为授权出品</span> </p> <p> <span style="color:#3D3D3D;"><br /> </span> </p> <p> <span style="color:#3D3D3D;"><span style="color:#404040;">一、课程简介</span><br /> <span style="color:#404040;">数据仓库(Data Warehouse,可简写为DW或DWH),是面向分析的集成化数据环境,为企业决策制定过程,提供系统数据支持的战略集合,是国内外各大公司正在重点投入的战略级技术领域。</span></span> </p> <p> <span style="background-color:#FFFFFF;"><br /> </span><span style="color:#404040;">二、课程内容</span><br /> <span style="color:#404040;">《大数据电商数仓项目实战》视频教程,从项目架构的搭建,到数据采集模块的设计、数仓架构的设计、实战需求实现、即席查询的实现,我们针对国内目前广泛使用的Apache原生框架和CDH版本框架进行了分别介绍,Apache原生框架介绍中涉及到的技术框架包括Flume、Kafka、Sqoop、MySql、HDFS、Hive、Tez、Spark、Presto、Druid等,CDH版本框架讲解包括CM的安装部署、Hadoop、Zookeeper、Hive、Flume、Kafka、Oozie、Impala、HUE、Kudu、Spark的安装配置,透彻了解不同版本框架的区别联系,将大数据全生态系统前沿技术一网打尽。在过程中对大数据生态体系进行了系统的讲解,对实际企业数仓项目中可能涉及到的技术点都进行了深入的讲解和探讨。同时穿插了大量数仓基础理论知识,在掌握实战经验的同时能够打下坚实的理论基础。</span> </p> <p> <span style="background-color:#FFFFFF;"><br /> </span><span style="color:#404040;">三、课程目标</span><br /> <span style="color:#404040;">本课程以国内电商巨头实际业务应用场景为依托,对电商数仓的常见实战指标以及难点实战指标进行了详尽讲解,具体指标包括:每日、周、月活跃设备明细,留存用户比例,沉默用户、回流用户、流失用户统计,最近连续3周活跃用户统计,最近7天内连续3天活跃用户统计,GMV成交总额分析,转化率及漏斗分析,品牌复购率分析、订单表拉链表的设计等,学生拥有更直观全面的实战经验。通过对本课程的学习,对数仓项目可以建立起清晰明确的概念,系统全面的掌握各项数仓项目技术,轻松应对各种数仓难题。</span> </p> <p> <span style="background-color:#FFFFFF;"><br /> </span><span style="color:#404040;">四、课程亮点</span><br /> <span style="color:#404040;">本课程结合国内多家企业实际项目经验,特别加入了项目架构模块,从集群规模的确定到框架版本选型以及服务器选型,手把手教从零开始搭建大数据集群。并且总结大量项目实战中会遇到的问题,针对各个技术框架,均有调优实战经验,具体包括:常用Linux运维命令、Hadoop集群调优、Flume组件选型及性能优化、Kafka集群规模确认及关键参数调优。通过这部分学习,助学生迅速成长,获取前沿技术经验,从容解决实战问题。</span> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值