Apache Flink

Iceberg 在基于 Flink 的流式数据入库场景中的应用

别等时光非礼了梦想. 提交于 2020-04-17 02:06:04
【推荐阅读】微服务还能火多久?>>> 本文以流式数据入库的场景为基础,介绍引入 Iceberg 作为落地格式和嵌入 Flink sink 的收益,并分析了当前可实现的框架及要点。 应用场景 流式数据入库,是大数据和数据湖的典型应用场景。上游的流式数据,如日志,或增量修改,通过数据总线,经过必要的处理后,汇聚并存储于数据湖,供下游的应用(如报表或者商业智能分析)使用。 上述的应用场景通常有如下的痛点,需要整个流程不断的优化: 支持流式数据写入 ,并保证端到端的不重不丢(即 exactly-once); 尽量减少中间环节 ,能支持更实时(甚至是 T+0)的读取或导出,给下游提供更实时更准确的基础数据; 支持 ACID ,避免脏读等错误发生; 支持修改已落地的数据 ,虽然大数据和数据湖长于处理静态的或者缓慢变化的数据,即读多写少的场景,但方便的修改功能可以提升用户体验,避免用户因为极少的修改,手动更换整个数据文件,甚至是重新导出; 支持修改表结构 ,如增加或者变更列;而且变更不要引起数据的重新组织。 引入 Iceberg 作为 Flink sink 为了解决上述痛点,我们引入了 Iceberg 作为数据落地的格式。Iceberg 支持 ACID 事务、修改和删除、独立于计算引擎、支持表结构和分区方式动态变更等特性,很好的满足我们的需求。 同时,为了支持流式数据的写入,我们引入 Flink

8年互联网老兵,2个月面试20家大厂的知识点总结和建议

荒凉一梦 提交于 2020-04-16 11:08:46
【推荐阅读】微服务还能火多久?>>> 本文来自一个8年大数据老兵的面试经历投稿,我完完整整的看了一遍,真的很细很细,疫情期间面试各种失败各种总结,最后拿到Offer实属不易,精神很值得大家学习 前言 我不是什么大牛,我只是一个有八年工作经验的互联网老兵,既没有非常亮眼的学历,也没有牛逼大厂的履历。 这个冬天,在孩子得病从急诊转住院的时候,我得到了年前将被优化的消息,作为家里唯一经济来源的我整个人蒙了,一时间茫然和无助差点毁了我。 最后我还是和家人如实说了,受到了他们的极大的鼓励,也找到了重新开始的勇气。 可惜这场疫情来的如此凶猛,职位少、要求高、电话面试、视频面试、在线coding、屡战屡败、屡败屡战,构成了我这两个月的常规生活。 我一开始也焦虑、茫然,甚至对自己的能力和工作经验深深怀疑。 后来经过几个好朋友的鼓励打气,也看了敖丙的很多面试文章,认真总结自己面试中不足的地方,查漏补缺,终于在这周确定了offer。(这是原话,我真没瞎加哈哈) 接下来我就我之前面过的腾讯、高德、京东、美团、饿了么、快手、字节跳动、滴滴、360金融、跟谁学、网联清算、华晨宝马、快看漫画、陌陌、脉脉等等等公司的面试题做一下总结,权当抛砖引玉,希望对大家有帮忙。 面试问题汇总 基础问题 linux和网络基础 (1)linux系统内核态和用户态是什么,有什么区别? (2)BIO、NIO、AIO都是什么

Kafka 基础知识

萝らか妹 提交于 2020-04-15 16:33:51
【推荐阅读】微服务还能火多久?>>> 1. kafka如何做到高吞吐量的? 采用批处理 。如果一条一条的发消息,假如每条消息需要2毫秒,那么吞吐量不超过1000/2=500条/秒。如果采用批处理,假如此刻累积了100条消息,批处理需要等待一段时间比如8毫秒,加上发送一次的延时是2毫秒,那么一次批处理的时间是10毫秒。平均一条消息的耗时为10/100=0.1毫秒,那么此时的吞吐量为1000/0.1=10000条/秒。性能提升了近20倍。 2. 在kafka内部,是如何支撑起高吞吐/低延时的呢? 每次写入操作,都是先把数据写到操作系统的页缓存上(页缓存是在内存中分配的),然后由操作系统自行决定什么时候把页缓存上的数据写入到磁盘上。 Kafka 不必直接与底层的文件系统打交道。所有烦琐的 I/O 操作都交由操作系统来处理 Kafka 写入操作采用追加写入( append )的方式,避免了磁盘随机写操作。(磁盘的随机读写确实很慢,但是顺序读写却很快) 使用以 sendfile 为代表的零拷贝技术加强网络间的数据传输效率。 3. Topic、分区、副本、消费组、offset Topic: 发送到Kafka的每一条消息都有一个类别,用主题(Topic)来表示。通常,不同应用产生不同类型的数据,可以设置成不同的Topic。 分区: 每个Topic对应若干个分区,对于每个Topic

实时需要分析

落花浮王杯 提交于 2020-04-15 09:31:13
【推荐阅读】微服务还能火多久?>>> 统计类:读取数据、做简单包装转换map、filter、按某个字段分组,开窗,做聚合 排序| TopN:再做一个ProcessFunction,把所有数据都收集到排序输出; 以上是基于DataStreamAPI,也可以用高级API、TableAPI和FlinkSQL 业务流程中的状态做检测输出和警告:自定义编程、状态 事件逻辑、风控:CEP Flink| 实时需要分析 ========================实时流量统计 1. 实时热门商品 HotItems 每隔 5 分钟输出最近一小时内点击量最多的前 N 个商品。 抽取出业务时间戳,告诉 Flink 框架基于业务时间做窗口 • 过滤出点击行为数据 • 按一小时的窗口大小,每 5 分钟统计一次,做滑动窗口聚合( Sliding Window) • 按每个窗口聚合,输出每个窗口中点击量前 N 名的商品 2. 实时流量统计 NetworkFlow "实时流量统计" 对于一个电商平台而言,用户登 录的入口流量、不同页面的访问流量 都是值得分析的重要数据,而这些数据,可以 简单地从 web 服务器的日志中提取出来。 实现"热门页面浏览数"的统计,也就是读取服务器日志中的每 一行log统计在一段时间内用户访问每一个url的次数,然后排序输出显示。 具体做法为: 每隔 5 秒,输出最近 10

超200万?约翰斯·霍普金大学数据错误!——谈谈如何保证实时计算数据准确性

强颜欢笑 提交于 2020-04-14 11:22:46
【推荐阅读】微服务还能火多久?>>> 作为全球新冠疫情数据的实时统计的权威,约翰斯—霍普金斯大学的实时数据一直是大家实时关注的,也是各大媒体的主要数据来源。在今天早上的相当一段长的时间,霍普金斯大学的全球疫情分布大屏中显示,全球确诊人数已经突破200万。 有图有真相 随后相关媒体也进行了转发,不过这个数据明显波动太大,随后该网站也修改了数据 约翰斯·霍普金斯大学系统科学与工程中心就制作了“全球新冠病毒扩散地图”,用于实时可视化和跟踪报告的病例。于1月22日首次公开。 为了提高数据的实时性,数据的来源通过手动和自动获取的方式。手动的方式出错的概率还是很大的,如果我们可以通过实时流获取数据的方式,就可以避免数据错误的问题,这其实是数据从一方到达另一方的数据是否准确的问题,也就是端到端的一致性。 这种消息传递的定义叫做消息传递语义: 我们要了解的是 message delivery semantic 也就是消息传递语义。 这是一个通用的概念,也就是消息传递过程中消息传递的保证性。 分为三种: 最多一次( at most once ): 消息可能丢失也可能被处理,但最多只会被处理一次。 可能丢失 不会重复 至少一次( at least once ): 消息不会丢失,但可能被处理多次。 可能重复 不会丢失 精确传递一次( exactly once ): 消息被处理且只会被处理一次。 不丢失

IDEA无法运行或调试Flink的解决方式

泄露秘密 提交于 2020-04-13 13:23:59
【今日推荐】:为什么一到面试就懵逼!>>> 创建完成Flink QuickStart 项目后,如果直接导入IDEA中运行或调试会报出如下错误 Caused by: java.lang.ClassNotFoundException: org.apache.flink.streaming.api.datastream.DataStream 这是由于quickstart模板中Flink依赖的scope默认为provided, 因此IDEA不会加载这些依赖。 <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_${scala.binary.version}</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency> 解决方法: 修改Run/Debug Configurations,勾选Include dependencies with "provided" scope 来源: oschina 链接: https://my.oschina.net/u/4504695/blog/3232658

PyFlink 社区扶持计划正式上线!

£可爱£侵袭症+ 提交于 2020-04-11 18:56:10
Flink 从 1.9.0 版本开始增加了对 Python 的支持(PyFlink),最新发布的 Flink 1.10 中明确目前 PyFlink 生态的功能特性在社区的努力下逐步完善。为了让大家更好的上手使用 PyFlink,自即日起,PyFlink 社区扶持计划正式上线! 01 为什么要发起 PyFlink 社区扶持计划? 随着 PyFlink 两个大版本的发布,功能日趋完善,用户也与日俱增。 PyFlink 易用性不断增强,功能日益适应实际业务的需求,同时性能持续满足生产需要。为了更好地服务社区用户,让对 PyFlink 有反哺意愿的用户得到更优质的服务、以及与社区大牛(ASF Member,PMCs,Committers)共同探讨技术的机会。PyFlink 社区特发起用户扶持计划,本计划将 面向所有 PyFlink 社区公司客户 ,我们将选择具有代表性的业务/公司进行 专业的一对一扶持 。 02 社区目标:并肩作战,营造双赢 该项目由 PyFlink 的核心开发人员与参与用户一起根据实际业务场景打磨 PyFlink 的现有功能,并邀请用户一同参与项目未来功能规划,打造有用、实用、高效的 PyFlink 功能生态。 社区衷心希望能够让更多用户在 PyFlink 核心开发人员的支持下,快速找到适合自己业务场景的 PyFlink 最佳实践,平稳顺利达成业务目标。确保您的

基于Flink流处理的动态实时电商实时分析系统

女生的网名这么多〃 提交于 2020-04-11 08:51:03
在开始学习前给大家说下什么是Flink? 1. Flink 是一个针对流数据和批数据的分布式处理引擎,主要用Java代码实现。 2.Apache Flink作为Apache的顶级项目,Flink集众多优点于一身,包括快速、可靠可扩展、完全兼容Hadoop、使用简便、表现卓越。 通过以上的描述大家对Flink有了一个基本的认识,本套课程不会讲解基础内容,因此建议有Flink基础的同学进行认购。 开始学习前建议大家认真阅读下文: 随着人工智能时代的降临,数据量的爆发,在典型的大数据的业务场景下数据业务最通用的做法是:选用批处理的技术处理全量数据,采用流式计算处理实时增量数据。在绝大多数的业务场景之下,用户的业务逻辑在批处理和流处理之中往往是相同的。但是,用户用于批处理和流处理的两套计算引擎是不同的。 因此,用户通常需要写两套代码。毫无疑问,这带来了一些额外的负担和成本。阿里巴巴的商品数据处理就经常需要面对增量和全量两套不同的业务流程问题,所以阿里就在想,我们能不能有一套统一的大数据引擎技术,用户只需要根据自己的业务逻辑开发一套代码。这样在各种不同的场景下,不管是全量数据还是增量数据,亦或者实时处理,一套方案即可全部支持,这就是阿里选择Flink的背景和初衷。 随着互联网不断发展,数据量不断的增加,大数据也是快速的发展起来了。对于电商系统,拥有着庞大的数据量,对于这么庞大的数据

Flink| 实时需要分析

一个人想着一个人 提交于 2020-04-11 08:40:23
========================实时流量统计 1. 实时热门商品 HotItems 每隔 5 分钟输出最近一小时内点击量最多的前 N 个商品。 抽取出业务时间戳,告诉 Flink 框架基于业务时间做窗口 • 过滤出点击行为数据 • 按一小时的窗口大小,每 5 分钟统计一次,做滑动窗口聚合( Sliding Window) • 按每个窗口聚合,输出每个窗口中点击量前 N 名的商品 2. 实时流量统计 NetworkFlow "实时流量统计" 对于一个电商平台而言,用户登 录的入口流量、不同页面的访问流量 都是值得分析的重要数据,而这些数据,可以 简单地从 web 服务器的日志中提取出来。 实现"热门页面浏览数"的统计,也就是读取服务器日志中的每 一行log统计在一段时间内用户访问每一个url的次数,然后排序输出显示。 具体做法为: 每隔 5 秒,输出最近 10 分钟内访问 量最多的前 N 个 URL。可以看出,这个需求与之前“实时热门商品统计”非常类似, 所以我们完全可以借鉴此前的代码。 3. PV 网站页面流量 - PageView 衡量网站流量一个最简单的指标,就是网站的页面浏览量(Page View PV ); 用户每次打开一个页面便记录 1 次 PV ,多次打开同一页面则浏览量累计。一般来说PV 与来访者的数量成正比,但是 PV

面试题汇总

扶醉桌前 提交于 2020-04-10 10:47:04
基础问题 linux和网络基础 (1)linux系统内核态和用户态是什么,有什么区别? (2)BIO、NIO、AIO都是什么,有什么区别? (3)TCP和UDP的区别? (4)详细叙述TCP3次握手,TCP和HTTP的区别,其中字节面试官问的最细,他会具体问TCP底层的3次握手的具体实现逻辑,第三次握手如果失败会怎样。 建议把TCP关闭时的4次挥手也看看,敖丙的文章就有,看了至少表面的东西难不倒你们,由于这个是最基础的问题,如果回答不好,面试官的印象分就你懂得。 (5)rpc和http的区别,你知道有什么rpc框架。 (6)https相对http都实现了什么加密方式,是对称加密还是非对称加密? (7)用linux命令怎么做分组求和,怎么把字符串根据分隔符变成数组(这里建议大家读读敖丙的linux命令篇) JVM基础 (1)简要介绍一下JVM虚拟机(这个问题不是把JVM分成JMM,类加载和GC来问,一定要想好怎么描述JVM) (2)简述一次GC的过程(Minor gc和Major gc过程还记得么) (3)JMM是什么? (4)JVM共享内存都有什么,什么是堆外内存? (5)GC区域,垃圾回收算法,垃圾回收器,G1、CMS、ParNew等垃圾回收器的简介和之间的区别。 (6)类加载过程(5个过程最好能研究明白,因为还涉及到栈帧、局部表量表、操作数栈、动态链接和方法出口等知识