自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 数据湖对比(hudi,iceberg,paimon,Delta)

个人更倾向于paimon的数据湖能力,可以为用户提供高吞吐、低延迟的数据摄入、流式订阅以及实时查询能力。总结一句话就是真正面向实时更新而设计的数据湖格式。在国外的应用场景主要是离线取代 Hive,虽然扩展性强,也导致计算引擎有较多优化空间,后续发展难以迅速,需要涉及众多对接引擎。面向spark,为了解决在hadoop体系内数据更新和增量查询的问题。趋势在不断的在完善面向批处理的架构细节改造,对spark友好,无法彻底适配流处理更新能力。整体架构耦合性强,系统设计复杂,各个引擎之间的兼容性较差,参数众多。

2024-05-24 14:39:20 527

原创 flink 源码执行流程图(超详细)

2024-03-21 14:42:48 148

原创 flinkcdc 原理 + 实践

flinkcdc 1.* 痛点flinkcdc 2.* 优点flinkcdc 原理flink cdc datastream / flinkcdc sql 使用

2024-02-27 15:02:39 1115

原创 flink window 框架详细解读

flink window整体框架解读,dataStream window / sql window 函数使用说明,window tvf,group window over window最全使用,window tvf解决替代场景及优化地方

2022-12-07 17:57:28 672 1

转载 网易数据湖探索与实践

文章出自:网易数据湖探索与实践-范欣欣_浪尖聊大数据-浪尖的博客-CSDN博客分享嘉宾:范欣欣网易大数据技术专家编辑整理:刘闰丰出品平台:DataFunTalk导读:今天主要和大家交流的是网易在数据湖Iceberg的一些思考与实践。从网易在数据仓库建设中遇到的痛点出发,介绍对数据湖Iceberg的探索以及实践之路。主要内容包括: 数据仓库平台建设的痛点 数据湖Iceberg的核心原理 数据湖Iceberg社区现状 网易数据湖Iceberg实践之路..

2022-04-29 12:57:42 299

原创 flink 集群启动方式,高可用服务及源码流程图解

1.DataStream流转2.StreamGraph -> JobGraph -> ExecutionGraph 图流转过程3.checkpoint 源码流程,barrier何时发送4.消息数据通过netty发送5.slot的管理与申请

2022-03-29 17:05:13 2678

原创 flink sql 执行源码走读全流程

文章目录前言 一、flinksql 流程图 二、flinksql 源码分析 三、flink hive sink 源码 总结我亲爱的flinksql!前言文章主要介绍了flinksql 的工作流程,1.to SqlNode 解析阶段,生成AST(抽象语法树)2. SqlNode -> RelNode -> Operation 基于RBO,CBO做优化。3.RelNode -> ExecNode 从逻辑计划转换为物理执行计划4.Exec...

2022-03-01 19:45:02 2606 1

原创 Zookeeper源码分析之启动流程及选举过程讲解

ZK启动流程:# 入口方法QuorumPeerMain.main(); # 核心实现,分三步走 QuorumPeerMain.initializeAndRun(args); # 第一步;解析配置 config = new QuorumPeerConfig(); config.parse(args[0]); Properties cfg = new Properties(); cfg.load(in); parseProperties(cf

2020-12-15 22:02:52 428

原创 spark Shuffle Write和Read

spark shufflesparkshuffle主要部分就是shuffleWrite 和 shuffleReader.大致流程spark通过宽依赖划分stage,如果是宽依赖就需要进行shuffle操作,上游stage的shufflemaptask进行shuffleWrite,上游的write操作做的最重要的操作其实就是分区,元数据根据MapOutputTrackerWorker汇报给driver端MapOutputTrackerMaster,下游stage去driver获取元数据,.

2020-10-08 14:35:07 1577 1

原创 hbase Compact流程

hbase Compaction以牺牲磁盘io来换取读性能的基本稳定小合并:一个region下一个store中的部分HFile合并成一个比较大的StoreFile.大合并:一个region下一个store中的所有HFile合并成一个更大的HFile.会清理ttl过期,版本超限定,标记删除的数据。合并流程:1.hbase基于1、Memstore Flush(每次memstore在flush之后都会判断是否触发Compaction) 2、后台线程周期性检查、3、手动触发 某种触发条件触发.

2020-10-08 14:31:04 669

原创 哈希,二叉树,红黑树,B树,B+树,LSM树等数据结构做索引比较

哈希索引哈希索引:hash索引的随机查找的时间复杂度为O(1).可以一次定位。索引hash索引的查询效率很高,但是弊端就是对于单个查找比如等值查找很方便。因为哈希索引比较的就是就行hash运算后的hash值。但是如果是范围查找,哈希过后的hash值和要查找的范围大部分情况下是不连续的,所以会慢。二叉树索引二叉树索引:二叉树不适合做索引结构,二叉树做索引结构树的高度会越来越高,索引单边增长。会导致查询时间复杂度为O(n)。尤其是二叉树不平衡的时候深度可达到N。则复杂度为O(n)。my..

2020-10-08 14:26:23 669

原创 十种GC垃圾回收器

分代serial和serial old1.serial和serial old <!--jdK3,4的时候使用的--> 单线程执行,串行serial(年轻代,copying) : 单线程,需要gc时会停止工作线程,stw(stop-the-world) ,gc完之后在继续工作。serial old(老年代 mark-sweep/mark-compact) : 单线程,当需要gc的时候,需要停止工作线程,stw,gc之后继续工作​缺点:单线程,stw时间会很...

2020-10-08 14:23:27 1258 2

原创 java 数据结构笔记

前言数据结构就是指一组数据的存储结构,算法就说操作数据的一组方法。数据结构和算法相辅相成。数据结构为算法服务,算法则需要作用在指定数据结构之上。复杂度数据结构与算法解决的问题是如何更快,更省的存储和处理数据,那么我们就需要一个考量资源消耗和效率的方法,就说复杂度分析。从低阶到高阶的复杂度有:O(1)、O(logn)、O(n)、O(nlogn)、O(n2)。时间复杂度概念介绍表示算法的执行时间与数据规模之间的关系称为时间复杂度所有代码的执行时间T(n)和每行代码...

2020-09-11 17:06:07 325

原创 flink CEP之规则解释

flink CEP表示复杂事件处理。CEP开发流程:输入事件流的创建即DataStream pattern的定义即规则定义 通过pattern规则去事件流匹配 选取结果pattern1.规则定义1.首先每个规则的定义都是通过Patttern.begin进行定义的。( ----val start = Pattern.begin[Event]("start_pattern") ----- )2.规则条件条件定义条件在 FlinkCEP 中通过 pattern.w..

2020-08-23 11:57:27 1019

原创 flink State 和 checkpoint,重启策略 原理详解

目录前言Statekeyed State1.ValueState2.ListState3.MapState4.ReducingState5.AggregatingState6.FoldingStateOperator State存储状态MemoryStateBackend FsStateBackendRocksDBStateBackend重启策略checkpointcheckpoint配置通过checkp...

2020-08-19 17:16:27 2970 1

原创 maxwell/canal 对比

maxwellmaxwell实现原理其实就是会在数据源端的库默认maxwell生成对应的position信息,通过记录binlog的position位点来实现断点还原。当然我们也可以手动更新数据库position位置。maxwell库中还会有table,schema,bootstrap表,其中bootstrap可以进行表引导操作。canal而canal则是单纯的依靠binlog解析将数据发送到kafka或其他组件。(1.1.*已经支持es,redis,kafka,web界面等多功能)c

2020-08-08 12:20:01 6393

原创 maxwell mysql-kafka 全量,实时数据同步实战

bootstrap引导全量/增量历史数据.准备工作:mysql插入历史数据。CREATE TABLE `emp` ( `id` int(11) DEFAULT NULL, `name` varchar(100) DEFAULT NULL, `deg` varchar(100) DEFAULT NULL, `salary` int(11) DEFAULT NULL, `dept` varchar(10) DEFAULT NULL, `create_time` timestam

2020-08-08 12:02:48 2677

原创 kafka 高级深入知识点总结

producer生产者原理 producer是线程安全的。 生产者客户端由两条线程协调运行,分别是主线程和sender线程(发送线程)。 主线程通过KafkaProducer创建消息,然后通过拦截器,序列化器,分区器(默认DefaultPartitioner,默认进行hash求分区,如果key为null,就通过轮询方式发往可用的分区中)的作用之后将消息缓存到消息累加器中。消息累加器用来缓存消息,后续sender线程从消息累加器中获取缓存的消息进行IO操作,写入到页缓存中。消息累加...

2020-08-01 11:22:02 3669

原创 kafka压力测试步骤

kafka本身提供了用于生产者性能测试的命令. kafka-producer-perf-test.sh1.创建topic2.简单示例:我们向一个只有1个分区,1个副本的主题 yache中发送100万条消息,并且每条消息大小为1024B,生产者对应的ack机制是1.kafka-producer-perf-test.sh --topic yache --num-records 1000000 --record-size 1024 --throughput -1 --producer-pro..

2020-07-31 10:18:27 900

原创 flink 消费kafka (exactly-once),动态感知topic,partition, 消费多个topic,区分数据来源 API

ss

2020-07-24 16:00:10 4905 8

原创 sparkSql执行原理

SparkSql的架构设及实现1.sparkSql

2020-07-24 14:24:04 447

原创 flink 多种实时去重方案

基于状态后端基于HyperLogLog基于布隆过滤器(BloomFilter)基于BitMap基于外部数据库

2020-07-24 12:08:50 3569 3

原创 flink 维表关联多种方式

1.实时查询维表优点:维表数据实时更新,可以做到实时同步到。缺点:访问压力大,如果失败会造成线程阻塞。实时查询维表是指用户在Flink算子中直接访问外部数据库。这种方式可以保证数据是最新的,但是当我们流计算数据过大,会对外部系统带来巨大的访问压力,比如:连接失败,连接池满等情况,就会导致线程阻塞。task等待数据返回.核心就是通过Map算子中建立访问外部系统的连接。核心代码如下: public static void main(String[] args) throws Exce.

2020-07-23 21:51:28 4117

原创 flink 1.9 自编译 适配Hadoop3.X版本

Flink 1.9本身只提供支持Hadoop2.4.1, 2.6.5, 2.7.5,2.8.3的预编译安装包。如果想要flink on yarn(HDP3.1),一定需要自己编译。 编译准备gitmavenjdk8或更高编译过程在编译flink之前需要先编译安装flink-shaded.然后再编译flink.因为flink依赖flink-...

2020-07-19 10:16:54 1434

原创 kafka Controller模块 详细解读

目录集群元数据ControllerContext ControllerStats shuttingDownBrokerIds epoch & epochZkVersion liveBrokers liveBrokerEpochs allTopics partitionAssignments partitionLeadershipInfoController...

2020-07-14 16:18:39 867

原创 kafka 序列化器,分区器,拦截器,消息累加器

目录拦截器生产者拦截器自定义生产者拦截器序列化器反序列化器分区器消息累加器前提了解:整个kafka生产者客户端由两条线程协调运行。这两条线程分别为主线程和sender线程(发送线程)主线程的作用就是:由KafkaProducer创建消息,然后通过可能的拦截器,序列化器,分区器的作用之后缓存到消息累加器send线程的作用就是:负责将消息累加器中的消息发送到kafka中。拦截器 拦截器是在kafka0.10.0.0版本中就已经引...

2020-07-13 11:26:03 1014

原创 flink Side OutPut 分流

当我们在生产实践中,或多或少会遇到将输入源按照需要进行切分的场景。 注意:只能使用在Stream上。分流方法 1.filter分流 (不推荐) 可以通过定义fliter()函数进行处理,如果filter()函数返回true则保留。否则丢弃。在分流的场景下,通过多次filter,确实可以达到将需要的不同数据生成不同的流。 例子 public static void main(...

2020-07-13 10:43:41 571

原创 Dbus数据总线(基于0.5.0) 深入理解,源码适配修改编译全过程,集群部署,使用操作

声明:本文基于2018年10月份 发版的0.5版本进行安装实验。dbus产生背景首先了解下当下的采集工具。 1.我们发现,采集工具都有各自的优点和应用场景,但是都缺乏统一的数据源端管控。所以无法找到统一的数据入口。2.各个数据使用方在业务低峰期各种抽取所需数据(缺点是存在重复抽取而且数据不一致) 由统一的数仓平台通过sqoop到各个系统中抽取数据(缺点是sqoop抽取方法时效性差,一...

2020-07-12 14:56:49 1395 1

原创 图解 kafka 请求处理模块

kafka请求流程:1.client或者broker通过Selector发送创建连接请求。2.Processor线程接收请求,并将其转换成可处理的Request对象。3.Processor线程将Request对象放入Request队列。4.KafkaRequestHandler线程从Request队列中取出待处理请求,并进行处理。5.KafkaRequestHandler线程将Response放回到对应Processor线程的Response队列。6.Processor 线程发送 R

2020-07-07 17:41:55 176

原创 DataX (原理, 增量全量同步数据实践)

目录理解mysql -> mysql (增量,全量)增量导入全量导入mysql -> hive (增量,全量)增量导入全量导入理解datax每张表都需要对应的配置文件。Reader:数据采集模块,负责采集数据源的数据,将数据发送给Framework。Writer:数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。Framework:用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换..

2020-07-06 15:46:59 13769 3

原创 ClickHouse 使用

依赖环境: zookeeper安装 (注意:每台节点都需要操作) 安装包链接:https://pan.baidu.com/s/10k9Ym8x0IRSZmN98ChVwoQ 提取码:8uoq指定路径上传rpm sudo yum install -y libtool sudo yum install -y *unixODBC* sudo yum search libicul sudo yum install lib...

2020-07-05 15:39:54 598

原创 手写高并发下的双缓冲(分段锁,事务性,高并发,顺序性)

双缓冲机制是在hadoop刷写元数据的时候进行的操作。模仿hadoop刷写的过程编写简易的双缓冲代码。import java.util.LinkedList;import java.util.concurrent.atomic.LongAdder;public class FSEditlog { public class Editlog { private long txid;//事务ID private String log;//日志

2020-07-05 11:05:04 458

原创 hbase 二级索引方案

Hbase Coprocessor分为2种。 OBServer 和 Endpoint.OBServerObserver类似于Mysql的触发器。当发生某些事件的时候这类协处理器会被server调用。本质就是一些散布在Hbase Server端代码种的hook钩子,在固定的事件时被调用。比如: 1. put操作之前有钩子函数prePut, put操作之后有钩子函数postPut函数 2.get操作之前有钩子函数preGet,get操作之后有钩子函数postGet函...

2020-07-02 17:58:25 891

原创 Hbase Hfile 存储及索引 , Block结构,hfile split的依据

本文我们从HFile的逻辑结构和HFile的物理结构两方面进行分析。 逻辑结构: HFile文件主要分为4个部分:Scanned Block 这个部分包含3种数据块,DataBlock LeafIndexBlock BloomBlock 其中,DataBlock存储用户的KeyValue数据,leafIndexBlock种存储索引树的叶子节点数据。BloomBlock存储布隆过滤器相关数据。 Non-scanned Block...

2020-06-29 20:55:55 1104

原创 hbase BlockCache及3种实现方案详解

继上篇说到hbase读性能优化的一个重要手段。就是BlockCache..客户端读取某个Block,首先会检查该Block是否存在于Block Cache,如果存在就直接加载出来,如果不存在则去Hfile文件中加载,加载出来之后放到BlockCache中。后续同一请求或者邻近数据查找请求可以直接去内存中获取,以避免昂贵的IO操作。 BlockCache主要用来缓存Block.需要关注的是,Block是Hbase中最小的数据读取单元。 Bloc...

2020-06-26 16:07:54 910

原创 HBASE LSM树 以及针对读操作的优化方式(多路归并(compact),布隆过滤器)

LSM存储引擎是在B+树的基础上衍生过来的,目的就是为了在读和写之间,提高写的性能。所以,LSM树的弊端也由此可见,对读并不是很友好,所以,针对LSM树,有后续compact,布隆过滤器,blockCache等优化方式。来弥补对读的查询。 LSM树的索引一般由2部分构成,一部分是内存部分,一部分是磁盘部分。内存部分采用跳跃表来维护一个有序的KV集合,也就是memstore.随着内存不断数据写入,一旦内存占用超过一定的阈值,就把内存部分数据进行导出(这里的...

2020-06-25 10:03:42 911

原创 图解 kafka 日志模块 及相关源码注释

append: private def append(records: MemoryRecords, isFromClient: Boolean, assignOffsets: Boolean, leaderEpoch: Int): LogAppendInfo = { maybeHandleIOException(s"Error while appending records to $topicPartition in dir ${dir.getParent}") { ...

2020-06-23 10:40:38 417

原创 HBASE memstore(跳跃表)底层结构,,实现过程和原理,MSLAB对memstore的GC优化

hbase系统中一张表会被水平切分成多个region。每个region负责自己区域的数据读写请求。hbase针对每个列簇都将数据保存在store。每个store由一个memstore和多个hfile组成。 因为memstore底层的存储结构是跳跃表(ConcurrentSkipListMap)。我们先理解一下跳跃表的知识。 跳跃表: 跳跃表是一种能高效实现插入,删除,查找的内存数据结构。与红黑树以及二分法相比,跳跃表的优势在于实现简单,可以实...

2020-06-22 10:41:37 811

原创 hdp3.1.4 hive 开启lzo压缩

因为集群本身是不支持lzo压缩的,所以需要我们自行安装配置。环境:hdp 3.1.4 hadoop-lzo : 0.4.21 lzo :2.10安装步骤如下:在源码编译安装之前需要做一些准备工作:1. yum -y install *lzo* (为了后续安装lzop)2. yum -y install gcc-c++ lzo-devel zlib-devel autoconf automake libtool3. wget http://www.oberhumer..

2020-06-20 18:03:35 582

原创 基于canal1.1.4 实现 mysql to es 增量全量同步

canal新版本功能介绍:canal-admin web模块canal-server 采集数据,解析binlog 配置实例,mysql的信息canal-adapter 将数据转换为其他组件的数据源的功能。client(新版本已经可以同步kafka,es,hbase,logger,RDB,MongoDB,Redis) 过程比较简单,具体实践操作可能需要自行踩坑..版本介绍:canal-admin 1.1.4 canal-server 1.1.4 canal-ad...

2020-06-17 17:21:05 1576

(orc + snappy / zlib ) 多线程并行合并小文件工具类 (出自:flink自定义合并orc小文件处)

通过指定目录进行多线程执行合并小文件程序,由于hdfs小文件过多,可用于自定义合并orc小文件。

2022-03-04

dbeaver-ce-7.1.0-x86_64-setup.exe

hbase,mysql,redis,hive,impala,clickHouse,es,phoenix等多种数据库图形化连接工具,

2020-06-28

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

TA关注的人

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