自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 博客地址

Flink - RocksDBStateBackendhttps://yq.aliyun.com/articles/73219/Checkpoint对齐机制源码分析https://blog.csdn.net/u013516966/article/details/104096988

2020-06-29 22:00:56 21

原创 flink维表关联系列之Hbase维表关联:LRU策略

维表关联系列目录:一、维表服务与Flink异步IO二、Mysql维表关联:全量加载三、Hbase维表关联:LRU策略四、Redis维表关联:实时查询五、kafka维表关联:广播方式六、自定义异步查询LRULRU(Least Recently Used),最近最少使用缓存淘汰算法,认为最近访问过的数据在将来被访问的概率也比较大,当内存达到上限去淘汰那些最近访问较少的数据。在Flink中做维表关联时,如果维表的数据比较大,无法一次性全部加载到内存中,而在业务上也允许一定数据的延时,那么就可以

2020-06-30 01:45:39 165

原创 kryo的简单使用

前言:kryo是个高效的java序列化/反序列化库,目前Twitter、yahoo、Apache、strom等等在使用该技术,比如Apache的spark、hive等大数据领域用的较多。为什么使用kryo而不是其他?因为性能足够好。比kyro更高效的序列化库就只有google的protobuf了(而且两者性能很接近),protobuf有个缺点就是要传输的每一个类的结构都要生成对应的proto文件(也可以都放在同一个proto文件中,如果考虑到扩展性的话,不建议放在一个proto文件中),如果某个类发生

2020-06-30 01:44:43 46

原创 Flink通过异步IO实现redis维表join

使用flink做实时数仓的公司越来越多了,浪尖这边也是很早就开发了一个flink 全sql平台来实现实时数仓的功能。说到实时数仓,两个表的概念大家一定会知道的:事实表和维表。在实时数仓中,事实表就是flink消费的kafka的topic数据流,而维表和离线数仓一样,就是mysql等外部存储的维表。当flink 事实表需要 使用维表来进行染色的时候,就需要flink 与维表进行join,这是需要注意与外部系统的通信延迟不会影响流应用程序的整体工作。直接访问外部数据库中的数据,例如在MapFunct

2020-06-30 01:41:57 120

原创 Flink基于RocksDB的增量检查点机制

Flink之所以能够做到高效而准确的有状态流式处理,核心是依赖于检查点(checkpoint)机制。当流式程序运行出现异常时,能够从最近的一个检查点恢复,从而最大限度地保证数据不丢失也不重复。Flink检查点本质上是通过异步屏障快照(asychronous barrier snapshot, ABS)算法产生的全局状态快照,一般是存储在分布式文件系统(如HDFS)上。但是,如果状态空间超大(比如key非常多或者窗口区间很长),检查点数据可能会达到GB甚至TB级别,每次做checkpoint都会非常耗时。

2020-06-30 01:39:43 34

原创 RocksDB介绍

RocksDB简介RocksDB是基于C++语言编写的嵌入式KV存储引擎,它不是一个分布式的DB,而是一个高效、高性能、单点的数据库引擎。它是由Facebook基于Google开源的kv存储LevelDB开发开发。RocksDB使用LSM存储引擎。它针对不同的生产环境进行调优,可以直接使用内存、也可以使用Flash、或者用硬盘或者HDFS。而且支持不同的压缩算法,有一整套的工具用于生产、调试使用。RocksDB是一种嵌入式、KV型、持久化的存储。使用嵌入式的数据存储原因有很多,当数据频繁访问内存、或

2020-06-30 01:33:25 64

原创 Flink - RocksDBStateBackend

如果要考虑易用性和效率,使用rocksDB来替代普通内存的kv是有必要的有了rocksdb,可以range查询,可以支持columnfamily,可以各种压缩但是rocksdb本身是一个库,是跑在RocksDBStateBackend中的所以taskmanager挂掉后,数据还是没了,所以RocksDBStateBackend仍然需要类似HDFS这样的分布式存储来存储snapshotkv state需要由rockdb来管理,这是和内存或file backend最大的不同Abs.

2020-06-30 01:32:09 38

原创 「Flink」RocksDB介绍以及Flink对RocksDB的支持

RocksDB介绍RocksDB简介RocksDB是基于C++语言编写的嵌入式KV存储引擎,它不是一个分布式的DB,而是一个高效、高性能、单点的数据库引擎。它是由Facebook基于Google开源的kv存储LevelDB开发开发。RocksDB使用LSM存储引擎。它针对不同的生产环境进行调优,可以直接使用内存、也可以使用Flash、或者用硬盘或者HDFS。而且支持不同的压缩算法,有一整套的工具用于生产、调试使用。RocksDB是一种嵌入式、KV型、持久化的存储。使用嵌入式的数据存储原因有很多,

2020-06-30 01:30:12 140

原创 Flink调度

从提交来一步一步分析,本文源码基于Apache社区 1.8-release 版本REST提交作业流程:1.集群启动后 通过 /jars/upload 向集群提交可执行jar文件2.通过 /jars/:jarid/run 来启动一个job1.构建并提交JobGraph我们直接找到WebSubmissionExtension这个类,在StandaloneSession 集群模式下集群初始化DispatcherRestEndpoint的时候会从WebSubmissionExtension里加载

2020-06-30 01:28:35 50

原创 Flink分区策略

目前Flink支持8种分区策略:GlobalPartitioner:数据会被分发到下游算子的第一个实例中进行处理。ShufflePartitioner :数据会被随机分发到下游算子的每一个实例中进行。RebalancePartitioner:数据会被循环发送到下游的每一个实例中进行处理。RescalePartitioner :这种分区器会根据上下游算子的并行度,循环的方式输出到下游算子的每个实例。这里有点难以理解,假设上游并行度为 2,编号为 A 和 B。下游并行度为 4,编号为 1,2,3,4..

2020-06-30 01:03:26 141

原创 Flink【优质】面试

一、概念和基础篇1. 简单介绍一下FlinkFlink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任务:DataSet API, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理,支持Java、Scala和Python。DataStream API,对数据流进行流处理操作,将流式的数据抽象成分.

2020-06-30 00:59:04 38

原创 Checkpoint对齐源码分析

checkpoint是保证Flink状态容错的重要机制,通过checkpoint可以实现不同的数据语义,也就是我们所说的Exactly-Once与At-Least-Once,通过不同的checkpoint机制实现不同的数据语义,这里所说的机制表示的是checkpoint对齐机制:对齐,实现Exactly-Once语义,不对齐,实现At-Least-Once语义。官方文档解释:对齐通常发生在需要接受上游多个输入流的操作中,例如keyBy、join等操作,接下来将会从源码角度分析对齐机制的实现。ch

2020-06-29 21:49:05 35

原创 Flink - RocksDBStateBackend

如果要考虑易用性和效率,使用rocksDB来替代普通内存的kv是有必要的有了rocksdb,可以range查询,可以支持columnfamily,可以各种压缩但是rocksdb本身是一个库,是跑在RocksDBStateBackend中的所以taskmanager挂掉后,数据还是没了,所以RocksDBStateBackend仍然需要类似HDFS这样的分布式存储来存储snapshotkv state需要由rockdb来管理,这是和内存或file backend最大的不同Abs.

2020-06-29 21:47:55 72

原创 Flink 广播流 跟 MapState 案例

package com.coder.flink.core.aaa_Use_demo;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import org.apache.flink.api.common.state.*;import org.apache.flink.api.common.typeinfo.Types;import org.apache.flink.api.java.funct...

2020-06-29 21:40:14 172

原创 flink table select sqlnode的生成过程

javacc parsejj 这个需要去calcite去找/** * Parses a leaf SELECT expression without ORDER BY. */SqlSelect SqlSelect() :{ final List<SqlLiteral> keywords = new ArrayList<SqlLiteral>(); final SqlNodeList keywordList; List<SqlNode>

2020-06-27 18:13:58 60

原创 Flink源码-task执行

执行flink 作业的最小执行单元是task示例public class WorldCount { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1); Da...

2020-06-26 02:01:36 66

原创 Flink的TaskManager启动(源码分析)

通过启动脚本已经找到了TaskManager 的启动类org.apache.flink.runtime.taskexecutor.TaskManagerRunner来看一下它的main方法中最后被start了起来start其实是将taskManager 端的RPC服务起起来了看一下TaskManagerRunner的构造方法中调用了这个startTaskManager()方法,在这个方法中又调用了在这个方法中.fromConfiguration()看到创建

2020-06-26 01:59:26 45

原创 朴素贝叶斯 中文垃圾邮件分类

%pylab inlineimport matplotlib.pyplot as pltimport pandas as pdimport stringimport codecsimport osimport jiebafrom sklearn.feature_extraction.text import CountVectorizerfrom wordcloud import WordCloudfrom sklearn import naive_bayes as bayesfrom s

2020-06-25 02:42:15 131

原创 lightgbm案例

import lightgbm as lgbimport pandas as pdfrom sklearn.metrics import mean_squared_errorfrom sklearn.model_selection import GridSearchCVfrom sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklearn.datasets imp

2020-06-25 02:37:47 34

原创 catboost案例

from catboost import CatBoostClassifier# 数据集cat_features = [0, 1] # 类别特征下标train_data = [["a", "b", 1, 4, 5, 6], ["a", "b", 4, 5, 6, 7], ["c", "d", 30, 40, 50, 60]]train_labels = [1, 1, -1]eval_data = [["a", "b", 2, 4, 6,...

2020-06-25 02:35:45 121

原创 xgboost案例

from __future__ import divisionimport numpy as npimport xgboost as xgb# label need to be 0 to num_class -1data = np.loadtxt('/Users/songyx/Desktop/xgb/dermatology.data', delimiter=',', converters={33: lambda x:int(x == '?'), 34: lambda x:int(...

2020-06-25 02:33:38 48

原创 C++中使用SIMD

图7列出了使用SIMD技术的多种方法,我们先按从上至下的顺序简要介绍每一种,然后重点介绍汇编语言方法。图7 使用SIMD技术的多种方法第一种方法是使用著名的IPP库,IPP的全称是Intel Integrated Performance Primitives, 是英特尔公司开发的一套跨平台软件函数库,提供了非常广泛的功能,包括各种常用的图形图像、音视频处理函数。因为其中的很多函数都已经使用SIMD技术做了优化,所以使用这个库是使用SIMD技术的一个快捷途径。通过链接https://soft.

2020-06-24 02:26:10 75 1

原创 PgSQL · 引擎介绍 · 向量化执行引擎简介

摘要本文为大家介绍一下向量化执行引擎的引入原因,前提条件,架构实现以及它能够带来哪些收益。 希望读者能够通过对这篇文章阅读能够对向量化执行引擎的应用特征与架构有一个概要的认识。关键字向量化执行引擎, MonetDB,Tuple, 顺序访问,随机访问, OLAP, MPP,火山模型,列存表,编译执行背景介绍过去的20-30年计算机硬件能力的持续发展,使得计算机的计算能力飞速提升。然后,我们很多的应用却没有做到足够的调整到与硬件能力配套的程度,因此也就不能够充分的将计算机强大的计算能力转换为

2020-06-24 02:23:43 97

原创 向量化与编译执行浅析

向量化执行和编译执行是目前主流的两种数据库执行引擎优化手段,本文从以下几个方面对向量化执行和编译执行进行浅析。一、以当代CPU主要特性为背景,引出数据库执行引擎的主要优化方向。二、分别解析向量化执行和编译执行的原理,并进行对比(结论主要来自2018VLDB论文[1])。三、介绍了以ROF[2]为代表的向量化与编译执行融合的技术。当代CPU特性  了解CPU特性可以让我们真正理解各种数据库执行引擎优化技术的动机。影响数据库执行引擎执行效率的CPU特性主要有以下几点:超标量流水线与乱序执行、分支预

2020-06-24 02:23:13 70

原创 anaconda常用命令

常用操作命令:一、环境操作1.查看环境管理的全部命令帮助:conda env -h2.查看当前系统下的环境:conda info -e3.创建环境:conda create env_name(env_name)是环境名称,这条命令将会给Biopython创建一个新的环境,位置在Anaconda安装文件的/envs/snowflakes创建指定python版本的环境:conda create env_name python=3.6...

2020-06-24 01:10:30 42

原创 anaconda安装xgboost

最近要学习XGB打kaggle比赛,可是网上安装xgboost的教程五花八门,又是镜像,又是VS的~~~~非常绝望,最后之间使用anaconda简单快捷的安装亲测有效:打开anaconda自带的Prompt,输入anaconda search -t conda xgboost在里面找到可以在win64上安装的包的名字,应该是“anaconda py-xgboost”,输入conda install -c anaconda py-xgboost安装的时候提示y/n,输入y回车便会自动

2020-06-24 01:09:34 46

原创 数仓中的全量表,增量表,拉链表,流水表,快照表

预热:我们先从几个物理概念入手理解什么是流量,存量,增量(1)存量:系统在某一时点时的所保有的数量;(2)流量:是指在某一段时间内流入/出系统的数量(3)增量:则是指在某一段时间内系统中保有数量的变化(4)增量=流入量--流出量(5)本期期末存量=上期期末存量+本期内增量正题一般公司只是简单分成 全量表,增量表,和拉链表。所以重点关注如下三个表就OK了。全量表:每天的所有的最新状态的数据。(1)全量表,有无变化,都要报(2)每次上报的数据都是所有的数据(变化的+..

2020-06-23 00:33:30 72

原创 机器学习——几种分类算法的汇总

参考博客:http://www.apachecn.org/map/179.html参考博客写的很全面,也有例子,我这算是转载缩减记录方便自己记忆,有想参考的朋友可以参照原博客学习。分类算法分类:将实例数据划到合适的类别中。标称型:标称型目标变量的结果只在有限目标集中取值,如真与假(标称型目标变量主要用于分类)数值型:数值型目标变量则可以从无限的数值集合中取值,如0.100,42.001等 (数值型目标变量主要用于回归分析)整个开发流程:收集数据——准备数据——分析数据——训练算法——

2020-06-22 09:18:02 106

原创 flink task的执行

TaskManager执行任务当一个任务被JobManager部署到TaskManager之后,它将会被执行。本篇我们将分析任务的执行细节。submitTask方法分析一个任务实例被部署所产生的实际影响就是JobManager会将一个TaskDeploymentDescriptor对象封装在SubmitTask消息中发送给TaskManager。而处理该消息的入口方法是submitTask方法,它是TaskManager接收任务部署并启动任务执行的入口方法,值得我们关注一下它的实现细节。subm

2020-06-21 01:02:34 56

原创 Flink运行时之TaskManager执行Task

TaskManager执行任务当一个任务被JobManager部署到TaskManager之后,它将会被执行。本篇我们将分析任务的执行细节。submitTask方法分析一个任务实例被部署所产生的实际影响就是JobManager会将一个TaskDeploymentDescriptor对象封装在SubmitTask消息中发送给TaskManager。而处理该消息的入口方法是submitTask方法,它是TaskManager接收任务部署并启动任务执行的入口方法,值得我们关注一下它的实现细节。subm

2020-06-21 00:51:13 113 1

原创 java线程池ThreadPoolExecutor类使用详解

在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了资源的开销。而线程池不允许使用Executors去创建,而要通过ThreadPoolExecutor方式,这一方面是由于jdk中Executor框架虽然提供了如newFixedThreadPool()、newSingleThreadExecutor()、newCachedThreadPool()等创建线程池

2020-06-20 23:59:08 345

原创 建模涉及概念

例如,可以按照季度汇总的销售数据下钻,观察按月汇总的数据。也可以按城市汇总的销售数据上卷,观察按国家汇总的数据。这就是数据钻取的两个简单例子。事实表技术简述事实表结构1,总是包含外键,且外键不能唯空。2,事实表的设计完全依赖业务活动,不受最终报表的影响。3,每行对应一个度量事件。可加、半可加、半可加事实1,可加事实:最灵活,最有用的事实。可以按照和事实表关联的任意维度汇总。2,半可加事实:可以按照某些维度汇总。例如差额,或者新增额,对于时间就只能是筛选条件不能用作维度。3,不可加事实:

2020-06-20 18:35:57 43

原创 星型雪花型的区别

如果要对维度进行分析,雪花型更优雪花模型使得维度分析更加容易1、一个用户维度表且数据量较大。其中,80%的事实度量表是匿名访问者,仅包含少数详细信息。20%的是可靠的注册用户,且这些注册用户有较为详细的信息,与多个维度表中的数据相连。2、例如一个金融产品维度表,且这些金融产品有银行类的,保险类等等区别。因此不同种类的产品有自己一系列的特殊属性,且这些属性并非是所有产品共享的。3、多个企业共用的日历维度表。但每个企业的财政周期不同,节假日不同等等。在数据仓库的环境中用雪花模型,降低储...

2020-06-20 18:14:16 31

原创 kafka的发行版选择

今天继续和大家聊一下,kafka的各种发行版。kafka历经数年的发展,从最初纯粹的消息引擎,到近几年开始在流处理平台生态圈发力,衍生出了各种不同特性的版本。你了解几种kafkakafka的确有好几种,这里我不是指他的版本,是指存在多个组织或公司发布不同特性的kafka。你应该听说过Linux发行版,比如我们熟知的CentOS、RedHat、Ubuntu等,它们都是Linux系统,其实就是因为它们是不同公司发布的Linux系统,即不同的发行版。kafka也同样有多个发行版。Apache Kafk

2020-06-16 18:35:44 43

原创 spark stage 中的CallSite

先看源码注释中的内容CallSite represents a place in user code. It can have a short and a long form. /* CallSite表示用户代码中的一个位置。它可以有短的和长的形式。 */实际去debug一个案例 查看,callsite中存储了哪些内容。下边两张图为自己的代码。下边一张图为stage的内容。正如注释写的一样 ,callsite 分为log和short。名字为logfrom ...

2020-06-16 17:23:10 36

原创 Flink 中的 CopyOnWriteStateTable

现如今想阅读 HashMap 源码实际上比较简单,因为网上一大堆博客去分析 HashMap 和 ConcurrentHashMap。而本文是全网首篇详细分析 CopyOnWriteStateTable 源码的博客,阅读复杂集合类源码的过程是相当有挑战的,笔者在刚开始阅读也遇到很多疑问,最后一一解决了。本文有一万两千多字加不少的配图,实属不易。详细阅读完本文,无论是针对面试还是开阔视野一定会对大家有帮助的。感觉有帮助的同学文末点个在看呗,如果能转发那更好了。❝声明:笔者的源码分析都是基于 flink-1

2020-06-15 01:08:18 117

原创 linux清理缓存

free -m 命令可以查看内存使用情况 sysctl 命令可以临时改变某个系统参数 如:sysctl -w net.ipv4.ip_forward=1 是将forware参数临时改为1 当 service network restart后 失效.我们在清理缓存前应该先sync下因为系统在操作的过程当中,会把你的操作到的文件资料先保存到buffer中去,因为怕你在操作的过程中因为断电等原因遗失数据,所以在你操作过程中会把文件资料先缓存。...

2020-06-13 19:05:58 20

原创 为什么 SQL 语句不要过多的 join?

分题面试官:有操作过Linux吗?我:有的呀面试官:我想查看内存的使用情况该用什么命令我:free或者top面试官:那你说一下用free命令都可以看到啥信息我:那,如下图所示 可以看到内存以及缓存的使用情况 total 总内存 used 已用内存 free 空闲内存 buff/cache 已使用的缓存 avaiable 可用内存 面试官:那你知道怎么清理已使用的缓存吗(buff/cache)我:em... 不知道面试官..

2020-06-13 19:00:15 102

原创 flink 面试

Flink面试题,有时间会解决这些问题:1、为何我使用 ValueState 保存状态 Job 恢复是状态没恢复?2、flink中watermark究竟是如何生成的,生成的规则是什么,怎么用来处理乱序数据3、消费kafka数据的时候,如果遇到了脏数据,或者是不符合规则的数据等等怎么处理呢?4、在Kafka 集群中怎么指定读取/写入数据到指定broker或从指定broker的offset开始消费?5、Flink能通过oozie或者azkaban提交吗?6、jobmanager挂掉后,提

2020-06-13 18:32:25 41

原创 spark 面试

1.spark中的RDD是什么,有哪些特性?答:RDD(Resilient Distributed Dataset)叫做分布式数据集,是spark中最基本的数据抽象,它代表一个不可变,可分区,里面的元素可以并行计算的集合Dataset:就是一个集合,用于存放数据的Destributed:分布式,可以并行在集群计算Resilient:表示弹性的,弹性表示1.RDD中的数据可以存储在内存或者磁盘中;2.RDD中的分区是可以改变的;五大特性:1.A list of partitio

2020-06-13 18:31:32 81

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