自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 Hive组成架构和工作原理

Apache Hive 是一个基于 Hadoop 的数据仓库工具,主要用于处理和分析大规模结构化数据。它将 SQL 查询转换为 MapReduce 任务,使得用户可以通过熟悉的 SQL 语法来操作 Hadoop 分布式文件系统(HDFS)中的数据。

2025-03-03 23:35:28 582

原创 Hadoop--NameSpace(名称空间)

HDFS 的名称空间是一个逻辑上的文件系统目录树,用于组织文件和目录,并维护元数据信息。名称空间的元数据存储在 NameNode 的内存中,并持久化到磁盘的 fsimage 和 edits 日志 文件中。

2025-02-22 22:31:33 1113

原创 Hadoop--Secondary NameNode工作机制,作用及与NameNode HA的区别

  Secondary NameNode 主要用于辅助 NameNode 进行元数据的管理和检查点(Checkpoint)的生成。

2025-02-22 21:23:10 1361

原创 Doris--分桶,压缩,副本,TTL,建表模式,压缩策略

Apache Doris是一个基于MPP架构(Massively Parallel Processing,大规模并行处理)的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 在多维报表、即席查询、用户画像、实时大屏、日志分析、数据湖查询加速等诸多业务领域都能得到很好应用。

2025-02-22 19:31:50 1817 1

原创 clickhouse--本地表和分布式表,副本机制,分片集群

副本虽然能够提高数据的可用性,降低丢失风险,但是每台服务器实际上必须容纳全量数据,对数据的横向扩容没有解决。要解决数据水平切分的问题,需要引入分片的概念。通过分片把一份完整的数据进行切分,不同的分片分布到不同的节点上,再通过 Distributed 表引擎把数据拼接起来一同使用。Distributed 表引擎本身不存储数据,有点类似于 MyCat 之于 MySql,成为一种中间件,通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据。

2025-02-21 19:32:31 1522

原创 clickhouse--表引擎的使用

  表引擎是 ClickHouse 的一大特色。可以说,表引擎决定了如何存储表的数据。包括:特别注意:引擎的名称大小写敏感, 驼峰命名  以列文件的形式保存在磁盘上,不支持索引,没有并发控制。一般保存少量数据的小表,生产环境上作用有限。可以用于平时练习测试用。如:②Memory  内存引擎,数据以未压缩的原始形式直接保存在内存当中,服务器重启数据就会消失。读写操作不会相互阻塞,不支持索引。简单查询下有非常非常高的性能表现(超过 10G/s)。  一般用到它的地方不多,除了用来测试,就是在需要非常高的性

2025-02-21 18:16:07 1210

原创 flink UDF使用

Flink UDF(User-Defined Function)是用户自定义函数,用于扩展 Flink SQL 或 Table API 的内置函数功能。

2025-02-20 19:31:41 1313

原创 设计模式理解与总结

设计模式是一种在软件开发中常见的解决方案,用于解决特定类型的问题。它们是经过实践验证的最佳实践,提供了一些设计方案,以提高代码的可重用性、可维护性和可扩展性。

2025-02-20 18:57:07 686

原创 JVM--内存泄漏

内存泄露:指程序中动态分配内存给一些临时对象,但对象不会被GC回收,它始终占用内存,被分配的对象可达但已无用。即无用对象持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间浪费。

2025-02-11 16:00:58 798

原创 Spark性能调优方法总结

  Spark的分配资源主要就是 executor、cpu per executor、memory per executor、driver memory 等的调节,我们在生产环境中,提交spark作业时,用的spark-submit shell脚本,里面调整对应的参数:/usr/local/spark/bin/spark-submit –conf spark.default.parallelism=12 –num-executors 3 –executor-cores 2 –executor-me

2025-02-11 01:09:47 3345 1

原创 构建Spark应用程序入口的几种常见方式

推荐优先使用 SparkSession(Spark 2.x+),它整合了所有功能。

2025-02-10 20:58:20 586

原创 Spark--FIFO,Fair调度器

Spark 中的调度模式主要有两种:FIFO 和 FAIR。使用哪种调度器由参数 spark.scheduler.mode 来设置,可选的参数有 FAIR 和 FIFO,默认是FIFO。在 Scheduler 模块中,当 stage 划分好,然后提交 Task 的过程中,会进入 TaskSchedulerlmpl 的submitTasks 方法。

2025-02-10 16:28:10 641

原创 Hadoop--FIFO、Capacity、Fair资源调度器

目前,Hadoop作业调度器主要有三种:FIFO、Capacity Scheduler、Fair Scheduler。Hadoop3.1.3默认的资源调度器是Capacity Scheduler。

2025-02-10 01:07:11 741

原创 Spark通信框架rpc源码篇

接下来,我们看一个具体的案例:在standalone模式中,worker会定时发心跳消息(SendHeartbeat)给master,那心跳消息是怎么从worker发送到master的呢,master又是怎么接收消息的?

2025-02-09 20:35:18 980

原创 spark通信框架rpc原理篇

(Remote Procedure Call)是的缩写,是一种通信协议,。RPC在分布式系统中非常常用,因为它可以让程序员像调用本地函数一样来调用远程服务。在Apache Spark中,RPC是用于在节点之间进行通信的机制Spark使用Netty作为RPC框架,它可以让节点之间的通信更快、更可靠。在Spark中,RPC主要用于在Executor和Driver之间传输数据和调用方法。例如,当Executor需要将数据传输到Driver时,它会使用RPC机制将数据发送到Driver。

2025-02-09 17:44:27 1947

原创 spark运行架构

Spark集群Cluster Manager目前支持如下三种模式:Standalone模式、YARN模式和Mesos模式。这里重要介绍前两种。

2025-02-08 14:20:56 1622

原创 Spark--Shuffle Read流程源码解析

显然,这个方法才是核心所在。所以很显然,我们想知道的shuffle读取数据的具体逻辑就藏在ShuffleBlockFetcherIterator中。

2025-02-07 18:02:14 939

原创 Spark--Shuffle Write流程源码解析

7、TaskRunner在调用run方法时,会调用Task的run方法,然后调用子类的runTask方法,Task有两个子类,分别是ShuffleMapTask和ResultTask,ResultTask无需shuffle,对数据进行相应的逻辑处理(func)后返回。6、executor端实例化一个线程池来准备task的计算,创建的threadPool中以多线程并发执行和线程复用的方式来高效执行task,接收到task执行的命令后,会首先把task封装在TaskRunner中,然后交给线程池中的线程处理。

2025-02-07 10:31:43 492

原创 Spark--Shuffle机制理解及优化

DAGScheduler调度时会根据是否需要经过Shuffle过程将]ob划分为多个Stage。Shuffle就这么重要?正是由于Shufie的计算几乎需要消耗所有类型的硬件资源,比如CPU、内存、磁盘与网络,在绝大多数的Spark作业中,Shufie往往是作业执行性能的瓶颈。Shuffle的本质就是数据重组分发的过程。有了上图的形状分类的直观对比,我们现在就可以直接给 Shuffle 下一个正式的定义了。集群范围内跨节点、跨进程的数据分发。

2025-02-07 01:14:32 1525

原创 Spark--执行器后端和调度器后端扮演什么角色

负责资源管理,与集群管理器交互,协调任务调度:负责在Executor中执行任务,并与Driver进行任务状态的反馈。

2025-02-06 17:51:28 305

原创 Spark--Driver与Executor间的通信--源码解读

1、接下来先看Excutor端向Driver注册,看ExecutorBackend进程做了什么,上次最后一步为,但是实际的命令为:所以首先double shift找到org.apache.spark.executor.CoarseGrainedExecutorBackend这个类继承了lsolatedRpcEndpoint,所以这个类也是一个Endpoint。

2025-02-06 17:37:16 840

原创 Spark--资源调度--源码分析

Spark任务执行前的准备工作--申请资源--源码解析

2025-02-06 15:54:28 716

原创 Spark--Task切分源码分析

说到任务的划分,就不得不提到RDD,我们知道在spark中,算子只有在遇到行动算子才会执行(如colect()),转换算子都是懒加载,所以要想知道Task任务怎么划分的,得先从行动算子看起,我们下面以WordCount项目为例:12.再往下滑,定义了这个tasks,并且根据stage的依赖情况赋值13.再往下滑,把任务由DAGScheduler交由TaskScheduler处理。

2025-02-06 13:47:12 576

原创 Spark--任务执行流程

8、DAGScheduler根据shuffle依赖从后往前划分stage,将每个stage的tasks信息(包括最优先的资源位置)封装成一个taskSet,从前往后提交给TaskScheduler。10、driver端进行资源画像,决定如何将task分配给可用的executor,将task信息和其资源信息封装成LunchExecutor,发送给executor端。6、executor端构建rpcEnv,与driver端建立通信,创建executor,并将executor信息发送给driver端。

2025-02-06 11:51:45 562

原创 Spark--启动方式

Spark--启动方式

2025-02-06 01:19:44 189

原创 Spark--任务调度

Spark--任务调度

2025-02-06 01:11:12 326

原创 Spark--Driver提交任务的流程

Spark--Driver任务提交过程

2025-02-06 00:59:49 233

原创 Spark--分区数的确定

1.如果textFile指定分区数量为0或者1的话,defaultMinPartitions值为1,则有多少个文件,就会有多少个分区。2.如果不指定默认分区数量,则默认分区数量为2,则会根据所有文件字节大小totalSize除以分区数量partitons的值goalSize,然后比较goalSize和hdfs指定分块大小(这里是32M)作比较,以较小的最为goalSize作为切分大小,对每个文件进行切分,若文件大于大于goalSize,则会生成该文件大小/goalSize + 1个分区。

2025-02-06 00:40:12 947

原创 Spark--算子执行原理

SortByKey是一个transformation算子,但是会触发action,因为在sortByKey方法内部,会对每个分区进行采样,构建分区规则(RangePartitioner)。

2025-02-05 19:51:57 781

原创 Spark--如何理解RDD

rdd是对数据集的逻辑表示,本身并不存储数据,只是封装了计算逻辑,并构建执行计划,通过保存血缘关系来记录rdd的执行过程和历史(当一个rdd需要重算时,系统会根据血缘关系追溯到最初的数据源,重建丢失的数据),调用行动算子时,会从数据源读取数据并进行计算。

2025-02-05 15:32:14 2126

原创 MySQL--为什么有了redo log还需要double write buffer机制?

我们都知道,数据页被加载到内存中,经过增删改操作后,并不会直接落盘,而是由后台线程择机统一刷盘。在数据页尚未落盘时,如果这时MySQL突然崩溃或者断电,内存中的数据将全部丢失。这时,redo log就可以发挥其作用了,只要重放redo log就可以恢复事务。但是,MySQL的buffer一页的大小是16K,底层文件系统一页的大小是4K,换句话说,MySQL将一页buffer数据刷入磁盘,需要写到4个文件系统里的页。

2025-01-20 22:39:34 459

原创 Java中的装箱和拆箱是什么

要了解这一机制,首先得知道Java的八大基本数据类型:byte,short,int,long,float,double,char,boolean。比如,将字符串转换为整型int,可以使用Integer.parseInt()方法,转换为浮点型Double,可以使用Double.parseDouble()方法。因此,如果要将基本数据类型的数据存储在集合中,就必须使用其对应的包装类。另一种是在方法调用的时候,比如一个Integer类型的方法,参数列表为Integer类型,但是传入了一个int类型的变量。

2025-01-17 22:23:53 458

原创 MySQL一行记录是怎么存储的

MySQL默认的存储引擎是InnoDB,InnoDB存储的数据放在哪里呢?所以,数据默认会被存放在目录下。我们每创建一个 database(数据库)都会在目录里面创建一个以database为名的目录,然后保存表结构和表数据的文件都会存放在这个目录里。假如,我这里有一个名为 my_test 的 database,该 database 里有一张名为 t_order 数据库表。那么,在目录下有什么文件呢?.frm.ibd所以,MySQL 的数据存放在目录下的.ibd文件中。

2025-01-17 13:55:27 1037

原创 Spark源码编译流程

如果我们配置了此项,那么打包时会忽略很多依赖项,很容易造成编译失败的问题。即使编译成功了,目标环境的这些依赖项,与编译好的Spark运行所需要的依赖项也很容易发生冲突,产生运行时报错的问题。因为编译源码需要导入提前编译好的Spark文件中的所有jar包,所有spark-3.0.3.tgz (Spark源码)和spark-3.0.3-bin-hadoop3.2.tgz(编译好的Spark)都要下载。解决方法:打开报错信息中对应的scala文件,找到如下代码,至此,关于spark源码的编译与打包已完成。

2025-01-17 13:54:18 1135

原创 Namenode is on safe mode

在这个过程中,Namenode会将元数据加载到内存中,并且收集datanode汇报过来的block块信息,Namenode的元数据中记录了文件系统中所有文件的元数据(这个文件多大,有几块,副本数是多少?),如果这时datanode挂掉或者磁盘出现损坏导致块丢失,Namenode就会进入安全模式。这时,如果datanode恢复正常,或者通过其他副本复制至原本应有的副本数(默认是3个),Namenode就会退出安全模式。Namenode如果发现,集群中文件block数丢失达到0.001%,则会进入安全模式。

2025-01-17 13:48:27 361

原创 大数据常用端口号

spark 的master与worker进行通讯的端口 ,standalone集群提交Application的端口    7077。查看当前Spark-shell 运行情况端口号,Driver的WEB UI 端口    4040。CDH的regionServer的WEB UI 管理端口    60030。HDFS Web UI端口(查看集群文件及目录)    9870。Apache的master的WEB UI端口    16010。CDH的master的WEB UI端口    60010。

2025-01-17 13:44:30 283

原创 MySQL--Buffer Pool是如何管理缓存页的,又是如何提高缓存命中率的?

Innodb 存储引擎设计了一个缓冲池(Buffer Pool),来提高数据库的读写性能。

2025-01-16 22:51:22 603

原创 MySQL日志--undolog,redolog,binlog

我们知道,在MySQL中,事务有四个特性:原子性,一致性,隔离性和持久性。那么,这些特性是怎么实现的呢?其中原子性和持久性就是通过MySQL的undo log和redo log来实现的。

2025-01-16 18:42:56 669

原创 MySQL--死锁的产生和解除方法

两个或多个事务在操作过程中,产生了多个锁,这些事务相互等待着对方释放锁,形成闭环阻塞,导致死锁。

2025-01-16 15:41:53 571

原创 MySQL-锁

在 MySQL 中,锁具有很重要的作用,它可以保证事务的隔离性,同时保证数据的完整性和有效性。根据加锁的范围,可以分为全局锁、表级锁和行锁三类。

2025-01-16 15:06:25 838

空空如也

空空如也

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

TA关注的人

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