王知无(import_bigdata)
微信搜:import_bigdata
GitHub搜:https://github.com/wangzhiwubigdata/God-Of-BigData
展开
-
写在开头:Blink开源,Spark3.0,谁才是大数据领域最闪亮的星?
2018和2019年是大数据领域蓬勃发展的两年,自2019年伊始,实时流计算技术开始步入普通开发者视线,各大公司都在不遗余力地试用新的流计算框架,实时流计算引擎Spark Streaming、Kafka Streaming、Beam和Flink持续火爆。最近Spark社区,来自Databricks、NVIDIA、Google以及阿里巴巴的工程师们正在为Apache Spark 3.0添加......原创 2019-03-13 23:56:09 · 3099 阅读 · 0 评论 -
第二篇:本地环境搭建&构建第一个Flink应用
本地安装单机版本Flink一般来说,线上都是集群模式,那么单机模式方便我们测试和学习。环境要求本地机器上需要有 Java 8 和 maven 环境,推荐在linux或者mac上开发Flink应用:如果有 Java 8 环境,运行下面的命令会输出如下版本信息:如果有 maven 环境,运行下面的命令会输出如下版本信息:开发工具推荐使用 ItelliJ IDEA。插播广告全网唯...原创 2019-02-24 23:45:39 · 980 阅读 · 0 评论 -
第三篇:DataSetAPI
首先我们来看一下编程结构:编程结构public class SocketTextStreamWordCount { public static void main(String[] args) throws Exception { if (args.length != 2){System.err.println("USAGE:\nSocketTextStreamWordCount &...原创 2019-02-25 23:45:29 · 698 阅读 · 0 评论 -
第四篇:DataStreamAPI
DataStream算子将一个或多个DataStream转换为新DataStream。程序可以将多个转换组合成复杂的数据流拓扑。DataStreamAPI和DataSetAPI主要的区别在于Transformation部分。DataStream TransformationmapDataStream→DataStream用一个数据元生成一个数据元。一个map函数,它将输入流的值加倍:......原创 2019-02-25 23:46:11 · 882 阅读 · 0 评论 -
第五篇:Flink集群部署
部署方式一般来讲有三种方式:LocalStandaloneFlink On Yarn/Mesos/K8s…单机模式参考上一篇Flink从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用Standalone模式部署我们基于CentOS7虚拟机搭建一个3个节点的集群:角色分配:Master: 192.168.246.134Slave: 192.168.2...原创 2019-02-26 23:50:10 · 759 阅读 · 1 评论 -
第六篇:Flink重启策略
概述Flink支持不同的重启策略,以在故障发生时控制作业如何重启集群在启动时会伴随一个默认的重启策略,在没有定义具体重启策略时会使用该默认策略。如果在工作提交时指定了一个重启策略,该策略会覆盖集群的默认策略默认的重启策略可以通过 Flink 的配置文件 flink-conf.yaml 指定。配置参数 restart-strategy 定义了哪个策略被使用。常用的重启:1.......原创 2019-02-27 22:08:32 · 836 阅读 · 0 评论 -
Flink的应用场景和架构模型
声明:本系列博客为原创,最先发表在拉勾教育,其中一部分为免费阅读部分。被读者各种搬运至各大网站。所有其他的来源均为抄袭。《2021年最新版大数据面试题全面开启更新》Flink可以完成数据的实时采集、实时计算和下游发送。一、应用场景1、实时计算Flink 在实时数仓和实时 ETL 中有天然的优势:状态管理,实时数仓里面会进行很多的聚会计算,这些都需要对于状态进行访问和管理,Flink支持强大的状态管理 丰富的API,Flink提供极为丰富的多层底API,包括Stream API.原创 2021-01-17 19:47:54 · 605 阅读 · 0 评论 -
Flink实战系列(一): Flink开发环境准备
声明:本系列博客为原创,是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》1. 工程目录<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schema原创 2021-01-19 18:33:45 · 517 阅读 · 0 评论 -
Flink实战案例实例(二): 如何正确使用 Flink Connector?
声明:本系列博客为原创,是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》本文主要分享 Flink connector 相关内容,分为以下三个部分的内容:第一部分会首先介绍一下 Flink Connector 有哪些。第二部分会重点介绍在生产环境中经常使用的 kafka connector 的基本的原理以及使用方法。第三部分答疑,对社区反馈的问题进行答疑。一.Flink Streaming Connector Flink 是新一代流批统一的计算引原创 2021-01-19 18:48:50 · 946 阅读 · 1 评论 -
Flink实战案例(三): 自定义source
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》工程目录SensorReadingpackage com.atguigu.flink.beancase class SensorReading( id: String, timestamp: Long, timepreture: D原创 2021-01-19 18:46:49 · 689 阅读 · 0 评论 -
Flink实战实例(四): MySQL读写
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》1 工程目录结构pom.xml<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.56</versi原创 2021-01-19 19:11:34 · 1236 阅读 · 0 评论 -
Flink实战案例(五): Flink管理Kafka的消费偏移量
声明:本系列博客为原创,是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》在这篇文章中我们将结合例子逐步讲解 Flink 是如何与 Kafka 工作来确保将 Kafka Topic 中的消息以 Exactly-Once 语义处理。检查点(Checkpoint)是一种能使 Flink 从故障恢复的内部机制。检查点是 Flink 应用程序状态的一致性副本,包括了输入的读取位点。如果发生故障,Flink 通过从检查点加载应用程序状态来恢复应用程序,并从恢复的原创 2021-01-19 19:02:57 · 2982 阅读 · 0 评论 -
Flink实战实例(六): Flink Kafka Connector 与 Exactly Once 剖析
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》Flink Kafka Connector 是 Flink 内置的 Kafka 连接器,它包含了从 Kafka Topic 读入数据的 Flink Kafka Consumer 以及向 Kafka Topic 写出数据的 Flink Kafka Producer,除此之外 Flink Kafa Connector 基于 Flink Checkpoint 机制提供了完善的容错能力。本文从 Fl原创 2021-01-19 19:05:20 · 600 阅读 · 1 评论 -
Flink实战实例(七): flink-kafka-connector之FlinkKafkaConsumer011解析
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》简介在使用flink kafka connector的时候,一般都直接像下面这样直接拷贝模板就拿来用了:Properties properties = new Properties();properties.setProperty("bootstrap.servers", "localhost:9092");properties.setProperty("group.id",原创 2021-01-19 19:19:28 · 2128 阅读 · 0 评论 -
Flink实战实例(八): FlinkKafkaConsumer官网文档翻译以及Flink消费Kafka数据时指定offset的五种方式
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》Flink为Kafka topic读取和写入数据提供了特殊的Kafka连接器。Flink Kafka消费者与Flink的检查点机制集成可以保证下游的exactly-once语义。为了实现这一点,Flink并不完全依赖Kafka自身维护的消费者组offset,而是在Flink内部管理这些offset。从Flink 1.7开始,Flink提供了一个新的通用的Kafka连接器,它不再绑定特定原创 2021-01-19 19:32:11 · 897 阅读 · 0 评论 -
Flink实战实例(九): Kafka 读写实现
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》1 工程目录结构2 flink 读取Kafkapackage com.atguigu.day8import java.util.Propertiesimport org.apache.flink.streaming.api.scala._import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsum.原创 2021-01-19 19:36:50 · 1008 阅读 · 1 评论 -
Flink实战实例(十): redis 读写
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》1 工程目录pom.xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <...原创 2021-01-19 19:41:18 · 2755 阅读 · 1 评论 -
Flink实战实例(十一): hbase 读写
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》1 工程目录pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...原创 2021-01-20 13:16:18 · 1324 阅读 · 0 评论 -
Flink实战案例(十二):elasticsearch 写 入
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》1 工程目录pom.xml <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-elasticsearch6_2.11</artifactId> .原创 2021-01-20 13:19:25 · 460 阅读 · 0 评论 -
Flink实战案例(十三):Flink DataStream 八大分区策略与自定义分区器
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》分区策略决定了一条数据如何发送给下游。Flink中默认提供了八大分区策略(也叫分区器)。本文基于Flink 1.9.0总结Flink DataStream中的八大分区策略以及手动实现一个自定义分区器。八大分区策略继承关系图ChannelSelector: 接口,决定将记录写入哪个Channel。有3个方法:void setup(int numberOfChannels):原创 2021-01-20 13:24:24 · 910 阅读 · 0 评论 -
Flink实战案例(十四):Flink的重启策略
Flink的重启策略Flink支持不同的重启策略,这些重启策略控制着job失败后如何重启。集群可以通过默认的重启策略来重启,这个默认的重启策略通常在未指定重启策略的情况下使用,而如果Job提交的时候指定了重启策略,这个重启策略就会覆盖掉集群的默认重启策略。概览默认的重启策略是通过Flink的flink-conf.yaml来指定的,这个配置参数restart-strategy定义了哪种策略会被采用。如果checkpoint未启动,就会采用no restart策略,如果启动了checkpoin...转载 2021-01-20 13:33:51 · 947 阅读 · 0 评论 -
Flink实战案例(十五):Flink的分布式缓存
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》分布式缓存 Flink提供了一个分布式缓存,类似于hadoop,可以使用户在并行函数中很方便的读取本地文件,并把它放在taskmanager节点中,防止task重复拉取。 此缓存的工作机制如下:程序注册一个文件或者目录(本地或者远程文件系统,例如hdfs或者s3),通过ExecutionEnvironment注册缓存文件并为它起一个名称。 当程序执行,Flink自动将文件或者目原创 2021-01-20 13:35:32 · 1287 阅读 · 1 评论 -
Flink实战案例(十六):Flink 异步IO 简介
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》1 Aysnc I/O是啥?Async I/O 是阿里巴巴贡献给社区的一个呼声非常高的特性,于1.2版本引入。主要目的:是为了解决与外部系统交互时网络延迟成为了系统瓶颈的问题。场景:流计算系统中经常需要与外部系统进行交互,比如需要查询外部数据库以关联上用户的额外信息。通常,我们的实现方式是向数据库发送用户a的查询请求(例如在MapFunction中),然后等待结果返回,在..原创 2021-01-20 13:36:18 · 539 阅读 · 0 评论 -
Flink实战案例(十七):Flink 异步IO (二)原理
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》1 原理实现AsyncDataStream.(un)orderedWait方法的主要工作就是创建了一个AsyncWaitOperator。AsyncWaitOperator是支持异步 IO 访问的算子实现,该算子会运行AsyncFunction并处理异步返回的结果,其内部原理如下图所示: 如图所示,AsyncWaitOperator主要由两部分组成:Str......原创 2021-01-20 13:37:10 · 541 阅读 · 0 评论 -
Flink实例(十八):Flink 异步IO (三)实例 (一)
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》生成6条数据,从0开始递增的6个数字。模拟异步查询之后,加上时间戳输出public class AsyncIODemo { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.ge原创 2021-01-20 13:39:27 · 439 阅读 · 0 评论 -
Flink实例(十九):Flink 异步IO (四)实例 (二) MySQL
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》业务如下:接收kafka数据,转为user对象,调用async,使用user.id 查询对应的phone,放回user对象,输出主类:import com.alibaba.fastjson.JSON;import com.venn.common.Common;import org.apache.flink.formats.json.JsonNodeDeserializa.原创 2021-01-20 13:42:12 · 575 阅读 · 0 评论 -
Flink实战案例(二十):自定义时间和窗口的操作符(一)KeyedProcessFunction
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》前言在Flink中比如某些算子(join,coGroup,keyBy,groupBy)要求在数据元上定义key。另外有些算子操作,例如reduce,groupReduce,Aggregate,Windows需要数据在处理之前根据key进行分组。在Flink中数据模型不是基于Key,Value格式处理的,因此不需将数据处理成键值对的格式,key是“虚拟的”,可以人为的来指定,实际数据处原创 2021-01-20 13:43:16 · 563 阅读 · 0 评论 -
Flink实战案例(二十一):自定义时间和窗口的操作符(二)KeyedProcessFunction(二)
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》KeyedProcessFunction KeyedProcessFunction用来操作KeyedStream。KeyedProcessFunction会处理流的每一个元素,输出为0个、1个或者多个元素。所有的Process Function都继承自RichFunction接口,所以都有open()、close()和getRuntimeContext()等方法。而KeyedProce原创 2021-01-21 12:42:01 · 715 阅读 · 0 评论 -
Flink实战案例(二十二):自定义时间和窗口的操作符(三)CoProcessFunction
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》CoProcessFunction 对于两条输入流,DataStream API提供了CoProcessFunction这样的low-level操作。CoProcessFunction提供了操作每一个输入流的方法: processElement1()和processElement2()。 类似于ProcessFunction,这两种方法都通过Context对象来调用。这个Cont原创 2021-01-21 12:43:50 · 704 阅读 · 0 评论 -
Flink实战案例(二十三):自定义时间和窗口的操作符(四)window functions之增量聚合函数(一)ReduceFunction
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》实例一例子: 计算每个传感器15s窗口中的温度最小值val minTempPerWindow = sensorData .map(r => (r.id, r.temperature)) .keyBy(_._1) .timeWindow(Time.seconds(15)) .reduce((r1, r2) => (r1._1, r1._2.min(r2._原创 2021-01-21 12:47:52 · 624 阅读 · 0 评论 -
Flink实战案例(二十四):自定义时间和窗口的操作符(五)window functions之增量聚合函数(二)AggregateFunction
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》AggregateFunction(主要用于增量计算)// 测试数据: 某个用户在某个时刻浏览了某个商品,以及商品的价值// {"userID": "user_4", "eventTime": "2019-11-09 10:41:32", "eventType": "browse", "productID": "product_1", "productPrice": 10}//原创 2021-01-21 12:51:55 · 651 阅读 · 0 评论 -
Flink实战案例(二十五):自定义时间和窗口的操作符(六)window functions之全窗口函数 ProcessWindowFunction
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》ProcessWindowFunction 一些业务场景,我们需要收集窗口内所有的数据进行计算,例如计算窗口数据的中位数,或者计算窗口数据中出现频率最高的值。这样的需求,使用ReduceFunction和AggregateFunction就无法实现了。这个时候就需要ProcessWindowFunction了。先来看接口定义public abstract class Proc原创 2021-01-21 12:54:52 · 1093 阅读 · 0 评论 -
Flink实战案例(二十六):自定义时间和窗口的操作符(七)window functions 增量聚合函数与全窗口函数结合
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》我们还可以将ReduceFunction/AggregateFunction和ProcessWindowFunction结合起来使用。ReduceFunction/AggregateFunction做增量聚合,ProcessWindowFunction提供更多的对数据流的访问权限。如果只使用ProcessWindowFunction(底层的实现为将事件都保存在ListState中),将会非常原创 2021-01-21 12:57:00 · 777 阅读 · 1 评论 -
Flink实战案例(二十七):自定义时间和窗口的操作符(八)窗口操作符(一)窗口分配器(window assigners)
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》窗口分配的概念窗口分配程序(Window Assigners)定义如何将元素分配给窗口。通过window(...) (for keyed streams)或windowAll()for non-keyed streams)指定需要的WindowAssigner。WindowAssigner负责将每个传入元素分配给一个或多个窗口。Flink为最常见的用例提供了预定义的窗口分.原创 2021-01-21 12:58:56 · 655 阅读 · 0 评论 -
Flink实战案例(二十八):自定义时间和窗口的操作符(九)窗口操作符(二)触发器(Triggers)
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》触发器定义了window何时会被求值以及何时发送求值结果。触发器可以到了特定的时间触发也可以碰到特定的事件触发。例如:观察到事件数量符合一定条件或者观察到了特定的事件。默认的触发器将会在两种情况下触发处理时间:机器时间到达处理时间 事件时间:水位线超过了窗口的结束时间 触发器可以访问流的时间属性以及定时器,还可以对state状态编程。所以触发器和process function原创 2021-01-21 13:01:33 · 521 阅读 · 0 评论 -
Flink实战案例(二十九):自定义时间和窗口的操作符(十)窗口操作符(三)清理器(EVICTORS)
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》evictor可以在window function求值之前或者之后移除窗口中的元素。我们看一下Evictor的接口定义:public interface Evictor<T, W extends Window> extends Serializable { void evictBefore( Iterable<TimestampedValue&原创 2021-01-21 13:11:17 · 411 阅读 · 0 评论 -
Flink实战案例(三十):状态管理(一)概述
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》1. 状态管理Flink中的状态A. 算子状态(Operatior State) B. 键控状态(Keyed State) 状态后端(State Backends) --用作状态管理流式处理(A. 可以是无状态(基于某个独立的事件计算出来后直接输出了,来一个处理一个不涉及到其他东西,如map、flatmap、filter;超过一定温度就报警 - 侧输出流;)、 ....原创 2021-01-21 13:12:23 · 499 阅读 · 0 评论 -
Flink实战案例(三十一):状态管理(二)自定义键控状态(一)ValueState
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》ValueState[T]保存单个的值,值的类型为T。get操作: ValueState.value() set操作: ValueState.update(value: T)实例一scala versionval sensorData: DataStream[SensorReading] = ...val keyedData: KeyedStream[SensorR.原创 2021-01-21 13:14:08 · 845 阅读 · 0 评论 -
Flink实战案例(三十二):状态管理(三)自定义键控状态(二)ListState
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》ListState[T]保存一个列表,列表里的元素的数据类型为T。基本操作如下:ListState.add(value: T) ListState.addAll(values: java.util.List[T]) ListState.get()返回Iterable[T] ListState.update(values: java.util.List[T]) ListState原创 2021-01-21 13:15:25 · 969 阅读 · 0 评论 -
Flink实战案例(三十三):状态管理(四)自定义键控状态(三)MapState
声明:本系列博客是根据SGG的视频整理而成,非常适合大家入门学习。《2021年最新版大数据面试题全面开启更新》MapState[K, V]保存Key-Value对。MapState.get(key: K) MapState.put(key: K, value: V) MapState.contains(key: K) MapState.remove(key: K)实例一: 去重计算应该是数据分析业务里面常见的指标计算,例如网站一天的访问用户数、广告的点击用户数等等,离线计算是.原创 2021-01-21 13:17:09 · 1545 阅读 · 0 评论