当前位置: 首页 > news >正文

绍兴网站制作建设新乡建设招标投标网站

绍兴网站制作建设,新乡建设招标投标网站,263邮箱个人登录,东莞市桥头镇网络工程公司文章目录 文件引用分析相关代码分析从state 恢复,以rocksdb为例不修改并行度修改并行度keyGroupRange过程问题 文件引用分析 每次生成的checkpoint 里都会有所有文件的引用信息 问题,引用分析里如何把f1,f2去掉了,可以参考下面的代码&#…

文章目录

      • 文件引用分析
      • 相关代码分析
      • 从state 恢复,以rocksdb为例
        • 不修改并行度
        • 修改并行度
          • keyGroupRange
          • 过程
          • 问题

文件引用分析

每次生成的checkpoint 里都会有所有文件的引用信息

  • 问题,引用分析里如何把f1,f2去掉了,可以参考下面的代码,每次生成引用分析时,会先list 本地的文件目录,因为f1,f2已经合并了,所以不会出现在后续里了
//保存引用的是个map,每个checkpoint 是一个
SortedMap<Long, Collection<HandleAndLocalPath>> uploadedSstFiles
uploadedSstFiles.put(checkpointId, Collections.unmodifiableList(sstFiles));

在这里插入图片描述

相关代码分析

List<HandleAndLocalPath> sstFilesUploadResult =stateUploader.uploadFilesToCheckpointFs(sstFilePaths,checkpointStreamFactory,stateScope,snapshotCloseableRegistry,tmpResourcesRegistry);uploadedSize +=sstFilesUploadResult.stream().mapToLong(e -> e.getStateSize()).sum();//这里加上本次上传的sstFiles.addAll(sstFilesUploadResult);private void createUploadFilePaths(Path[] files,List<HandleAndLocalPath> sstFiles,List<Path> sstFilePaths,List<Path> miscFilePaths) {for (Path filePath : files) {final String fileName = filePath.getFileName().toString();if (fileName.endsWith(SST_FILE_SUFFIX)) {Optional<StreamStateHandle> uploaded = previousSnapshot.getUploaded(fileName);if (uploaded.isPresent()) {//这里加上已经上传的sstFiles.add(HandleAndLocalPath.of(uploaded.get(), fileName));} else {sstFilePaths.add(filePath); // re-upload}} else {miscFilePaths.add(filePath);}}}}

从state 恢复,以rocksdb为例

不修改并行度

大致是这三步

在这里插入图片描述

@SuppressWarnings("unchecked")private void restoreWithoutRescaling(KeyedStateHandle keyedStateHandle) throws Exception {logger.info("Starting to restore from state handle: {} without rescaling.", keyedStateHandle);if (keyedStateHandle instanceof IncrementalRemoteKeyedStateHandle) {IncrementalRemoteKeyedStateHandle incrementalRemoteKeyedStateHandle =(IncrementalRemoteKeyedStateHandle) keyedStateHandle;restorePreviousIncrementalFilesStatus(incrementalRemoteKeyedStateHandle);restoreBaseDBFromRemoteState(incrementalRemoteKeyedStateHandle);} else if (keyedStateHandle instanceof IncrementalLocalKeyedStateHandle) {IncrementalLocalKeyedStateHandle incrementalLocalKeyedStateHandle =(IncrementalLocalKeyedStateHandle) keyedStateHandle;restorePreviousIncrementalFilesStatus(incrementalLocalKeyedStateHandle);restoreBaseDBFromLocalState(incrementalLocalKeyedStateHandle);} else {throw unexpectedStateHandleException(new Class[] {IncrementalRemoteKeyedStateHandle.class,IncrementalLocalKeyedStateHandle.class},keyedStateHandle.getClass());}logger.info("Finished restoring from state handle: {} without rescaling.", keyedStateHandle);}
修改并行度
keyGroupRange

先理解keyGroupRange
定义 :
KeyGroupRange 是一组连续的 KeyGroup 的集合。它表示某个任务实例(subtask)负责处理哪些 KeyGroup。
作用 :
KeyGroupRange 用于定义每个并行子任务(Task)需要处理的 KeyGroup 范围。
每个 Task 都会分配到一个或多个 KeyGroupRange,从而明确该 Task 应该处理哪些 KeyGroup 的数据和状态。
特点 :
KeyGroupRange 是一个范围的概念,可以包含多个 KeyGroup。
当任务的并行度发生变化时,KeyGroupRange 的分配也会相应调整
假设:

总共有 16 个 KeyGroup(编号从 0 到 15)。
并行度为 2。
分配方式
Task 1 负责 KeyGroupRange [0, 8),即 KeyGroup 0 到 7。
Task 2 负责 KeyGroupRange [8, 16),即 KeyGroup 8 到 15。
如果并行度增加到 4:

Task 1 负责 KeyGroupRange [0, 4),即 KeyGroup 0 到 3。
Task 2 负责 KeyGroupRange [4, 8),即 KeyGroup 4 到 7。
Task 3 负责 KeyGroupRange [8, 12),即 KeyGroup 8 到 11。
Task 4 负责 KeyGroupRange [12, 16),即 KeyGroup 12 到 15。

过程
  1. 核心挑战
    当并行度变化时,每个子任务负责的 数据分片(KeyGroup) 范围会发生变化。例如:

旧并行度 :2 个子任务,每个子任务负责 KeyGroup 0-1 和 KeyGroup 2-3。
新并行度 :4 个子任务,每个子任务负责更小的 KeyGroup 范围(如 0-0, 1-1, 2-2, 3-3)。
此时,需要将旧子任务的 状态数据 按新分片规则重新分配到新子任务中,同时避免数据丢失或重复。

  1. 恢复流程步骤
    步骤 1:选择“最佳”检查点
    目标 :找到一个与新子任务的 KeyGroup 范围 重叠最多的检查点增量句柄,作为恢复的基础。
    原因 :减少需要迁移的数据量,提高效率。
    示例 :
    如果新子任务的 KeyGroup 范围是 0-0,则优先选择旧检查点中覆盖 KeyGroup 0 的数据。
    步骤 2:下载所有相关状态数据
    操作 :将所有相关检查点的数据(如 SST 文件)从远程存储(如 HDFS/S3)下载到本地临时目录。
    原因 :确保所有可能需要的数据都可用,以便后续合并。
    步骤 3:初始化基础数据库
    操作 :
    加载“最佳”检查点的数据 :将选中的检查点数据加载到一个新的 RocksDB 实例中。
    裁剪数据 :仅保留属于新子任务 KeyGroup 范围 的键(通过键的前缀过滤)。
    示例 :
    新子任务负责 KeyGroup 0-0,则删除所有不属于该范围的键。
    步骤 4:合并其他检查点数据
    操作 :
    逐个处理其他检查点 :对剩余的检查点,逐个加载到临时 RocksDB 实例。
    遍历键值对 :逐条检查键是否属于新子任务的 KeyGroup 范围 。
    复制有效数据 :将符合条件的键值对写入主 RocksDB 实例。
    示例 :
    检查点 A 包含 KeyGroup 0-3 的数据,新子任务只保留 KeyGroup 0 的部分。
    步骤 5:清理临时数据
    操作 :删除临时文件和资源,释放存储空间。
问题

为什么选择重叠最多的增量检查点句柄?
减少数据合并工作量 :
初始检查点覆盖的 KeyGroup 越多,后续需要从其他检查点合并的数据越少。
提高恢复效率 :
减少临时 RocksDB 实例的数量和迭代次数,从而加速恢复过程。
降低资源消耗 :
减少网络传输和磁盘 I/O 开销。

http://www.dtcms.com/a/563604.html

相关文章:

  • 企业网站建设与管理作业精准营销的概念
  • 专业网站建设明细报价表网站建设飠金手指排名十三
  • 网站建设功能是什么意思濮阳网站建设专家团队
  • 网站默认首页怎么做网站平台教程
  • 最专业的做网站公司网站301重定向代码
  • 做seo网站的公司个人网页设计html完整代码范例
  • 常州网站制作报价沧州网络公司科技
  • 深圳市宝安区网站建设求个网站或者app
  • 网站外链建设布局手机上怎么做链接
  • 影院网站如何做宁波正规站内优化seo
  • 色轮配色网站网络营销方案的制定思路
  • 有关大数据的网站及网址宁波的网络营销服务公司
  • 美声广告网站建设厚街响应式网站设计
  • 如何建立网站教程做游戏直播什么游戏视频网站好
  • 街区网站建设的意义功能型网站
  • 枣庄企业网站建设山东省建设监理协会网站6
  • 南昌网站开发模板上高做网站公司
  • 网网站开发企业免费建站网站
  • 合肥高新城建设计院网站如何建设钓鱼网站
  • 五星花园网站建设兼职比较好用的免费素材网
  • 西安建网站网站推广WordPress中文版如何下载
  • 广州市做民宿什么网站比较好wordpress倒序阅读
  • 长沙网站维护公司盐山县网站建设
  • 怎么在wordpress中套用同行网页关键词首页排名优化
  • 写网站教程租空间开网站
  • 深圳模板开发建站企业品牌网站有哪些
  • 网站建设与维护本科教材wordpress商务插件
  • 海外直邮购物网站一般使用的分辨率的显示密度是多少
  • 网站开发 案例阿里巴巴运营培训课程
  • 网站备案全国合作拍照点 腾讯云wordpress文章生成html代码