小白学习Flink系列--第一篇(知识图谱)
小白学习Flink系列–第一篇(知识图谱)
如何学习Flink?
对于一门计算机技术来说,如何快速学习上手呢?具体的逻辑是什么呢?我认为有以下几条
- 了解技术的应用场景
- 技术的基本概念,如何使用,以及如何部署(针对大数据组件而言)
- 技术的功能特点
- 技术源码,优缺点
知识图谱详解
核心概念
Flink的核心概念实际上是流式处理的概念,对于流式数据来说最重要的就是时间
Time类型
- Processing Time
- Event Time
- Ingestion Time
Watermark 这是Flink的一个难点,在此我想强调的是很多人翻译为水印,对新手有误导作用,译做水位更为合理,Watermark实质上就是一个时间戳,具体场景可以简化为如何处理迟到的数据,由于在分布式环境下,会受到网络等影响,数据并不能按时到达,于是就有了watermark机制,在此做简单说明,图谱每个节点我都会出详细文章说明,对于小白而言,我们首先要了解的是这个东西到底是干什么的,而不是一头扎进去研究,了解—应用–剖析是一个更合理的路线
Trigger 触发器又是什么呢?上文中提到watermark是为了迟到的数据,触发器实际上是决定数据处理完后什么时候落地的
State
- 什么是状态?这其实是流式数据的特性,计算数据处理的中间结果,举个例子,agg操作中state会记录中间聚合的结果
- 为什么需要有? 记录状态的目的是为了恢复或者重启任务,试想一下,流数据任务过程突然挂了怎么办?有了中间的结果记录,不久能够做到快速恢复任务?
区别(面试常问)
- 核心:Flink是标准的流式处理引擎,基于数据驱动,把批处理看作流处理的一种特殊情况,Spark恰恰相反,Spark是微批处理模型,把无界的流处理划分为一个一个的阶段,缩小为一系列的批次,有一个形象的比喻,对于微积分来说,就是划分为一个一个有界的面积进行逼近计算的。
- 架构:Spark是Driver master worker executor,Flink则是JobManager TaskManager Client
- 时间:Spark只支持处理时间,Flink支持处理事件,事件时间,注入时间,同时有watermark处理滞后数据
- 容错【大数据核心】:Spark无法做到仅消费一次,Flink可以做到
特性
特性分为两点,API和架构
对于数据处理引擎来说,我们需要解决的问题就是计算,所以核心就是在哪进行计算?计算任务如何找到相应的资源,这就是架构做的事情,核心就是 资源和任务的匹配
API,老生常谈就是对数据进行的操作,毕竟谁不是调参小能手呢
SQL/Table API :
Table API 和 SQL 借助了 Apache Calcite 来进行查询的解析,校验以及优化。它们可以与 DataStream 和 DataSet API 无缝集成,并支持用户自定义的标量函数,聚合函数以及表值函数。
DataStream API
DataStream API 为许多通用的流处理操作提供了处理原语。这些操作包括窗口、逐条记录的转换操作,在处理事件时进行外部数据库查询等
ProcessFunction
是 Flink 所提供的最具表达力的接口。ProcessFunction 可以处理一或两条输入数据流中的单个事件或者归入一个特定窗口内的多个事件。它提供了对于时间和状态的细粒度控制
是否有些深奥?这三者的区别在哪里?在这里可以简单的认为DataStream是ProcessFunction封装好的黑盒操作,通过提供一些已经写好的算子,用户直接调用就可以,但缺点也是显而易见的,它并不能满足所有自定义的需求,也就是无法细粒度的处理,这时候就需要实现底层的ProcessFunction
Task 真正干活的单位,经过一系列请求过后,Task匹配到资源执行,我们知道,大数据之一就是体现在数据量大,那么对于巨大的数据量来说,就出现了一下几个问题
- 如何划分Task呢?
- Task的多少和什么有关的?
- Task挂了怎么办?如何恢复任务呢
状态
- 什么是状态?这也是初学者最容易懵逼的地方
- 状态有哪些种类,存在哪?谁又在管理状态呢?这就是状态管理 状态存储 状态种类
- 区别?种类多种,管理方式多样,存储介质多种,区别在哪里?如何选择?
- 状态的用途呢?存储干嘛?这就牵扯到上文我们提到了疑问,Task挂了怎么办呢?这就牵扯到状态容错
- 状态容错的机制是什么?checkpoint?那checkpoint的底层实现又是什么呢?
libraries
这里的重难点是CEP
什么是CEP? CEP是Flink相当nice的功能,它的语义是复杂事件处理,什么,听不懂?举个例子
对于常见的电商平台,是根据用户停留时长,收藏,加购,点击次数来判断用户是否喜欢这个东西,那我们如何定义满足这一条件的函数呢?CEP就派上了用场
Gelly图处理 对于初学者来说其实没必要涉及
监控
对于大数据组件来说,长链路如何确保整个环节都没有问题呢?那就需要监控出马了,点一点,看看web UI就可以更直观的看到任务运行情况,方便定位数据处理过程中的问题
源码解析(吹牛篇)
众所周知,面试官最喜欢的就是问你,熟悉某个技术的源码吗?熟悉源码对于面试来说是有相当的优势,功利性来说,源码对于初学者的用途更多在于面试,在这个模块,我将会列出Flink源码解析的例子,帮助大家了解源码【吹牛】
落地实践
你会Spark Flink Hadoop,精通源码,但一问到如何针对应用场景进行方案设计,就傻眼了,我就只会写SQL,写scala代码,统计指标,这远远是不够的,技术是为业务服务的,没有业务也就何谈什么技术?这一章我会据一些具体公司实践已经常见的应用场景
总结
这只是一个思维导图,也就是个启蒙贴,以疑问为主,主要是为了让大家思考为什么这样做?这些年见多很多的面试者,背书很溜,原理也能巴拉巴拉说出来,一问道为什么这样做就傻眼了,这多半是面经看多了,面试造火箭,入职只会拧螺丝 。只有知道why才能更好做到 对技术的理解
接下来,我会为大家更新思维导图知识点的详细扩展,希望大家支持丫
福利
看书看不懂怎么办?学习视频安排!
没有实践项目只会Demo怎么办?实践项目安排!
面试好慌怎么办?面经大全安排!
扫描下方关注,点击联系我,添加vx即可获取Flink大礼包!!
悄悄说一下,有找不到的学习资源也可以私信答主,毕竟我是行走的资源库
小白学习Flink系列--第一篇(知识图谱)相关推荐
- 小白学习Flink系列--第二篇-01(流式数据概念)
导读 要想彻底理解Flink,就要了解流数据的前世今生,流数据的语义.特点,以及如何处理,以下文章就能很好的解释流数据的概念和模型,对了解Flink有很大的帮助 前言 今天流式数据处理在大数据领域是一 ...
- 焱老师带你学习MYSQL系列 第二篇 (MYSQL 数据结构)
相关系列链接 焱老师带你学习MYSQL系列 第六篇 (MYSQL是如何实现锁的) 焱老师带你学习MYSQL系列 第五篇 (MYSQL事务隔离级别是如何实现的) 焱老师带你学习MYSQL系列 第四篇 ( ...
- Java小白入门系列 第一篇 写在前面
2018年8月30日 22:00:17 郑州 多云 Sue Java小白入门系列 第一篇 写在前面 写在前面: 首先声明一下,本人也是正在学Java,并不是多么专业人士,只是最近受老师的启发,所 ...
- 从入门到放弃——VO小白学习VIO系列(1)VINS环境搭建
从入门到放弃--VO小白学习VIO系列(1)VINS环境搭建 前言 入门知识 VINS环境的搭建 安装Ubuntu16.06 安装ROS Kinetic 添加ROS源(国内源) 设置秘钥 刷新源 安装 ...
- 读完ACL 2019录取的30篇知识图谱论文,我发现了这5点趋势
作者 | Michael Galkin 译者 | Freesia 编辑 | 夕颜 出品 | AI科技大本营(ID: rgznai100) [导读]近年来,自然语言处理领域中广泛应用的知识图谱(KGs) ...
- Webpack系列-第一篇基础杂记
系列文章 Webpack系列-第一篇基础杂记 Webpack系列-第二篇插件机制杂记 Webpack系列-第三篇流程杂记 前言 公司的前端项目基本都是用Webpack来做工程化的,而Webpack虽然 ...
- 深入理解表单脚本系列第一篇——表单对象
前面的话 javascript最初的一个应用就是分担服务器处理表单的责任,打破处处依赖服务器的局面.尽管目前的web和javascript已经有了长足的发展,但web表单的变化并不明显.由于web表单 ...
- Android 系统(243)---Android进程系列第一篇---进程基础
Android进程系列第一篇---进程基础 内容预览.png 概述: 本文主要讲解进程基础,更深入的认识有血有肉的进程,内容涉及进程控制块,信号,进程FD泄露等等.仅供参考,欢迎指正. 一.从Linu ...
- 【干货】美团大脑系列之商品知识图谱的构建及应用.pdf(附下载链接)
今天给大家带来美团AI平台搜索与NLP部曹雪智先生所做的分享<美团大脑系列之商品知识图谱的构建及应用.pdf>,关注美团大脑及知识图谱的伙伴们别错过了.本次分享包含如下四大部分: 1.美团 ...
最新文章
- linux shell 读取文件 笔记
- java集合框架图(二)
- 个人博客系统的设计与实现_一个 Go 开发的快速、简洁、美观、前后端分离的个人博客系统...
- ARMv8/ARMv9指令集概述
- 7 centos ssh 单机_centos7单机安装kafka
- java文件流 m.jb51.net_Linux指令范例速查手册(第2版)PDF 下载
- Java递归基础案例-汉诺塔
- JS使用按位异或方式加密字符串
- tf.nn.embedding_lookup
- 在CSDN写文章头部生成标题目录
- Linux下SHELL的PS1变量简介
- CUDA——线程配置
- Solaris Boot PROM 指令
- PR2021安装包下载
- python编写鸡兔同笼程序_鸡兔同笼问题的python实现
- 最新在线客服系统php代码微信软件公众号小程序app二维码聊天网站源码
- 毒蘑菇导航,感觉不像是毒蘑菇,更像是个树莓了。
- 汇编语言实验十完整代码和详细解析
- 北华航天工业学院计算机如何,北华航天工业学院的实力怎么样?如何评价这所学校?...
- SpringBoot 使用Ffmpeg合并视频