摘要: Redis Redis 概述: Redis是一种NoSQL非关系型内存数据库,数据没有预定义模式,都是KV值,没有声明性查询语言,基于乐观锁的松散事务控制。 支持多种数据结构,内置复制、LUA脚本、LRU驱动时间、事务、和不同级别的磁盘持久化,并通过哨兵和自动分区提供高可用。 应用场景: 缓存:将数 阅读全文
posted @ 2021-06-03 20:42 yuexiuping 阅读(44) 评论(0) 推荐(0) 编辑
摘要: Flink CEP CEP 复杂事件处理: 根据事件时间的时序关系和聚合关系定制检测规则,持续的从事件流中查询出符合需求的事件序列,分析后得到更复杂的复合事件。 说明: 1.CEP是支持事件乱序的,根据事件时间和WaterMark来判断数据的顺序。 2.Spark内部没有集成CEP,但是有解决方案, 阅读全文
posted @ 2021-06-01 18:28 yuexiuping 阅读(678) 评论(0) 推荐(0) 编辑
摘要: Flink 容错机制 状态的一致性: 故障处理成功之后恢复的数据与之前的数据相比的正确程度。 一致性级别: 'at-most-once'>最多一次,恢复之后可能会数据丢失。 'at-least-once'>至少一次,恢复之后可能会重复计算。 'exactly-once'>精准一次,故障后得到的计数结 阅读全文
posted @ 2021-06-01 16:46 yuexiuping 阅读(304) 评论(0) 推荐(0) 编辑
摘要: Flink 状态 Flink状态: 状态可以是历史结果,也可以是存储的数据,归根揭底是保存的内容就是状态。 流式计算分为有状态的和无状态的: 无状态的流处理:观察每个独立的事件,并根据最后一个事件的结果进行输出。 有状态的流处理:基于多个事件输出结果。流与流之间的关联操作、流与静态表或动态表之间的关 阅读全文
posted @ 2021-06-01 16:10 yuexiuping 阅读(179) 评论(0) 推荐(0) 编辑
摘要: Flink 窗口机制 窗口概述: 窗口是Flink用来处理无界流的核心,窗口将流切成有界的桶,之后就可以在bucket基础上对数据计算。所以窗口的单位是桶。 为什么要使用窗口? 流式处理中数据都是源源不断的来,不可能等到所有数据都到了之后才开始计算,而我们可以定义一个时间段这个间隔内的数据进行计算, 阅读全文
posted @ 2021-06-01 16:01 yuexiuping 阅读(938) 评论(0) 推荐(1) 编辑
摘要: Flink 函数与算子 富函数: Flink的每个算子都有对应的富函数,该函数中有更多的方法,如生命周期管理方法open()、close()。运行时上下文RuntimeContext可以用来获取环境变量、状态(累加器、计数器...等很多)。 说明:如果是读文件每个并行实例为了确保不是异常退出而是文件 阅读全文
posted @ 2021-06-01 15:46 yuexiuping 阅读(708) 评论(0) 推荐(0) 编辑
摘要: Flink Flink 概述: Flink 是为分布式、高性能、随时可用以及准确的流处理应用框架,用于对无界和有界数据流进行有状态计算,并且以内存执行速度和任意规模来执行计算,在保证'exactly-once'的同时具有低延迟、高吞吐的处理能力。 Flink 特点: 基于事件驱动:是有状态的事件驱动 阅读全文
posted @ 2021-06-01 15:34 yuexiuping 阅读(240) 评论(0) 推荐(0) 编辑
摘要: Spark 数据倾斜 数据倾斜的表现: 大部分的task都迅速完成,只有少数几个task运行非常慢,或者在运行过程中报OOM,反复执行几次都是OOM。 数据过量: 由于数据量较大而导致的整体任务运行缓慢,这种情况只需要增加资源即可。 造成数据倾斜的原因: 使用了具有shuffle的算子、数据本身就存 阅读全文
posted @ 2021-05-31 17:14 yuexiuping 阅读(382) 评论(0) 推荐(0) 编辑
摘要: Spark 优化 一、常规性能调优: 1. 最优资源配置: 在一定范围内,增加资源分配,合理的增加服务器数量、增加内存。 Driver内存:增加Driver内存的影响不是特别大,只有少部分数据会在Driver端执行。 Executor数量:可以增大Task的并行度。 Executor内存: <1>可 阅读全文
posted @ 2021-05-31 17:02 yuexiuping 阅读(81) 评论(0) 推荐(0) 编辑
摘要: Spark 源码解析 基于YarnCluster模式的任务提交流程: 通过spark-Submit命令脚本提交参数,声明部署模式、运行模式、全类名、Jar包、输入输出路径等,之后脚本启动执行。 脚本运行后会启动SparkSubmit进程,SparkSubmit启动之后会先解析命令行参数,之后会创建一 阅读全文
posted @ 2021-05-31 16:43 yuexiuping 阅读(167) 评论(0) 推荐(0) 编辑