自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 问答 (2)
  • 收藏
  • 关注

原创 DataX 3.0 源码解析(一)

DataX 3.0 源码解析(一)基本调用类分析任务启动由python脚本新建进程进行任务执行,后续执行由Java进行,以下将对java部分进行分其中的调用原理机制。Engine首先入口类为com.alibaba.datax.core.Engine的main方法,其中通过调用其本身的静态方法entry,该方法主要针对输入参入进行格式化以及校验:BasicParser parser = new BasicParser();CommandLine cl = parser.parse(option

2022-02-17 16:25:40 632

原创 flink往mongo塞数据

mongo里塞数据,存在这个热点缓存问题。ip映射域名、有可能发http请求获取。这种是一对多。直接在mongo查。这种是一对一.spark streaming foreachpartition 几千/s;以下是我的改造方案, 可以试试这套flink任务1: mongo oplog —>hbase —>删redis缓存flink任务2 : 消费主流 查habse redis做缓存 如果主流是日志数据还得加flink状态缓存异步IO 一定程度上可以解决这种维表关联的问题 但是

2022-01-11 21:56:40 619

原创 kafka如何保证数据不丢失?ack设置为 all和-1

kafka如何保证数据不丢失?不要使用 producer.send(msg),而要使用 producer.send(msg, callback)。设置 acks 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表

2021-06-28 22:59:28 1088

原创 Flink SQL一个案例

Flink Table & SQL 概述背景Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准 SQL 语义的开发语言。DataStream 和 DataSet 两套 API,并没有做到事实上的批流统一,因为用户还是使用了2套API。正是​因为 Flink Table & SQL 的加入,可以说 Flink 在某种程度上做到了事实上的批流一体。原理1、上图是一张经典的 Flink Table & SQL 实现原理图,

2021-06-25 17:29:21 785 1

原创 Spark DataSource API

什么是Spark Datasource APISpark Datasource API 是一套连接外部数据源和Spark引擎的框架它主要是给Spark框架提供一种快速读取外界数据的能力,它可以方便地把不同的数据格式通过DataSource API注册成Spark的表,然后通过Spark SQL直接读取。它可以充分利用Spark分布式的优点进行并发读取,而且SparkSQL本身有一个很好的Catalyst优化引擎,能够极大的加快任务的执行。Spark Datasource API 同时提供了一套优化机制

2020-12-14 23:36:18 471

原创 TiDB适用场景和不适用场景

TiDB 的典型的应用场景是:(1) 原业务的 MySQL 的业务遇到单机容量或者性能瓶颈时,可以考虑使用 TiDB 无缝替换 MySQL。TiDB 可以提供如下特性:吞吐量、存储和计算能力的水平扩展水平伸缩时不停服务强一致性分布式 ACID 事务(2) 大数据量下,MySQL 复杂查询很慢。(3) 大数据量下,数据增长很快,接近单机处理的极限,不想分库分表或者使用数据库中间件等对业务侵入性较大、对业务有约束的 Sharding 方案。(4) 大数据量下,有高并发实时写入、实时查询、实时统

2020-12-13 17:37:20 1190

原创 HBase常见热点问题及几种解决方案

Hbase 热点问题?当我们没有提前创建分区的时候,只有一个region,默认rowkey是递增的往大的region写数据,无法发挥集群写的优点,那之前的region有的未达到饱和状态,就浪费了。数据分布不均。例如:Keys:[2-4]一直往rs1写数据,没有向其他的rs写,就会出现热点问题就出现了热点的问题什么是热点产生原因1、没有提前创建分区,Hbase 创建表默认只有一个分区2、Rowkey设计不合理只有一个regionserver,然后所有的rowkey都往该regi

2020-12-12 21:52:05 2447

原创 费曼、SQ3R、西蒙、 记忆、框架等学习法

1.快速学习法-费曼学习法学习金字塔一个叫Scott H. Young的人,在 12 个月内自学完成 4 年麻省理工学院计算机科学的 33 门课程。据称他采用了所谓超速学习理论和方法,即《费曼技巧》,也称之为《费曼学习法》。理查德·菲利普斯·费曼(RichardPhilips Feynman),美国犹太裔理论物理学家,量子电动力学创始人之一,纳米技术之父,1965年获得诺贝尔物理学奖。费曼同时也是加州理工学院最受欢迎的教师之一。《费曼物理学讲义》至今还在被大学生们使用。费曼非常热爱自己的教师角色,他

2020-12-12 19:58:20 1706

原创 《如何高效学习》思维导图

《如何高效学习》一丶概述《如何高效学习》,微信读书综合评分8.6分二丶思维导图整理三丶微信读书热评书中的干货:(一)整体性学习的概念:整体性学习就是创建你心中的知识网络,描绘你心中的知识地图。这幅你知识网络图可以将知识与知识串联起来,加深你对知识点的理解,把单纯的记忆知识转化为理解知识驾驭知识。(二)整体性学习的三个要素:1.结构:有联系的知识点。2.模型:结构的核心,结构的种子。比如:书是结构,模型就是书的目录。创建模型是为了便于知识储存。3.高速公路:串联不同学科知识,加深对知识

2020-12-12 19:44:59 1452

原创 关于学习观

为什么有人可以快速掌握一项知识,你却题海战术,为什么有人可以迅速找到解决方案,你却大脑空白bilibili.com/video/BV11t41127zA

2020-12-12 19:31:02 129

原创 flink源码阅读-Flink intervalJoin 应用和原理

1.Flink中基于DataStream的join,只能实现在同一个窗口的两个数据流进行join,但是在实际中常常会存在数据乱序或者延时的情况,导致两个流的数据进度不一致,就会出现数据跨窗口的情况,那么数据就无法在同一个窗口内join。Flink基于KeyedStream提供的interval join机制,intervaljoin 连接两个keyedStream, 按照相同的key在一个相对数据时间的时间段内进行连接。2.代码示例将订单流与订单品流通过订单id进行关联,获得订单流中的会员id。其中

2020-12-12 18:51:19 507 1

原创 Flink 1.12 Release 文档

本文的 Release 文档描述了在 Flink 1.11 和 Flink 1.12 之间更改的重要方面,例如配置,行为或依赖项。如果您打算将 Flink 版本升级到 1.12,请仔细阅读这些说明。API移除掉 ExecutionConfig 中过期的方法移除掉了 ExecutionConfig#isLatencyTrackingEnabled 方法, 你可以使用 ExecutionConfig#getLatencyTrackingInterval 方法代替.移除掉了 ExecutionConfig

2020-12-11 23:19:39 924

原创 Elastic Search不停机重建索引-修改映射类型

我们在使用ES的时候,尤其是初学者,通常都会遇到一个问题,那就是文档字段的映射类型创建错误问题,但是ES上却不能像mysql一样直接去修改字段类型,这时便出现了这个棘手的问题,今天让我们用一种索引重建的方式来修改字段映射类型,本文使用的ES是5.6.3版本。前提使用索引重建并且不停机,需要有个前提,那就是你在使用索引时,都是使用索引别名而不是使用真正的索引名,如果这点在你的程序上还没有做的话,那么请为其建立别名,好处很多,一旦当前索引出现了什么问题 不能及时恢复,你可以紧急切换到备用索引上而无需再重启

2020-12-10 21:12:30 423

原创 GitHub下载速度慢?这个方法可以解决

提高Github下载速度方法的目录一、 通过码云转接提高仓库下载速度1.1 操作前的准备1.2 导入远程仓库1.2.1 导入方法一1.2.2 导入方法二二、 提高子模块的下载速度2.1 操作思路2.1.1 问题描述2.1.2 解决方法三、 重新关联GitHub远程仓库一、 通过码云转接提高仓库下载速度简介:利用Gitee(码云)这个开源中国提供的代码仓库来转接,以此提高Github上项目的下载速度。1.1 操作前的准备操作前需要准备好 Gitee 和 Github 的账号,这两者

2020-12-09 00:14:33 516

原创 Flink+TensorFlow打造实时智能异常检测平台

Flink大数据流式计算1.前言随着互联网的迅速发展,各个公司都建立了自己的监控体系,用于提前发现问题降低损失,携程亦是如此。然而携程的监控体系存在以下三个问题:Flink 已经渐渐成为实时计算引擎的首选之一,从简单的实时 ETL 到复杂的 CEP 场景,Flink 都能够很好地驾驭。本文整理自携程实时计算负责人潘国庆在 QCon 全球软件开发大会(北京站)2019 的演讲,他介绍了携程如何基于 Flink 与 TensorFlow 构建实时智能异常检测平台,以解决规则告警系统准确率低、时效性低、规则

2020-12-08 23:53:10 1028

原创 Flink 如何选择状态后端

本文我们将深入探讨有状态的流处理,更确切地说是 Apache Flink 中不同的状态后端(state backend)。在以下部分,我们将介绍 Apache Flink 的 3 种状态后端,它们的局限性以及根据具体案例需求选择最合适的状态后端。在有状态的流处理中,当开发人员启用了 Flink 中的 checkpoint 机制,那么状态将会持久化以防止数据的丢失并确保发生故障时能够完全恢复。选择何种状态后端,将决定状态持久化的方式和位置。Flink 提供了三种可用的状态后端:MemoryStateBac

2020-12-07 23:13:31 551

原创 Flink维度关联的思路分析

在实际生产中,我们经常会有这样的需求,需要以原始数据流作为基础,然后关联大量的外部表来补充一些属性。例如,我们在订单数据中,希望能得到订单收货人所在省的名称,一般来说订单中会记录一个省的 ID,那么需要根据 ID 去查询外部的维度表补充省名称属性。在 Flink 流式计算中,我们的一些维度属性一般存储在 MySQL/HBase/Redis 中,这些维表数据存在定时更新,需要我们根据业务进行关联。根据我们业务对维表数据关联的时效性要求,有以下几种解决方案:实时查询维表关联预加载维表关联热存储关联其他

2020-12-06 12:18:26 886

原创 机器学习的知识点

一、常用语言R语言 (S语言 源于统计,数据探索、统计分析、作图的解释型语言。)www.r-project.orgPython (瑞士军刀、通用语言、爬虫、网站、 shell)NumPy SciPy MatplotlibMatlab 矩阵实验室WEKA 机器学习与数据挖掘 JAVA环境 图形界面 (hadroop大数据迁移)二、主要方法回归预测以及相应的降维技术:线性回归、logistics回归、主成分分析、因子分析、岭回归、LASO分类器:决策树、朴素贝叶斯、贝叶斯信念网络、

2020-12-02 22:58:18 132

转载 张钹:人工智能技术已进入第三代

原文编注:近日,中科院院士、清华大学人工智能研究院院长张钹教授接受记者采访时认为,目前基于深度学习的人工智能在技术上已经触及天花板。从长远来看,必须得走人类智能这条路,最终要发展人机协同,人类和机器和谐共处的世界。未来需要建立可解释、鲁棒性的人工智能理论和方法,发展安全、可靠和可信的人工智能技术。张钹院士:AI奇迹短期难再现 深度学习技术潜力已近天花板在Alphago与韩国围棋选手李世石对战获胜三年过后,一些迹象逐渐显现,张钹院士认为到了一个合适的时点,并接受了此次的专访。深度学习目前人工智能最受关

2020-12-02 22:45:19 262

原创 Flink 源码解析(十一)Credit以及背压问题

Credit漫谈在看上一部分的代码时,有一个小细节不知道读者有没有注意到,我们的数据发送端的代码叫做PartittionRequesetQueue.java,而我们的接收端却起了一个完全不相干的名字:CreditBasedPartitionRequestClientHandler.java。为什么前面加了CreditBased的前缀呢?1 背压问题在流模型中,我们期待数据是像水流一样平滑的流过我们的引擎,但现实生活不会这么美好。数据的上游可能因为各种原因数据量暴增,远远超出了下游的瞬时处理能力(回忆一

2020-12-02 22:24:25 799

原创 Kafka与RocketMQ性能对比

Kafka 搭建的日志集群单个Topic可以达到几百万的TPS,而使用RocketMQ组件的核心业务集群,集群TPS只能达到几十万TPS。温馨提示:TPS只是众多性能指标中的一个,我们在做技术选型方面要从多方面考虑,本文并不打算就消息中间件选型方面投入太多笔墨,重点想尝试剖析两者在性能方面的设计思想。1、文件布局1.1 Kafka 文件布局Kafka 文件在宏观上的布局如下图所示:正如上图所示,Kafka 文件布局的主要特征如下:文件的组织以 topic + 分区进行组织,每一个 topic

2020-12-02 00:06:50 428

原创 Flink 源码解析(十)数据在各个task之间exchange的过程

数据流转过程上一节讲了各层数据的抽象,这一节讲讲数据在各个task之间exchange的过程。1 整体过程看这张图:第一步必然是准备一个ResultPartition;通知JobMaster;JobMaster通知下游节点;如果下游节点尚未部署,则部署之;下游节点向上游请求数据开始传输数据.2 数据跨task传递本节讲一下算子之间具体的数据传输过程。也先上一张图:image_1cfmpba9v15anggtvsba2o1277m.png-357.5kB数据在task之间传递有如下几

2020-12-01 23:32:36 396

原创 Flink 源码解析(九)数据流转——Flink的数据抽象及数据交换过程

数据流转——Flink的数据抽象及数据交换过程本章打算讲一下flink底层是如何定义和在操作符之间传递数据的。1.1 flink的数据抽象1.1.1 MemorySegmentFlink作为一个高效的流框架,为了避免JVM的固有缺陷(java对象存储密度低,FGC影响吞吐和响应等),必然走上自主管理内存的道路。这个MemorySegment就是Flink的内存抽象。默认情况下,一个MemorySegment可以被看做是一个32kb大的内存块的抽象。这块内存既可以是JVM里的一个byte[],也可以

2020-11-30 22:28:15 810

原创 数据仓库-拉链表, 流水表, 全量表, 增量表, 切片表

数据仓库-拉链表, 流水表, 全量表, 增量表, 切片表1 增量表1.1 概念增量表:新增数据,增量数据是上次导出之后的新数据。比如说,从24号到25号新增了那些数据,改变了哪些数据,这些都会存储在增量表的25号分区里面。记录每次增加的量,而不是总量;增量表,只报变化量,无变化不用报每天一个分区1.2 例子注:因为数仓都是T+1的,所以7号的数据是8号加工出来的加工逻辑:1.根据修改时间,把修改时间等于昨天(即7号)的数据抽取到ods层wedw_ods.test_user_info

2020-11-29 11:46:38 7810 3

原创 CSDN专属idea插件上线

插件主要功能:json格式化时间格式化ip查询计算器CSDN平台搜索github仓库搜索maven仓库依赖搜索常用文档检索单词翻译看新闻代码查询二维码生成2.安装方法1.插件本地安装先下载tools的zip安装包idea-tools下载地址在File–>Settings–>Plugins中点击设置图标选择本地磁盘安装,选中下载好的zip包!zip包!zip包!点击安装即可2.通过idea的应用商店Marketplace安装(插件已在应用商店发布,后期新版本会同

2020-11-29 11:22:58 187 2

原创 IntelliJ IDEA 常用插件插件的安装及使用方法

首先,进入插件安装界面:Mac:IntelliJ IDEA -> Preferences -> Plugins;Windows:File -> Settings -> Plugins.plugins标注 1:显示 IntelliJ IDEA 的插件分类,All plugins:显示 IntelliJ IDEA 支持的所有插件;Enabled:显示当前以前启用的插件;Disabled:显示当前未启用的插件;Bundled:显示 IntelliJ IDEA 所有自带的插

2020-11-29 11:00:46 1356

原创 Flink 源码解析(八)checkpoint的生命周期

checkpoint的生命周期1.1我们结合源码来看看flink的checkpoint到底是如何实现其生命周期的:由于flink提供的SocketSource并不支持checkpoint,所以这里我以FlinkKafkaConsumer010作为sourceFunction。1.2.1 触发checkpoint要完成一次checkpoint,第一步必然是发起checkpoint请求。那么,这个请求是哪里发出的,怎么发出的,又由谁控制呢?还记得如果我们要设置checkpoint的话,需要指定chec

2020-11-29 09:15:43 531

原创 基于 Flink 的实时数仓建设实践(二)

实时平台初期架构在实时数据系统建设初期,由于对实时数据的需求较少,形成不了完整的数据体系。我们采用的是“一路到底”的开发模式:通过在实时计算平台上部署 Storm 作业处理实时数据队列来提取数据指标,直接推送到实时应用服务中。图1 初期实时数据架构但是,随着产品和业务人员对实时数据需求的不断增多,新的挑战也随之发生。数据指标越来越多,“烟囱式”的开发导致代码耦合问题严重。需求越来越多,有的需要明细数据,有的需要 OLAP 分析。单一的开发模式难以应付多种需求。缺少完善的监控系统,无法在对业务产

2020-11-28 23:16:08 230

原创 Flink 源码解析(七)Fault Tolerant与保证Exactly-Once语义

1 Fault Tolerant演进之路对于7×24小时不间断运行的流程序来说,要保证fault tolerant是很难的,这不像是离线任务,如果失败了只需要清空已有结果,重新跑一次就可以了。对于流任务,如果要保证能够重新处理已处理过的数据,就要把数据保存下来;而这就面临着几个问题:比如一是保存多久的数据?二是重复计算的数据应该怎么处理,怎么保证幂等性?对于一个流系统,我们有以下希望:最好能做到exactly-once处理延迟越低越好吞吐量越高越好计算模型应当足够简单易用,又具有足够的表达力从

2020-11-28 21:44:42 331

原创 Flink 常见问题总结

Flink 问题总结目录Flink 问题总结作业运行流程Watermark基础原理扩展State基础实践CheckPoint/SavePoint基础配置实践原理扩展Back Pressure基础处理原理扩展语义/exactly-once基础使用原理扩展资源管理Mechine Learning/AI基础作业运行流程新增的 operator 会被 transform 封装,例如 map(udf) -> OneInputTransformation,里面

2020-11-27 23:41:56 2317

原创 Flink 源码解析(六)从数据输入到数据处理 OneInputStreamOperator & AbstractUdfStreamOperator

从数据输入到数据处理——OneInputStreamOperator & AbstractUdfStreamOperatorStreamSource是用来开启整个流的算子,而承接输入数据并进行处理的算子就是OneInputStreamOperator、TwoInputStreamOperator等。整个StreamOperator的继承关系如上图所示(图很大,建议点开放大看)。OneInputStreamOperator这个接口的逻辑很简单:public interface OneInpu

2020-11-27 23:01:12 436

原创 Flink 源码解析 (五)数据源的逻辑——StreamSource与时间模型

StreamOperator的抽象与实现1 数据源的逻辑——StreamSource与时间模型StreamSource抽象了一个数据源,并且指定了一些如何处理数据的模式。public class StreamSource<OUT, SRC extends SourceFunction<OUT>> extends AbstractUdfStreamOperator<OUT, SRC> implements StreamOperator<OUT&g

2020-11-27 13:14:21 482

原创 Flink 源码解析 Standalone Session Cluster 启动流程深度分析之 Job Manager 启动(四)

1.任务的调度与执行关于flink的任务执行架构,官网的这两张图就是最好的说明:Flink 集群启动后,首先会启动一个 JobManger 和多个的 TaskManager。用户的代码会由JobClient 提交给 JobManager,JobManager 再把来自不同用户的任务发给 不同的TaskManager 去执行,每个TaskManager管理着多个task,task是执行计算的最小结构, TaskManager 将心跳和统计信息汇报给 JobManager。TaskManager 之间以流

2020-11-27 00:06:03 577 1

原创 flink实时数仓项目(一)

实时数仓的整体架构

2020-11-26 21:52:53 281

原创 Flink Forward k8s相关(1)--Flink部署方式

Container technology experiences an ever increasing adoption throughout many industries. Not only does this technology make your applications portable across different machines and operating systems, it also allows to scale applications in a matter of seco

2020-11-26 19:37:47 267

原创 flink-1.11-StandaloneSession模式源码解读之(三)

start-cluster.sh我们先来看看start-cluster.sh这个脚本```bin=`dirname "$0"`bin=`cd "$bin"; pwd`# 先调用config.sh读取配置文件. "$bin"/config.sh# Start the JobManager instance(s)# 启动JobManager,分为HA模式和单机模式shopt -s nocasematch# 这里的HIGH_AVAILABILITY就是flink.yaml中配置的high-

2020-11-25 23:38:33 294

原创 数据结构与算法书籍从入门到精通分类

数据结构与算法书籍推荐学习数据结构与算法,还是很有必要看几本相关的书籍,但根据不同基础的人,合适看的书也不一样,因此,针对不同层次、不同语言的人,推荐几本市面上口碑不错的书。入门级针对刚入门的同学,建议不要急着去看那些经典书,像《算法导论》、《算法》这些比较经典、权威的书。虽然书很好,但看起来很费劲,如果看不完,效果会很不好。所以建议先看两本入门级的趣味书:《大话数据结构》《算法图解》大话数据结构将理论讲的很有趣,不枯燥。作者结合生活中的例子去对每个数据结构和算法进行讲解,让人通俗易懂。

2020-11-25 23:21:45 206

原创 关于九种排序算法解析

注意: 快速排序是排序大数组的最常用算法下表是各个排序算法的比较说明插入排序:是一个对少量元素进行排序的有效算法。实现比较简单。时间复杂度:O(n^2),空间复杂度:O(1)。是稳定的排序方法。void InsertionSort(int *a,int n){ int temp; for(int i = 1;i < n;++i) { temp = *(a + i); int j = i - 1; while(j &gt

2020-11-25 23:08:06 102

原创 Flink 状态(State)在推荐场景中的应用

导语Flink 提供了灵活丰富的状态管理,可轻松解决数据之间的关联性。本文介绍了Flink 状态(State)管理在推荐场景中的应用,大家结合自己的应用场景与业务逻辑,选择合适的状态管理。背景Flink作为纯流式大数据实时计算引擎,较于Spark Streaming的微批处理引擎,不管是内存管理,多流合并,还是时间窗口,迭代处理上,Flink在实时计算场景更较适合。而Flink的State状态管理,更是让Flink在实时计算领域,更胜一筹。通过对Flink State状态的灵活妙用,可以完美实现大数

2020-11-25 00:12:32 1066

原创 FLINK LOCAL 模式启动过程源码阅读(二)

从StreamExecutionEnvironment跟进去可以看到,实现类里面有个LocalStreamEnvironment,这个就是local模式启动的入口从 StreamExecutionEnvironment.execute() 进去public JobExecutionResult execute() throws Exception { return execute(DEFAULT_JOB_NAME); }public JobExecutionResult execute(Stri

2020-11-24 23:58:38 182

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除