自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

话数Science

专注大数据、数据科学领域,分享相关技术知识。

  • 博客(105)
  • 收藏
  • 关注

原创 【Flink电商项目】系统架构

2024-02-29 09:45:07 340

原创 【Flink精讲】Flink单机安装步骤

web ui的默认端口为8081,可以修改为其他端口,需要修改conf/flink-conf.yaml,以及conf/masters。解压缩:tar -zxvf flink-1.17.2-bin-scala_2.12.tgz。启动SQL Client:./bin/sql-client.sh embedded。修改配置文件:conf/flink-conf.yaml。启动命令:./bin/start-cluster.sh。终止命令:./bin/stop-cluster.sh。

2024-02-28 18:16:37 469

原创 【Flink精讲】Flink反压调优

简单来说, Flink 拓扑中每个节点(Task)间的数据都以阻塞队列的方式传输,下游来不及消费导致队列被占满后,上游的生产也会被阻塞,最终导致数据源的摄入被阻塞。2)影响 state 大小: barrier 对齐时,接受到较快的输入管道的 barrier 后,它后面数据会被缓存起来但不处理,直到较慢的输入管道的 barrier 也到达,这些被缓存的数据会被放到 state 里面,导致 checkpoint 变大。因此,我们在生产中要尽量避免出现反压的情况。

2024-02-26 16:34:02 624

原创 【Flink精讲】Flink状态及Checkpoint调优

Flink 针对不同的设置为 RocksDB 提供了一些预定义的选项集合,其中包含了后续提到的一些参数,如果调整预定义选项后还达不到预期,再去调整后面的 block、 writebuffer等参数。当 前 支 持 的 预 定 义 选 项 有 DEFAULT 、 SPINNING_DISK_OPTIMIZED 、SPINNING_DISK_OPTIMIZED_HIGH_MEM 或 FLASH_SSD_OPTIMIZED。有条件上 SSD。

2024-02-26 14:51:23 649

原创 【Flink精讲】Flink性能调优:CPU核数与并行度

提交任务命令:-d \-p 5 \ 指定并行度-Dyarn.application.queue=test \ 指定 yarn 队列-Djobmanager.memory.process.size=2048mb \ JM2~4G 足够-Dtaskmanager.memory.process.size=4096mb \ 单个 TM2~8G 足够-Dtaskmanager.numberOfTaskSlots=2 \ 与容器核数 1core: 1slot 或 2core: 1slot。

2024-02-25 16:37:56 1393

原创 【Flink精讲】Flink性能调优:内存调优

【Flink精讲】Flink性能调优:内存调优 JVM metaspace: JVM 元空间taskmanager.memory.jvm-metaspace.size,默认 256mb2) JVM over-head 执行开销: JVM 执行时自身所需要的内容,包括线程堆栈、 IO、编译缓存等所使用的内存。总进程内存*fraction,如果小于配置的 min(或大于配置的 max) 大小,则使用 min/max大小。

2024-02-25 11:06:02 748

原创 【Flink精讲】Flink任务调度机制

【Flink精讲】Flink任务调度机制Flink 中的执行图可以分成四层: StreamGraph -> JobGraph -> ExecutionGraph -> 物理执行图。StreamGraph:是根据用户通过 Stream API 编写的代码生成的最初的图。用来表示程序的拓扑结构。JobGraph: StreamGraph 经过优化后生成了 JobGraph,提交给 JobManager 的数据结构。主要的优化为

2024-02-24 09:24:05 686

原创 【Flink精讲】Flink组件通信

Flink内部节点之间的通讯使用Akka,比如JobManager和TaskManager之间。而operator之间的数据传输是利用Netty。Actor(演员)模型,每个actor有一个mailbox来收发消息,每个actor都是一个单一的线程。Flink系统由3个分布式组件组成:JobClient、JobManager和TaskManager。Actor系统:相当于部门,系统里有线程池,多个actor系统可以在一台机器上共存。RPC是统称,Akka,Netty是实现。主要指三个进程中的通讯。

2024-02-23 10:16:30 362

原创 【Flink精讲】Flink 内存管理

目前, 大数据计算引擎主要用 Java 或是基于 JVM 的编程语言实现的,例如 Apache Hadoop、 Apache Spark、 Apache Drill、 Apache Flink 等。Java 语言的好处在于程序员不需要太关注底层内存资源的管理,但同样会面临一个问题, 就是如何在内存中存储大量的数据(包括缓存和高效处理)。Flink 使用自主的内存管理,来避免这个问题。

2024-02-21 19:26:47 661

原创 【Flink精讲】Flink内核源码分析:命令执行入口

【Flink精讲】Flink内核源码分析:命令执行入口官方推荐per-job模式,一个job一个集群,提交时yarn才分配集群资源;主要的进程:JobManager、TaskManager、Client/flink-1.12.0/bin/flink命令:入口:org.apache.flink.client.cli.cliFrontend环境信息:conf.sh

2024-02-20 15:20:53 422

原创 【Flink详解】Flink on YARN任务提交流程

【Flink详解】Flink on YARN任务提交流程

2024-02-19 17:21:08 141

原创 【后端开发】正向代理与反向代理

反向代理(reverse proxy):是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。对于常用的场景,就是我们在Web开发中用到的负载均衡服务器(二房东),客户端(租客)发送请求到负载均衡服务器(二房东)上,负载均衡服务器(二房东)再把请求转发给一台真正的服务器(房东)来执行,再把执行结果返回给客户端(租客)。即,房东并不知道租客的真实身份。

2024-02-03 18:07:10 854

原创 【大数据面试题】HBase面试题附答案

HBase是一种基于Hadoop的列示分布式非关系型数据库,它是高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价服务器上搭建起大规模结构化存储集群。它是Google论文BigTable的实现。a. 保证HMaster的高可用;b. 存储所有的HRegion的寻址入口;c. 实时监控HRegionServer的上线和下线信息,并实时通知给HMaster;d. 存储HBase的schema和table元数据;

2024-01-25 16:14:49 1777

原创 【大数据精讲】全量同步与CDC增量同步方案对比

全量同步与CDC增量同步方案对比问题与挑战FlinkCDCFlink CDC 是以 Debezium 作为底层采集工具。Debezium 支持全量同步,也支持增量同步,也支持全量 + 增量的同步,非常灵活,同时基于日志的 CDC 技术使得提供 Exactly-Once 成为可能。DataX工作原理调度流程性能优化

2024-01-23 19:21:30 1400

原创 【大数据精讲】HBase基本概念与读写流程

HBase基本概念HBase数据模型Name Space命名空间TableRowColumnTime StampCell逻辑结构物理存储结构基础架构Meta表架构RegionServer架构HBase写流程HBase读流程

2024-01-23 09:54:26 1188

原创 MySQL与PostgreSQL对比

MySQL与PostgreSQL对比2000万计算逻辑三层情况下:1170 * 1170 * 16 = 21902400,得出两千万左右条数据PostgreSQL单表最大32T,不限制记录数,但最多能存多少条记录还要看单条记录大小和对查询性能的要求,如果没有复杂的查询或统计操作正常单表上亿条记录查询性能也是能接受的。否则就要考虑分区或分库分表操作。看网上经验值,为保证较好的查询性能,MySQL在单表1000w~2000w数据记录时就要考虑分库分表操作。

2024-01-21 11:10:14 1338

原创 【大数据面试】常见数仓建模面试题附答案

什么是数据仓库?如何构建数据仓库?概念模型、逻辑模型、物理模型分别介绍一下?SCD常用的处理方式有哪些?模型设计的思路?业务驱动?数据驱动?数仓架构为什么要分层?事实表的类型?维度建模步骤?维度建模的三种模式?数仓架构进化?数据仓库如何保证数据质量?开发流程/你们是怎么测试的?维度建模过程?维度建模的三种模式?事实表都有哪几种?

2024-01-11 10:54:10 1842

原创 【大数据面试】Flink面试题附答案

1、背压问题2、Flink是如何支持批流一体的3、Flink任务延迟高,想解决这个问题,你会如何入手4、Flink的监控页面,有了解吗,主要关注那些指标?5、你们之前Flink集群规模有多大?部署方式是什么?你了解哪些部署方式?6、Flink如何做压测和监控7、Flink checkpoint 的相关查考?如何做checkpoint,如何监控,存储在哪里?等8、Flink Savepoint 的相关查考?9、Flink exactly-once 的保证?

2024-01-11 10:48:23 1724 1

原创 【大数据OLAP引擎】StarRocks为什么快?

StarRocks最初主要的优势是性能,当时在单表查询方面与性能标杆ClickHouse不相上下,而join优化特性使其在多表关联查询场景下的性能表现要远远优于ClickHouse,替换ClickHouse自然也就成了StarRocks的第一个目标。而StarRocks的野心不止于此,后来又进一步发展了联邦查询功能,成为Presto的性能升级替代方案。与此同时,StarRocks优良的预计算特性让其成为Druid的一种替代选择。

2024-01-10 21:42:20 1322

原创 【大数据OLAP引擎】StartRocks存算分离

存算分离的原因:降低存储成本:同样的存储大小对象存储价格只有SSD的1/10,存储成本降低80%。StarRocks存算分离技术在现有存算一体架构的基础上,将计算和存储进行解耦。在存算分离新架构中,数据持久化存储在更为可靠和廉价的远程对象存储或 HDFS 上。CN 本地磁盘只用于缓存热数据来加速查询。在本地缓存命中的情况下,存算分离可以获得与存算一体架构相同的查询性能。存算分离架构下,用户可以动态增删计算节点,实现秒级的扩缩容。存算分离大大降低了数据存储成本和扩容成本,利于实现资源隔离和计算资源的弹性伸缩

2024-01-10 20:07:14 721

原创 【大数据架构】OLAP实时分析引擎选型

Doris,Elasticsearch,Impala,Kylin,Druid,Presto,GreenPlumOLAP分析场景中,一般认为QPS达到1000+就算高并发,而不是像电商、抢红包等业务场景中,10W以上才算高并发,毕竟数据分析场景,数据海量,计算复杂,QPS能够达到1000已经

2024-01-10 17:01:51 1464

原创 【大数据架构】日志采集方案对比

Flume更注重于数据的传输,对于数据的预处理不如Logstash。在传输上Flume比Logstash更可靠一些,因为数据会持久化在channel中。数据只有存储在sink端中,才会从channel中删除,这个过程是通过事物来控制的,保证了数据的可靠性。Logstash是ELK组件中的一个,一般都是同ELK其它组件一起使用,更注重于数据的预处理,Logstash有比Flume丰富的插件可选,所以在扩展功能上比Flume全面。但Logstash内部没有persist queue,所以在异常情况下会出现数据丢

2024-01-09 20:41:19 1115

原创 【Flink精讲】双流Join之Regular Join(即普通Join)

Regular Join普通Join通过条件关联两条实时数据流:动态表Join动态表支持Inner Join、Left Join、Right Join、Full Join。1. Inner Join(Join):只有两边数据流都关联上才输出+[L,R]2. Left Join(Left Outer Join):只要左流有数据即输出+[L,NULL],右流数据到达时会产生撤回流-[L,NULL],并输出+[L,R]3. Right Join(Right Outer Join):和Left Join

2024-01-06 20:45:07 863

原创 【Flink精讲】Flink数据延迟处理

面试题:Flink数据延迟怎么处理?将迟到数据直接丢弃【默认方案】将迟到数据收集起来另外处理(旁路输出)重新激活已经关闭的窗口并重新计算以修正结果(回撤流)Flink数据延迟处理方案双流Join中的数据延迟处理

2024-01-06 20:36:02 1198

原创 【Spark精讲】Spark on Hive性能优化

【Spark精讲】Spark on Hive性能优化第一章1.1 集群配置概述1.2 集群规划概述第二章 Yarn配置2.1 Yarn配置说明yarn.nodemanager.resource.memory-mbyarn.nodemanager.resource.cpu-vcoresyarn.scheduler.maximum-allocation-mbyarn.scheduler.minimum-allocation-mb第三章 Spark的配置说明

2024-01-04 21:05:39 1404

原创 【Spark精讲】性能优化:并行度

1.控制reduce个数的方式与参数1.1.首先可以通过参数直接控制最终reduce的个数,使用参数mapred.reduce.tasksmapred.reduce.tasks=-1 --官方默认值-1,表示不人为设置reduce的个数,实际这种方式用的也少。1.2.在hive中如果不指定reduce个数的情况下,Hive会猜测确定一个reduce个数,基于以下两个设定。

2024-01-04 21:03:50 1005

原创 【Spark精讲】RDD共享变量:广播变量与累加器

在Spark中,提供了两种类型的共享变量:广播变量 (broadcast variable)与累加器 (accumulator)

2024-01-03 19:40:55 416

原创 【Spark精讲】RDD缓存源码分析

RDD调用cache或persist之后,会指定RDD的缓存级别,但只是在成员变量中记录了RDD的存储级别,并未真正地对RDD进行缓存。只有当RDD计算的时候才会对RDD进行缓存。在executor端调用SparkEnv.get.blockManager.getOrElseUpdate()方法,继续看 getOrCompute方法:这里可以看到blockId的生成规则,可以确定。再看BlockManager中的getOrElseUpdate方法。调用的iterator方法。以HadoopRDD为例。

2024-01-03 17:59:39 639

原创 【Spark精讲】SparkSQL Join选择逻辑

如果是等值join,就先看join hints,顺序如下broadcast hint:join类型支持的话选择broadcast hash join,如果join的两边都有broadcast hint,选择小的(基于统计)一方去广播sort merge hint:如果join的key是可排序的,选择sort merge joinshuffle hash hint:join类型支持的话选择shuffle hash joinshuffle replicate NL hint:如果是inner

2024-01-03 11:50:51 1284

原创 我的大数据之路:2023年度总结

我的大数据之路:2023年度总结2023年度最值得骄傲的事2023年度吐血的经验教训Kafka+Flink+StarRocks/Doris的实时离线一体化方案正在成为小公司数仓架构首选。2023年度难忘的面试经历

2024-01-02 21:47:42 1147

原创 【Spark精讲】SparkSQL的RBO与CBO

Spark SQL的核心是Catalyst查询编译器。SQL优化器:RBO、CBO基于规则的优化器(Rule-Based Optimization,RBO)基于代价的优化器(Cost-Based Optimization,CBO)Outer 类型 Join 中的谓词下推通过 "spark.sql.cbo.enabled" 来开启,默认是 false。配置开启 CBO 后,CBO 优化器可以基于表和列的统计信息,进行一系列的估算,最终选择出最优的查询计划。比如:Build 侧选择、优化 Join

2024-01-02 20:43:04 1416

原创 【Spark精讲】记一个SparkSQL引擎层面的优化:SortMergeJoinExec

SortMergeJoin的实现方式并不用将一侧的数据全部加载后进行Join操作,其前提条件是需要在Join操作前将数据排序,为了让两条记录链接到一起,需要将具有相同Key记录分发到同一个分区,因此一般会进行一次Shuffle操作(即物理执行计划中的Exchange节点),根据Key分区,将连接到一起的记录分发到同一个分区内,这样在后续的Shuffle阶段就可以将两个表中具有相同Key记录分到同一个分区处理.",不同表的角色在Spark SQL中会通过一定的策略进行设定,通常来讲,系统会。

2024-01-02 19:11:23 683

原创 【大数据面试知识点】Spark的DAGScheduler

先看一下DAGScheduler的注释,可以看到DAGScheduler除了Stage和Task的划分外,还做了缓存的跟踪和首选运行位置的计算。DAGScheduler的运行时机DAGScheduler运行时机:Driver端初始化SparkContext时。DAGScheduler是在整个Spark Application的入口即 SparkContext中声明并实例化的。在实例化DAGScheduler之前,巳经实例化了SchedulerBackend和底层调度器 TaskScheduler。

2024-01-01 17:19:38 1279

原创 【大数据面试知识点】Spark中的累加器

累加器用来把Executor端变量信息聚合到Driver端,在driver程序中定义的变量,在Executor端的每个task都会得到这个变量的一份新的副本,每个task更新这些副本的值后,传回driver端进行merge。累加器一般是放在行动算子中进行操作的。

2024-01-01 12:32:56 689

原创 【大数据面试知识点】分区器Partitioner:HashPartitioner、RangePartitioner

【大数据面试知识点】分区器Partitioner:HashPartitioner、RangePartitioner

2024-01-01 12:15:28 679

原创 【Spark精讲】一文搞懂Spark分区器Partitioner

但是需要注意的是,由于JAVA中数组的hashCode是基于数组对象本身的,不是基于数组内容的,所以如果RDD的key是数组类型,那么可能导致数据内容一致的数据key没法分配到同一个RDD分区中,这个时候最好自定义数据分区器,采用数组内容进行分区或者将数组的内容转换为集合。该分区器的实现方式主要是通过两个步骤来实现的,第一步:先重整个RDD中抽取出样本数据,将样本数据排序,计算出每个分区的最大key值,形成一个Array[KEY]类型的数组变量rangeBounds;

2023-12-31 23:59:54 939

原创 【Spark精讲】一文搞懂Spark钨丝Tungsten

【Spark精讲】一文搞懂Spark钨丝Tungsten、内存管理机制、缓存敏感计算( Cache-aware computation)、动态代码生成( Code generation)

2023-12-31 12:07:16 999

原创 【Spark精讲】一文讲透SparkSQL聚合过程以及UDAF开发

【Spark精讲】一文讲透SparkSQL聚合过程以及UDAF开发:SparkSQL聚合过程、PARTIAL1、PARTIAL2、FINAL、COMPLETE

2023-12-30 11:17:05 1393

原创 【Spark精讲】一文讲透SparkSQL物理执行计划

【Spark精讲】一文讲透SparkSQL物理执行计划,SparkPlan,LeafExecNode类型,BinaryExecNode类型

2023-12-29 18:20:01 1648

原创 【Spark精讲】一文讲透SparkSQL执行过程

【Spark精讲】一文讲透SparkSQL执行过程,未解析的逻辑算子树,解析后的逻辑算子树,优化后的逻辑算子树,物理算子树,QueryPlan、LogicalPlan,SparkPlan,SparkSqlParser、AstBuilder、Analyzer、Optimizer

2023-12-29 16:00:17 1374

空空如也

空空如也

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

TA关注的人

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