自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SparkStreaming默认分区的个数

这种默认是高效的,本身kafak的分区机制就是为了实现数据的分布式存储和消费。每个kafak的分区存储着时间段的日志数据,那么对接到SparkStreaming就可以同事并行的处理数据,加快整个数据处理过程。大大增加了数据处理的耗时,得不偿失。例如在我负责的反爬虫数据处理项目中,我们kafak的主体有七个分区,那么SparkStreaming从kafa接受到的分区数,默认就是10个。接下来就会问Saprk的一些基础知识了,什么吗shuffle,提交流程,Stage阶段等等。

2025-03-11 22:04:51 139

原创 如何优雅的关闭掉SparkStreaming

2、如果在出现突然管理,我们再去做数据预处理之后要去匹配mysql的反爬虫算法,这个时候突然关闭,这个就没办法匹配了,导致最后的结果不对,影响实时监控的识别准确性,遗漏本来应该拉黑的IP名单,我们把优雅关闭SparkStreaming参数设置成true,这样Spark在jvm福安比的时候就正常关闭context,而不是立马关闭。1、比如kafak的数据还没有消费完,突然关闭,这些数据就会被遗漏。在生产环境中,如果立马关闭,就早场一些非常严重的事情。

2025-03-11 22:04:18 79

原创 SparkStreaming是怎么看一个Stage的耗时的

Spark Streaming stage 耗时由最慢的 task 决定,所以数据倾斜时某个task 运行慢会导致整个,Spark Streaming 都运行非常慢。接下来就会问,为什么会导致数据切斜,遇到过那些情况。

2025-03-11 22:03:24 244

原创 了解SparkStreming的背压机制吗

为了解决这个问题,我们引入的被压机制,可以通过参数开起来,开起来之后,可以动态调整消费数据的速度,当不是爬虫高发期的时候,被压机制会适当提高消费速度,充分利用系统资源,在爬虫高发起的时候,被压机制会降低消费速度,避免数据积压吗。最开始我们只是简单设置了每秒拉去的条数,但是在实际运行的过程中,数据出现了延迟,特别是有高级别事件功能上线后,爬虫非常活跃那段时间,可能就会出现数据积压,影响了数据梳理的准确性和时效性。在我们公司反爬虫项目的数仓处理链路中,每天会会产生很多的数据,我们日志数据量20万足左右;

2025-03-11 22:02:50 166

原创 用SparkStreaming是如何控制每次消费的速度

我们的日志数据20万左右,saprkStreaming的配置比较好,通过实际的测试,根据测试结果不断的尝试,我们的分区主是10个分区,所以每秒可以设置拉去的参数在1万左右是比较合理的。通过SparkStreaming的一个拉去参数去控制每秒去kafak哪拉去一次数据多少条,这个可以根据实际情况去做。

2025-03-11 22:02:07 88

原创 使用SparkStreaming是如何保证每次都是精准消费

还有情况但是查资料的时候看到,就是可以通过事务进行进准操作,就是比如你可以写入到mysql,然后通过写入如果失败的话,根据事务的原子性和幂等性,失败的数据他是会回滚的。这样也能保证数据的一致性。kafaka你可以通过设置参数进行确定是自动维护还是手动维护,kafaka默认是自动,至于时间间隔你可以通过参数进行设置。最好就是再确定数据消费处理成功了,在记录偏移量,这就就不会应为SAPRK重启等情况到职数据重复消费,或者缺失消费。手动维护偏移量,处理完业务数据后,再进行提交偏移量操作;

2025-03-11 22:00:35 100

原创 SparkStreaming如何在第一次运行时不丢失数据

这时候如消费启动了,那在启动之前的kafks的数据,如果这个时候参数设置成laste的话,之前的数据就消费不到了,如果使用eriliest就可以消费到。所以当我们第一次运行SparkStreaming的时候,这个时候kafak中还没有任何的偏移量,reset的参数就会从最初始偏移量开始消费数据。就是kafka每个分区的数据都会记录一个偏移量,以便于消费者知道自己当前消费到哪里了,后面再次消费的时候就会从标记的偏移量开始消费。第二个是latest就是从最新的偏移量开始消费;

2025-03-11 21:58:44 166

原创 简述SparkStreming的窗口机制的原理

第三个就是窗口间隔:这个就取决于你要统计的数据范围,保证窗口间隔是batch的整数倍,才能保证数据的完整性,比如你的batch是1秒钟,然后你的窗口长度是1.5秒,那不就是有半秒数据会被重复嘛,没办大保证数据计算的准确性。第二个就是滑动间隔,滑动间隔指的就是窗口移动的间隔,这个看你身实际业务的实时性需要,需要平衡一下系统的性能,滑动间隔必须是batch的整数倍,如果不是的话,就会出现数据计算丢失。那刚才讲到的指标实时统计最近一周的爬虫数量,batch我们设置1秒,滑动间隔就是30秒,窗口长度就是7天。

2025-03-11 21:57:30 261

原创 SparkStreming是什么以及它的基本工作原理

SparkStreaming的原理,其中它一个batch的概念,允许接收到实时的数据之后,会将数据拆分成一个个的batch,比如每一秒流入额实时数据形成一个batch,然后将bantcht提交到spark RDD分布式数据集进行数据计算,数据的结果流也是一个个batch组成的,bath是spark rdd的最小计算单位了。SparkStreaming是Spark core API的一种拓展,它可以进行大规模的实时数据处理;另外它可以从多个数据源获取的数据并且处理换后可以写入的文件系统或者过个数据库库中;

2025-03-11 21:56:35 74

原创 归并排序(二叉树的后续遍历思想和数组的双指针技巧)

1、首先就是要明确归并排序的算法思想,就是二叉数据的后序遍历,就是先从中间分割成两个子数组,然后继续分,直到只剩下一个元素,那么此时就是有序的,这个和构造二叉树时的分解思想十分相似,把子问题全部解决,那问题也就都解决了,至于我们只关注其中一个节点需要完成什么,后续的分解什么的,计算机会替你完成。OK,归并排序的实现思想就讲到这里哦,后面再次刷数据的时候,再好好的将代码实现出来、首先确认一下归并排序的时间复杂度是NlogN的时间复杂度。实现归并排序的算法,我认为有几个困难需要克服掉。

2025-03-11 14:38:44 104

原创 快速排序(二叉树的前序递归遍历思想)

之前我们从选择排序,到选择排序的稳定性优化,到冒泡排序,到插入排序,到插入排序的提前截止时间,到希尔排序,虽然逐步一直都在优化,但是时间复杂度还是N得平方,力扣提交的结果一直都是时间超时,因为时间复杂度并没有发生量级级别的减少,都是通过常规的优化思维,说白一点,就是没有创新的优化点,都是一步一步,一点一点优化,想方设法能能提高一点效率就提高一点。那么从快速排序就是要开始坐飞机了往前冲了,直接打破一个量级的时间复杂度,从N的平方,到Nlogn,N就是二叉树的深度,logn就是每一层的时间复杂度。

2025-03-10 17:37:00 346

原创 选择排序算法的分析

判断排序算法是否文档我们可以分析一下如下两个关键指标:排序的稳定性:对于有序的算法,排序完之后,相对位置是否发生该表是否是原地排序:排序的时候,是否有另外增加空间,还是直接使用了几个变量就在原本的空间进行原地排序。

2025-03-07 17:13:06 993

原创 第 146 题「LRU缓存机制」(手撸LRU算法)

首选用比较通俗的语言来讲一讲LRU算法,那手机内存来举例子,就是当内存超出了手机设置的内存后,就要删除了内存,那删除那部分内存呢,LRU算法就是提供一个策略来选择那些需要缓存需要被删除掉,就是谁隔得最远就删除掉谁。

2025-03-06 10:09:08 175

原创 Spark数据倾斜的问题

Spark的数据倾斜,包括SparkStreaming和Spark SQL,表现主要有下面几种:1、Excutor lost,OOM,Shuffle过程出错3、单个Excutor执行器一直在运行,整体任务卡在某个阶段不能结束4、正常运行的任务突然失败。

2025-03-05 21:57:56 1009

原创 第 450 题「删除二叉搜索树中的节点」

给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。示例 1:输入:root = [5,3,6,2,4,null,7], key = 3输出:[5,4,6,2,null,null,7]解释:给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。

2025-03-05 11:10:45 235

原创 第 701 题「二叉搜索树中的插入操作」

给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。你可以返回 任意有效的结果。

2025-03-05 10:18:49 252

原创 Spark的Partition和HDFS的Block有什么联系

Spark的Partition和HDFS的Block有什么联系。

2025-03-04 13:07:08 85

原创 Spark使用Parqute存储方式有什么好处

生态兼容性高:Spark,hadoop等都兼容。列式存储:压缩效率和查询效率。谓词下推存储层:查询数据块。

2025-03-04 13:04:31 115

原创 Spark的Shuffle和Hadoop的Shuffle的差异

数据传输效率:Spark一个文件加上一个索引,Hadoop一个map一个文件。数据存储方式:Sparkn内存,溢出磁盘;排序操作:Spark可选排序,hadoop强制排序。Spark靠血缘Hadoop靠副本。

2025-03-04 13:01:53 111

原创 Spark为什么比Hadoop快

DAG合并Stage,串行执行。基于内存,基于磁盘。基于血缘,基于副本。

2025-03-04 11:26:01 110

原创 Spark的共享变量是什么

广播变量,就是把变量广播到共享为止或者执行器的本地化存储起来,这样再分布式计算中可以减少大量的网络传输,在大数据场景下可以有效提高任务效率。累加器的使用产假就是分布式聚合计算,能保证数据的容错性。

2025-03-04 11:12:17 107

原创 Spark持久化中的persist()和cahce有什么不一样的

其实cache()是一种特殊的persist()持久化操作,cache()就是默认的pesist持久化侧,也就是仅在内存中作缓存,如果内存不读了,剩余的还是要从头再计算一次。但是persist还有其他几种模式,比如内存溢出了就持久化到磁盘当中去,比如就只选择持久化到磁盘,这些都可以自定义选择。

2025-03-04 11:11:53 81

原创 如何理解Spark中RDD的血统概念

血统可以理解成是Spark分布式计算的基因,血统里面存储了计算的逻辑链,spark可以根据血统存储的计算逻辑链进行数据的重新计算恢复,从而能保证Saprk任务的容错机制。血统其实在一些比较复杂冗长的计算任中,可能性能不佳,因为血统只是存储逻辑链,如果某个RDD计算节点宕机了,那就需要从头开始恢复数据。因此针对血统还可以做chekpoint优化,设置坚持点并将检查点数据持久化到HDFS中,实现计算优化。

2025-03-04 11:11:25 111

原创 第 700 题「二叉搜索树中的搜索」

给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。如果节点不存在,则返回 null。示例 1:输入:root = [4,2,7,1,3], val = 2输出:[2,1,3]示例 2:输入:root = [4,2,7,1,3], val = 5输出:[]提示:树中节点数在 [1, 5000] 范围内root 是二叉搜索树。

2025-03-04 11:10:16 296

原创 Spark为什么要做数据持久化,一般什么情况下做持久化

首先需要阐述的就是Spark为什么要持久,就是因为我们是基于内存去做计算的,如果计算任务比较长,有些计算结果我们就可以复用,来提高我们任务完成的效率。需要持久化的场景,比如我们某部分计算数据会被多次使用,比武我们使用贷迭代算法。

2025-03-03 10:39:22 87

原创 Spark的数据本地性是在哪个环节确定的

那这里就涉及了数据本地性有哪几种,Task调度选择的有限是什么,首先选择缓存数据在同一个JVM进行的执行器,这种是默认的,如果不行,那几下里选择的就是在同一个物理节点上的执行器,然后再是选择在同一个几家上的不同及诶点,然后就收无位置偏好,然后就随意了。

2025-03-03 10:38:07 200

原创 简述Spark的宽窄依赖以及Stage是怎么划分的以及每个stage又是怎么划分task任务数

另外的resultSta的task数据则会根据下游最终那个RDD的需要所分区数据进行分区,这里我们可以进行通过参数控制task的数据,那么就会有200个task任务数,默认是200个分区数据,可以根据实际情况进行优化调参数。简单来理解的话,窄依赖就是父RDD的每个分区最多被一个子RDD所依赖,是一对一依赖,这种情况的操作例如union,flatMap这样的操作,不会产生shuffle。所以划分Stage的边界就是宽依赖,而窄依赖会被流水线话的合并到同一个Stage中进行处理。

2025-03-03 10:35:28 202

原创 简述一下Spark中的hashShuffle和Sortshuffle两中shauffle的流程

这样每个reduce task中就对应了一个输出文件的多个数据块,reduce task执行完后就合并文件了。优化的点就是在于 将同一个Excutor执行器的task任务产生的文件都 共享同一个输出文件,这样优化之后,显著的减少了文件的数据,如果有执行器的数量 乘以 reduce task的数量。在reduce拉去数据之前,所有的数据都会合并成一个有序的数据文件,和一个对应分区的索引文件。每个R任务会从M个task任务区获取各自分区的数据,最终声场的文件数就是,M 乘以 R。

2025-03-03 10:33:07 194

原创 讲一下Spark的shuffle过程

然后shuflle的中间文件结果的存储是通过shuffle manager管理,默认使用SortshuffleManaer,存储方式就是每个shuffle Map Task会生存一个文件,包含所有分区的数据,然后附带一个记录文件各个分区的偏移量,然后我们默认使用的SortShuffleManager会自动的对文件额索引文件进行合并处理,减少文件数量,降低磁盘的IO压力,从而提高shuffle效率。首先shuffle的阶段分为shuffle的shuffle write阶段和shuffle read阶段。

2025-03-03 10:29:52 463

原创 那你认为spark on yarn模式有什么优点

资源隔离:saprk on yarn是基于容器,说明可以对单个执行任务进行cpu还涉及,不影响整体的集群计算。首先是可以进行动态机制,在任务运行过程中,如果有空闲的worker节点了,那么会利用起来。其次是同一运维,yarn不经很支持spark,还支持haddop生态,还有flink等。Spark-on-yarn是生产环境广泛采用的一种集群模式,有如下的有点。集群规模:yarn集群可以一直吃公司级别的大规模集群。

2025-03-03 10:26:55 97

原创 简述一下Spark on yarn的任务执行流程

2、source manager管理器进行资源解析后启动aplication master节点,并且启动driver驱动器进行DAG执行计划和task任务生成。所以spark 欧尼yarn涉及到了yarn的sourceManager和appication master及诶点和nodemannage管理及诶点。spark on yarn的模式其实就是把资源管理调度交给yarn,有yarn进行统一的资源分配管理。4、nodemanager咋分配的容器中执行excutor,执行task任务。

2025-03-03 10:25:28 235

原创 简述下Spark中的自带的standalone集群管理的任务执行流程

driver驱动器是负责管理任务的DAU,负责调度运行task任务,取决于standalone是那种模式,如果是clinet的就是,就是提交大客户端机器上,如果是standaone on clusetr,就是会运行在某个从节点上。spark的standalone模集群模式是spark自带的一种集群模式,主要就是适用于进行测试环境的测试工作,以及一些数据小范围的测试使用,一般不用于生产环境。其中master指的就是主节点,管理对worker从节点资源的分配和管理,决定Driver和xcutor的运行位置。

2025-03-03 10:24:28 213

原创 Spark架构都有那些组件

Spark组件架构主要采用主从结构,分别是driver驱动器,Excutor执行器,和cluster Manager集群管理器这个三个架构组件。第三种是spark on meoss,meoss是一种类似于yarn的集群资源管理,在国外用的比较常见。第二种是spark on yarn,就是将任务字段给到apache yarn进行资源调度管理。其中driver驱动器主要负责spark执行Excutor的任务分配。第一种的spark自带的的集群管理,叫做standalone。

2025-03-03 10:19:16 280

原创 Spark使用commit提交任务的参数有那些

第三个就是每个执行机器的设置内存,这个根据实际的任务进行灵活调整,我们公司但是是6G或者8G。第二个就是每个任务执行节点的内核,默认就是1,官方建议2-5个,我们公司设置的3个。第一个是需要运行的主函数class:这个就是jar包里面的主函数。另外两个就是driver的内核和内存。

2025-03-03 10:17:53 83

原创 Spark常见面试题目(1)

第一种是local本地部署,通常就是一台机器用于测试。第二种是standalone部署模式,就是一个master节点,控制几个work节点,其实一台机器的standalone模式就是它自己即是master,又是work。第三种是yarn模式,就是吧spark交给yarn进行资源调度管理。第四种就是messon模式,这种在国内很少见到。

2025-03-03 10:16:39 659

原创 Spark任务用什么提交的

2、使用spark-commit的shell脚本提交任务:这种就是涉及到jar包,我们会开发好我们的逻辑并通过maven打包好java包,通过spark-commit命令提交saprk运行任务李并且在工作中我们需要通过xx-job或者Airfloe,Azkaban,等等的调度工具进行定时调度运行。1、使用spark_shell:日常做一些简单的测试,使用spark-shell命名就可以,然后通过scala语言进行查询处理。

2025-03-03 10:15:26 204

原创 Spark主备切换了解么

如果是在 spark standalone集群模式下,也就是使用spark自带的集群管理模式,那么spark的master阶段管理worker的资源分配,为防止master主节点宕机导致,可以对master节点进行高可用设置。也就是备份几个stand master节点。实现主要是通过zookeper的选择机制进行主节点的选取,其中另外一个比较关键的步骤就需要进行状态持久化,mater节点了持久化当前集群的元数据到zookeeper。如果是spark yarn模式的话,就按按yarn的高可用方式就可以了。

2025-03-03 10:04:25 292

原创 Spark有哪几种部署模式,都有那些特点

第二种是standalone部署模式,就是一个master节点,控制几个work节点,其实一台机器的standalone模式就是它自己即是master,又是work。第三种是yarn模式,就是吧spark交给yarn进行资源调度管理。第一种是local本地部署,通常就是一台机器用于测试。第四种就是messon模式,这种在国内很少见到。

2025-03-03 10:02:18 90

原创 98. 验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:root = [2,1,3]输出:true示例 2:输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4。提示:树中节点数目范围在[1, 104] 内。

2025-03-03 10:00:30 202

原创 538. 把二叉搜索树转换为累加树

给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。

2025-02-25 09:36:29 394

空空如也

空空如也

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

TA关注的人

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