大数据
文章平均质量分 77
话数Science
大数据工程师
展开
-
【Flink电商项目】系统架构
原创 2024-02-29 09:45:07 · 331 阅读 · 0 评论 -
【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 · 455 阅读 · 0 评论 -
【Flink精讲】Flink反压调优
简单来说, Flink 拓扑中每个节点(Task)间的数据都以阻塞队列的方式传输,下游来不及消费导致队列被占满后,上游的生产也会被阻塞,最终导致数据源的摄入被阻塞。2)影响 state 大小: barrier 对齐时,接受到较快的输入管道的 barrier 后,它后面数据会被缓存起来但不处理,直到较慢的输入管道的 barrier 也到达,这些被缓存的数据会被放到 state 里面,导致 checkpoint 变大。因此,我们在生产中要尽量避免出现反压的情况。原创 2024-02-26 16:34:02 · 609 阅读 · 0 评论 -
【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 · 641 阅读 · 0 评论 -
【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 · 1241 阅读 · 0 评论 -
【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 · 718 阅读 · 0 评论 -
【Flink精讲】Flink任务调度机制
【Flink精讲】Flink任务调度机制Flink 中的执行图可以分成四层: StreamGraph -> JobGraph -> ExecutionGraph -> 物理执行图。StreamGraph:是根据用户通过 Stream API 编写的代码生成的最初的图。用来表示程序的拓扑结构。JobGraph: StreamGraph 经过优化后生成了 JobGraph,提交给 JobManager 的数据结构。主要的优化为原创 2024-02-24 09:24:05 · 674 阅读 · 0 评论 -
【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 · 359 阅读 · 0 评论 -
【Flink精讲】Flink 内存管理
目前, 大数据计算引擎主要用 Java 或是基于 JVM 的编程语言实现的,例如 Apache Hadoop、 Apache Spark、 Apache Drill、 Apache Flink 等。Java 语言的好处在于程序员不需要太关注底层内存资源的管理,但同样会面临一个问题, 就是如何在内存中存储大量的数据(包括缓存和高效处理)。Flink 使用自主的内存管理,来避免这个问题。原创 2024-02-21 19:26:47 · 655 阅读 · 0 评论 -
【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 · 419 阅读 · 0 评论 -
【Flink详解】Flink on YARN任务提交流程
【Flink详解】Flink on YARN任务提交流程原创 2024-02-19 17:21:08 · 120 阅读 · 0 评论 -
【大数据面试题】HBase面试题附答案
HBase是一种基于Hadoop的列示分布式非关系型数据库,它是高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价服务器上搭建起大规模结构化存储集群。它是Google论文BigTable的实现。a. 保证HMaster的高可用;b. 存储所有的HRegion的寻址入口;c. 实时监控HRegionServer的上线和下线信息,并实时通知给HMaster;d. 存储HBase的schema和table元数据;原创 2024-01-25 16:14:49 · 1646 阅读 · 0 评论 -
【大数据精讲】全量同步与CDC增量同步方案对比
全量同步与CDC增量同步方案对比问题与挑战FlinkCDCFlink CDC 是以 Debezium 作为底层采集工具。Debezium 支持全量同步,也支持增量同步,也支持全量 + 增量的同步,非常灵活,同时基于日志的 CDC 技术使得提供 Exactly-Once 成为可能。DataX工作原理调度流程性能优化原创 2024-01-23 19:21:30 · 1334 阅读 · 0 评论 -
【大数据精讲】HBase基本概念与读写流程
HBase基本概念HBase数据模型Name Space命名空间TableRowColumnTime StampCell逻辑结构物理存储结构基础架构Meta表架构RegionServer架构HBase写流程HBase读流程原创 2024-01-23 09:54:26 · 1183 阅读 · 0 评论 -
MySQL与PostgreSQL对比
MySQL与PostgreSQL对比2000万计算逻辑三层情况下:1170 * 1170 * 16 = 21902400,得出两千万左右条数据PostgreSQL单表最大32T,不限制记录数,但最多能存多少条记录还要看单条记录大小和对查询性能的要求,如果没有复杂的查询或统计操作正常单表上亿条记录查询性能也是能接受的。否则就要考虑分区或分库分表操作。看网上经验值,为保证较好的查询性能,MySQL在单表1000w~2000w数据记录时就要考虑分库分表操作。原创 2024-01-21 11:10:14 · 1222 阅读 · 0 评论 -
【大数据面试】常见数仓建模面试题附答案
什么是数据仓库?如何构建数据仓库?概念模型、逻辑模型、物理模型分别介绍一下?SCD常用的处理方式有哪些?模型设计的思路?业务驱动?数据驱动?数仓架构为什么要分层?事实表的类型?维度建模步骤?维度建模的三种模式?数仓架构进化?数据仓库如何保证数据质量?开发流程/你们是怎么测试的?维度建模过程?维度建模的三种模式?事实表都有哪几种?原创 2024-01-11 10:54:10 · 1746 阅读 · 0 评论 -
【大数据面试】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 · 1361 阅读 · 1 评论 -
【大数据OLAP引擎】StarRocks为什么快?
StarRocks最初主要的优势是性能,当时在单表查询方面与性能标杆ClickHouse不相上下,而join优化特性使其在多表关联查询场景下的性能表现要远远优于ClickHouse,替换ClickHouse自然也就成了StarRocks的第一个目标。而StarRocks的野心不止于此,后来又进一步发展了联邦查询功能,成为Presto的性能升级替代方案。与此同时,StarRocks优良的预计算特性让其成为Druid的一种替代选择。原创 2024-01-10 21:42:20 · 1281 阅读 · 0 评论 -
【大数据OLAP引擎】StartRocks存算分离
存算分离的原因:降低存储成本:同样的存储大小对象存储价格只有SSD的1/10,存储成本降低80%。StarRocks存算分离技术在现有存算一体架构的基础上,将计算和存储进行解耦。在存算分离新架构中,数据持久化存储在更为可靠和廉价的远程对象存储或 HDFS 上。CN 本地磁盘只用于缓存热数据来加速查询。在本地缓存命中的情况下,存算分离可以获得与存算一体架构相同的查询性能。存算分离架构下,用户可以动态增删计算节点,实现秒级的扩缩容。存算分离大大降低了数据存储成本和扩容成本,利于实现资源隔离和计算资源的弹性伸缩原创 2024-01-10 20:07:14 · 698 阅读 · 0 评论 -
【大数据架构】OLAP实时分析引擎选型
Doris,Elasticsearch,Impala,Kylin,Druid,Presto,GreenPlumOLAP分析场景中,一般认为QPS达到1000+就算高并发,而不是像电商、抢红包等业务场景中,10W以上才算高并发,毕竟数据分析场景,数据海量,计算复杂,QPS能够达到1000已经原创 2024-01-10 17:01:51 · 1407 阅读 · 0 评论 -
【大数据架构】日志采集方案对比
Flume更注重于数据的传输,对于数据的预处理不如Logstash。在传输上Flume比Logstash更可靠一些,因为数据会持久化在channel中。数据只有存储在sink端中,才会从channel中删除,这个过程是通过事物来控制的,保证了数据的可靠性。Logstash是ELK组件中的一个,一般都是同ELK其它组件一起使用,更注重于数据的预处理,Logstash有比Flume丰富的插件可选,所以在扩展功能上比Flume全面。但Logstash内部没有persist queue,所以在异常情况下会出现数据丢原创 2024-01-09 20:41:19 · 1093 阅读 · 0 评论 -
【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 · 842 阅读 · 0 评论 -
【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 · 1361 阅读 · 0 评论 -
【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 · 990 阅读 · 0 评论 -
【Spark精讲】RDD共享变量:广播变量与累加器
在Spark中,提供了两种类型的共享变量:广播变量 (broadcast variable)与累加器 (accumulator)原创 2024-01-03 19:40:55 · 407 阅读 · 0 评论 -
【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 · 638 阅读 · 0 评论 -
【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 · 1277 阅读 · 0 评论 -
我的大数据之路:2023年度总结
我的大数据之路:2023年度总结2023年度最值得骄傲的事2023年度吐血的经验教训Kafka+Flink+StarRocks/Doris的实时离线一体化方案正在成为小公司数仓架构首选。2023年度难忘的面试经历原创 2024-01-02 21:47:42 · 1145 阅读 · 0 评论 -
【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 · 1392 阅读 · 0 评论 -
【Spark精讲】记一个SparkSQL引擎层面的优化:SortMergeJoinExec
SortMergeJoin的实现方式并不用将一侧的数据全部加载后进行Join操作,其前提条件是需要在Join操作前将数据排序,为了让两条记录链接到一起,需要将具有相同Key记录分发到同一个分区,因此一般会进行一次Shuffle操作(即物理执行计划中的Exchange节点),根据Key分区,将连接到一起的记录分发到同一个分区内,这样在后续的Shuffle阶段就可以将两个表中具有相同Key记录分到同一个分区处理.",不同表的角色在Spark SQL中会通过一定的策略进行设定,通常来讲,系统会。原创 2024-01-02 19:11:23 · 667 阅读 · 0 评论 -
【大数据面试知识点】Spark的DAGScheduler
先看一下DAGScheduler的注释,可以看到DAGScheduler除了Stage和Task的划分外,还做了缓存的跟踪和首选运行位置的计算。DAGScheduler的运行时机DAGScheduler运行时机:Driver端初始化SparkContext时。DAGScheduler是在整个Spark Application的入口即 SparkContext中声明并实例化的。在实例化DAGScheduler之前,巳经实例化了SchedulerBackend和底层调度器 TaskScheduler。原创 2024-01-01 17:19:38 · 1274 阅读 · 0 评论 -
【大数据面试知识点】Spark中的累加器
累加器用来把Executor端变量信息聚合到Driver端,在driver程序中定义的变量,在Executor端的每个task都会得到这个变量的一份新的副本,每个task更新这些副本的值后,传回driver端进行merge。累加器一般是放在行动算子中进行操作的。原创 2024-01-01 12:32:56 · 676 阅读 · 0 评论 -
【大数据面试知识点】分区器Partitioner:HashPartitioner、RangePartitioner
【大数据面试知识点】分区器Partitioner:HashPartitioner、RangePartitioner原创 2024-01-01 12:15:28 · 670 阅读 · 0 评论 -
【Spark精讲】一文搞懂Spark分区器Partitioner
但是需要注意的是,由于JAVA中数组的hashCode是基于数组对象本身的,不是基于数组内容的,所以如果RDD的key是数组类型,那么可能导致数据内容一致的数据key没法分配到同一个RDD分区中,这个时候最好自定义数据分区器,采用数组内容进行分区或者将数组的内容转换为集合。该分区器的实现方式主要是通过两个步骤来实现的,第一步:先重整个RDD中抽取出样本数据,将样本数据排序,计算出每个分区的最大key值,形成一个Array[KEY]类型的数组变量rangeBounds;原创 2023-12-31 23:59:54 · 913 阅读 · 0 评论 -
【Spark精讲】一文搞懂Spark钨丝Tungsten
【Spark精讲】一文搞懂Spark钨丝Tungsten、内存管理机制、缓存敏感计算( Cache-aware computation)、动态代码生成( Code generation)原创 2023-12-31 12:07:16 · 981 阅读 · 0 评论 -
【Spark精讲】一文讲透SparkSQL聚合过程以及UDAF开发
【Spark精讲】一文讲透SparkSQL聚合过程以及UDAF开发:SparkSQL聚合过程、PARTIAL1、PARTIAL2、FINAL、COMPLETE原创 2023-12-30 11:17:05 · 1364 阅读 · 0 评论 -
【Spark精讲】一文讲透SparkSQL物理执行计划
【Spark精讲】一文讲透SparkSQL物理执行计划,SparkPlan,LeafExecNode类型,BinaryExecNode类型原创 2023-12-29 18:20:01 · 1579 阅读 · 0 评论 -
【Spark精讲】一文讲透SparkSQL执行过程
【Spark精讲】一文讲透SparkSQL执行过程,未解析的逻辑算子树,解析后的逻辑算子树,优化后的逻辑算子树,物理算子树,QueryPlan、LogicalPlan,SparkPlan,SparkSqlParser、AstBuilder、Analyzer、Optimizer原创 2023-12-29 16:00:17 · 1360 阅读 · 0 评论 -
【Spark精讲】一文讲透Spark RDD
一文讲透Spark RDD,DAG,Checkpoint,RDD五大特性:分区、依赖、计算函数、分区器、首选运行位置原创 2023-12-28 16:39:37 · 1290 阅读 · 0 评论 -
【Spark精讲】一文讲透Spark宽窄依赖的区别
一文讲透Spark宽窄依赖的区别,NarrowDependency,RangeDependency,ShuffleDependency,groupByKey,reduceByKey,cartesian,cogroup,join原创 2023-12-28 15:58:18 · 917 阅读 · 0 评论