首页 > 其他分享 >spark存储体系——blockInfo管理(锁)

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

时间:2024-06-07 20:32:45浏览次数:24  
标签:存储体系 写锁 零个 读锁 移除 spark blockInfo block

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

BlockInfo

记录block信息的类。
level:记录block的存储方式
tellMaster:是否向master汇报
size:block大小
readerCount:记录当前有多少个同时读block的任务,一个block可以有多个任务同时读取。
writerTask:记录当前写入block的任务id,一个block同时只能有一个任务写入。
image.png

BlockInfoManager

image.png

变量

image.png

lockForReading

加读锁。block只能是零个写锁零个读锁、一个写锁零个读锁、零个写锁多个读锁。

  1. 从infos中获取blockInfo
    1. 没有获取到,就是block不存在,返回None
    2. 获取到blockInfo后判断是否有写锁
      1. 没有写锁,更新写锁相关信息,返回blockInfo
      2. 有写锁,判断是否阻塞,不阻塞直接返回None,阻塞的话就等待写锁释放唤醒重新申请读锁

image.png

lockForWriting

跟加读锁过程类似。
image.png

unlock

释放block上的锁。
获取taskId,再获取blockInfo,根据block加锁状态,移除对应的锁。最后唤醒阻塞线程,通知可以来申请锁了。
image.png

downgradeLock

将写锁降级为读锁
获取blockInfo,再移除block上的锁,最后给block加读锁。
image.png

releaseAllLocksForTask

移除task上对应的所有的锁。
image.png

lockNewBlockForWriting

lockForReading先获取读锁,因为是阻塞的,所以返回None的时候,就是block不存在。添加block的信息,并更新写锁。
image.png

removeBlock

只有写锁的task才能移除block。
image.png

标签:存储体系,写锁,零个,读锁,移除,spark,blockInfo,block
From: https://blog.csdn.net/weixin_43839095/article/details/139525580

相关文章

  • 【hadoop/Spark】相关命令
    目录hadoopHDFShiveSparkhadoop查看启动状态jps重启hadoopsbin/stop-all.shsbin/start-all.shsbin/start-dfs.sh查看hadoop版本./bin/hadoopversionHDFS查看hdfs的文件夹cd/usr/local/hadoop./bin/hdfsdfs-ls/hive查看创建的数据库showdataba......
  • 深入探索Spark MLlib:大数据时代的机器学习利器
    随着大数据技术的迅猛发展,机器学习在各行各业的应用日益广泛。ApacheSpark作为大数据处理的利器,其内置的机器学习库MLlib(MachineLearningLibrary)提供了一套高效、易用的工具,用于处理和分析海量数据。本文将深入探讨SparkMLlib,介绍其核心功能和应用场景,并通过实例展示如何......
  • Spark读取http数据写入hive
    http请求hutool,json转换数据写入到rdd,之后转换为sparksqlSparkSessionspark=SparkSession.builder().master("yarn").appName("json2hive").config("hive.exec.dynamic.partition","true").config("......
  • (大全集)大规模数据处理入门与实战(套装全10册 Kafka权威指南 Flink基础教程 数据科学
    书:pan.baidu.com/s/1YNu61Jk91VeISAX2F7-64g提取码:14pd是一本涉及大规模数据处理的入门级别的书籍,它通常旨在向读者介绍大规模数据处理的基本概念、技术、工具和实际应用。一些笔记:大数据概述: 介绍大数据的定义、特征和发展趋势。分布式系统: 讨论大规模数据处理的基础,包括......
  • PySpark JDBC 读写 MySQL 数据库保姆级指南
    目录1.环境准备1.1安装PySpark1.2MySQLJDBC驱动2.PySparkJDBC连接配置2.1JDBCURL......
  • spark安装和编程实践(Spark2.1.0)
    环境准备1.VMware虚拟机(Linux操作系统)2.Windows7~113.JDK4.HadoopHadoop安装及集群环境配置-CSDN博客https://blog.csdn.net/2301_81921110/article/details/139362063?spm=1001.2014.3001.55015.Xshell7(用于连接虚拟机与Windows)6.Xftp7(用于虚拟机与Windows之间传输文......
  • Spark SQL的所有语句
     SparkSQL提供了一种基于结构化数据处理的高级API,它允许使用SQL或DataFrameAPI进行数据查询和分析。以下是SparkSQL中常用的语句:创建表格:使用CREATETABLE语句创建表格,可以基于现有数据源或手动定义模式。示例:CREATETABLEtableName(col1INT,col2STRING,......
  • PySpark Functions
    1.SelectColumns-Example`df=df.select( "customer_id", "customer_name")`2.CreatingorReplacingacolumn-Exampledf=df.withColumn("always_one",F.lit(1))df=df.withColumn("customer_id_copy",F.col(......
  • 制作dolphinscheduler+spark+hadoop镜像
    项目需要在ds中执行spark集群任务,并且交付方式是提供一个镜像,所以要把这3者做成一个镜像配置进行相应配置。 1.准备基础镜像有大神已经制作好了spark+hadoop镜像,参考链接:https://zhuanlan.zhihu.com/p/421375012我们下载此镜像dockerpulls1mplecc/spark-hadoop:3然后准......
  • SparkSQL编程-DataFrame
    SparkSession在老的版本中,SparkSQL提供两种SQL查询起始点:一个叫SQLContext,用于Spark自己提供的SQL查询;一个叫HiveContext,用于连接Hive的查询。从2.0开始,SparkSession作为Spark最新的SQL查询起始点,实质上是SQLContext和HiveContext的组合,所以在SQLContext......