自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spark 广播变量broadcast

broadcast使用如下图,可以看到创建broadcast是val barr1 = sc.broadcast(arr1),使用broadcast是barr1.value创建broadcast是使用的broadcastManager。

2024-07-22 15:29:20 809

原创 spark 动态资源分配dynamicAllocation

动态资源分配,主要是spark在运行中可以相对合理的分配资源。

2024-07-19 17:32:19 798

原创 spark 事件总线listenerBus

图片来源:https://blog.csdn.net/sinat_26781639/article/details/105012302。

2024-07-17 17:59:32 672

原创 spark 读操作

Shuffle read的入口是ShuffleRDD的compute方法。它获取shuffleReader,执行对应的read方法。创建reader的时候首先获取要读的shuffle block对应的信息,创建shuffle reader。read创建wrappedStreams:Iterator[(BlockId, InputStream)],一个block对应一个input streamrecordIter 将stream中数据反序列成(k,v)metricIter 遍历统计。

2024-07-15 14:48:30 1296 1

原创 spark shuffle写操作——UnsafeShuffleWriter

使用long类型packedRecordPointer存储数据。数据结构为:[24 bit partition number][13 bit memory page number][27 bit offset in page]

2024-07-10 17:25:40 866

原创 spark shuffle写操作——SortShuffleWriter

写入的简单流程:1.生成ExternalSorter对象2.将消息都是插入ExternalSorter对象中3.获取到mapOutputWriter,将中间产生的临时文件合并到一个临时文件4.生成最后的data文件和index文件可以看到写入的重点类是ExternalSorter对象。

2024-07-08 11:50:48 910

原创 spark shuffle写操作——BypassMergeSortShuffleWriter

每一个分区都生成一个临时文件,创建DiskBlockObjectWriter对象,放入partitionWriters。

2024-07-05 15:44:09 445

原创 spark shuffle——shuffle管理

shuffle系统的入口。ShuffleManager在driver和executor中的sparkEnv中创建。在driver中注册shuffle,在executor中读取和写入数据。registerShuffle:注册shuffle,返回shuffleHandleunregisterShuffle:移除shuffleshuffleBlockResolver:获取shuffleBlockResolver,用于处理shuffle和block之间的关系。

2024-07-05 11:09:48 1015

原创 spark调度体系——task执行

executor收到LaunchTask消息后,先将消息解码成TaskDescription对象,再调用launchTask方法执行。runTask是抽象方法,具体实现是在子类ResultTask和ShuffleMapTask中。taskBinary反序列化成(rdd, func),调用func方法返回结果。创建TaskRunner的线程包装类,用于执行task。Task是抽象类,run方法中是调用了runTask方法。ResultTask是结果task,最终是返回结果。

2024-06-27 19:23:04 303

原创 spark调度体系——stage/task提交

stage提交入口是在DAGScheduler类的handleJobSubmitted方法最后,调用submitStage提交最后一个stage。遍历stage,根据isAvailable判断stage是否完成。这里只会向上找一层的shuffleMapStage。如果shuffle输出结果数量达到对应numPartitions,则表示shuffle完成,即shuffleMapStage完成。

2024-06-24 14:35:46 409

原创 spark调度体系——stage划分

rdd中的action算子,会触发job任务计算。以collect算子举例,可以看到最后是调用的DAGScheduler的submitJob方法DAGScheduler的runJob调用的是submitJob方法。submitJob是先生成新的jobId,发送JobSubmitted的消息。DAGScheduler收到JobSubmitted消息后,调用handleJobSubmitted方法。handleJobSubmitted调用createResultStage方法。

2024-06-20 18:15:21 492

原创 spark on yarn 作业提交流程源码

借图。

2024-06-17 16:40:04 342

原创 spark存储体系——BlockManager

BlockManager类是在driver和executor上运行,提供了存储的接口。用户只需要调用BlockManager相关的方法就可以完成存储相关的功能。

2024-06-07 20:24:47 763

原创 spark存储体系——blockManager的RPC

blockManager的RPC:● BlockManagerMasterEndpoint:rpc节点,管理所有的BlockManager● BlockManagerMasterHeartbeatEndpoint:rpc节点,处理blockManager的心跳● BlockManagerMaster:封装了主节点和心跳节点● BlockManagerSlaveEndpoint:rpc节点,用来处理block相关的消息。

2024-06-07 16:53:07 204

原创 spark存储体系——blockInfo管理(锁)

● BlockInfoManager:管理block的元数据,同时也提供了block加锁的功能。

2024-06-07 14:15:02 421

原创 spark 存储体系——磁盘

磁盘存储主要是DiskBlockManager和DiskStore两个类。比较简单。DiskBlockManager:block和磁盘文件对应关系DiskStore:将block实际写入磁盘文件。

2024-06-06 19:40:57 394

原创 spark 存储体系——内存

spark内存存储 MemoryStore

2024-05-24 18:17:43 397 1

原创 spark 内存管理(源码)2

管理单个任务分配的内存。一个task对应一个TaskMemoryManager.一个TaskMemoryManager包含多个consumer.

2024-05-24 11:16:56 375 1

原创 spark 内存管理(源码)1

spark的内存管理相关的类主要是org.apache.spark.memory包下面(java和scala两部分).spark的内存管理实际上是对jvm内存的管理的一个逻辑规划,包括分配内存、释放内存等。org.apache.spark包重点介绍了相关实现类。MemConsumer是spark中不同组件和场景使用内存的客户端(TaskMemoryManager的客户端),使用它来操作内存。TaskMemoryManager是管理task的内存,它是MemoryManager的客户端。

2024-05-23 10:23:41 641 1

原创 spark worker组件分析

Worker是Spark在local-cluster部署模式和Standalone部署模式中对工作节点的资源和Executor进行管理的服务。Worker一方面向Master汇报自身所管理的资源信息,一方面接收Master的命令运行Driver或者为Application运行Executor。同一个机器上可以同时部署多个Worker服务,一个Worker也可以启动多个Executor。当Executor完成后,Worker将回收Executor使用的资源。

2024-01-05 08:49:45 562 1

原创 spark master组件分析

master只有在local-cluster和standalone部署模式下存在。Master的职责包括Worker的管理、Application的管理、Driver的管理等。Master负责对整个集群中所有资源的统一管理和分配,它接收各个Worker的注册、更新状态、心跳等消息,也接收Driver和Application的注册。

2023-12-29 18:18:16 1158 1

原创 spark rpc(组件间通信)

spark 组件间通信原本使用的是akka。后来改成了用netty实现了一个类似akka的框架。主要类在 spark-core的rpc包下面。

2023-12-24 22:58:52 902 1

原创 spark rpc(网络通信)

TransportContext:传输上下文,包含了用于创建传输服务端(TransportServer)和传输客户端工厂(TransportClientFactory)的上下文信息,并支持使用Transport-ChannelHandler设置Netty提供的SocketChannel的Pipeline的实现。TransportConf:传输上下文的配置信息。RpcHandler:对调用传输客户端(TransportClient)的sendRPC方法发送的消息进行处理的程序。

2023-12-20 16:44:52 1085 1

原创 spark 持久化解析

checkpoint在本地生成了文件,因为并行度是2,所以有part-00000和part-00001两个数据文件。作业停止后,本地文件依然存在。所以如果不需要,就手动删除。

2023-12-12 08:28:15 951

原创 hive/sparksql/presto 时区转换和时间类型转换

hive/sparksql/presto 时区转换和时间类型转换

2023-11-09 16:35:08 1389 1

原创 spark申请yarn资源计算

spark申请yarn资源计算

2023-11-08 15:42:54 209

原创 spark 内存管理和内存计算示例

spark 内存管理和内存计算示例

2023-11-08 15:38:11 153 1

空空如也

空空如也

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

TA关注的人

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