【Hadoop-CosDistcp】通过CosDistcp的方式迁移Cos中的数据至HDFS

news2024/11/24 14:52:15

【Hadoop-CosDistcp】通过CosDistcp的方式迁移Cos中的数据至HDFS

  • 1)功能说明
  • 2)使用环境
  • 3)下载与安装
  • 4)原理说明
  • 5)参数说明
  • 6)使用示例
  • 7)迁移 Cos 中的数据至 HDFS 及数据校验
    • 7.1.数据迁移
    • 7.2.数据校验
    • 7.3.数据补充
    • 7.4.总结

1)功能说明

COSDistCp 是一款基于 MapReduce 的分布式文件拷贝工具,主要用于 HDFS 和 COS 之间的数据拷贝,它主要具有以下功能点:

  • 根据长度、CRC 校验和,进行文件的增量迁移、数据校验
  • 对源目录中的文件进行正则表达式过滤
  • 对源目录中的文件进行解压缩 ,并转换为预期的压缩格式
  • 基于正则表达式,对文本文件进行聚合
  • 保留源文件和源目录的用户、组、扩展属性和时间
  • 配置告警和 Prometheus 监控
  • 统计文件大小分布
  • 对读取带宽进行限速

2)使用环境

(1)系统环境:

支持 Linux 系统。

(2)软件依赖:

Hadoop-2.6.0及以上版本、Hadoop-COS 插件 5.9.3 及以上版本。

3)下载与安装

(1)获取 COSDistCp jar 包

Hadoop 2.x 用户可下载 cos-distcp-1.13-2.8.5.jar 包,根据 jar 包的 MD5 校验值 确认下载的 jar 包是否完整。

Hadoop 3.x 用户可下载 cos-distcp-1.13-3.1.0.jar 包,根据 jar 包的 MD5 校验值 确认下载的 jar 包是否完整。

下载地址https://cloud.tencent.com/document/product/436/50272

在这里插入图片描述

(2)安装说明

在 Hadoop 环境下,安装 Hadoop-COS 后,即可直接运行 COSDistCp 工具

对于环境中未安装和配置 Hadoop-COS 插件的用户,根据 Hadoop 版本,下载对应版本的 COSDistCp jar、Hadoop-COS jar 和 cos_api-bundle jar 包后(相关 jar 包下载地址见上文),指定 Hadoop-COS 相关参数执行拷贝任务,其中 jar 包地址需填本地 jar 所在地址:

hadoop jar cos-distcp-${version}.jar \
-libjars cos_api-bundle-${version}.jar,hadoop-cos-${version}.jar \
-Dfs.cosn.credentials.provider=org.apache.hadoop.fs.auth.SimpleCredentialProvider \
-Dfs.cosn.userinfo.secretId=COS_SECRETID \
-Dfs.cosn.userinfo.secretKey=COS_SECRETKEY \
-Dfs.cosn.bucket.region=ap-guangzhou \
-Dfs.cosn.impl=org.apache.hadoop.fs.CosFileSystem \
-Dfs.AbstractFileSystem.cosn.impl=org.apache.hadoop.fs.CosN \
--src /data/warehouse \
--dest cosn://examplebucket-1250000000/warehouse

下载地址https://cloud.tencent.com/document/product/436/6884

在这里插入图片描述

4)原理说明

COSDistCp 基于 MapReduce 框架实现,为多进程+多线程的架构,可以对文件进行拷贝、数据校验、压缩、文件属性保留以及拷贝重试等工作。COSDistCp 默认会覆盖目标端已经存在的同名文件,当文件迁移或校验失败的时候,对应的文件会拷贝失败,并会在临时目录下记录迁移失败的文件信息。当您的源目录有文件新增或文件内容发生变化时,您可通过 skipModediffMode 模式,通过对比文件的长度或 CRC 校验值,进行数据校验和进行文件的增量迁移

5)参数说明

您可在hadoop用户下,使用命令 hadoop jar cos-distcp-version.jar --help 查看 COSDistCp 支持的参数选项,其中 version 为版本号,以下为当前版本 COSDistCp 的参数说明:

属性键说明默认值是否必填
–help输出 COSDistCp 支持的参数选项 示例:–help
–src=LOCATION指定拷贝的源目录,可以是 HDFS 或者 COS 路径 示例:–src=hdfs://user/logs/
–dest=LOCATION指定拷贝的目标目录,可以是 HDFS 或者 COS 路径 示例:–dest=cosn://examplebucket-1250000000/user/logs
–srcPattern=PATTERN指定正则表达式对源目录中的文件进行过滤 示例:--srcPattern='.*\.log$' 注意:您需要将参数使用单引号包围,以避免符号\*被 shell 解释
–taskNumber=VALUE指定拷贝进程数,示例:–taskNumber=1010
–workerNumber=VALUE指定拷贝线程数,COSDistCp 在每个拷贝进程中创建该参数大小的拷贝线程池 示例:–workerNumber=44
–filesPerMapper=VALUE指定每个 Mapper 输入文件的行数 示例:–filesPerMapper=10000500000
–groupBy=PATTERN指定正则表达式对文本文件进行聚合 示例:–groupBy=‘.group-input/(\d+)-(\d+).
–targetSize=VALUE指定目标文件的大小,单位:MB,与 --groupBy 一起使用 示例:–targetSize=10
–outputCodec=VALUE指定输出文件的压缩方式,可选 gzip、lzo、snappy、none 和 keep,其中: 1. keep 保持原有文件的压缩方式 2. none 则根据文件后缀对文件进行解压, 示例:–outputCodec=gzip 注意:如果存在文件 /dir/test.gzip 和 /dir/test.gz,指定输出格式为 lzo,最终只会保留一个文件 /dir/test.lzokeep
–deleteOnSuccess指定源文件拷贝到目标目录成功时,立即删除源文件 示例:–deleteOnSuccess, 注意:1.7 及以上版本不再提供该参数,建议数据迁移成功并使用 --diffMode 校验后,再删除源文件系统的数据false
–multipartUploadChunkSize=VALUE指定 Hadoop-COS 插件传输文件到 COS 时分块的大小,COS 支持的最大分块数为 10000,您可根据文件大小,调整分块大小,单位:MB,默认为8MB 示例:–multipartUploadChunkSize=208MB
–cosServerSideEncryption指定文件上传到 COS 时,使用 SSE-COS 作为加解密算法 示例:–cosServerSideEncryptionfalse
–outputManifest=VALUE指定拷贝完成的时候,在目标目录下生成本次拷贝的目标文件信息列表(GZIP 压缩) 示例:–outputManifest=manifest.gz
–requirePreviousManifest要求指定 --previousManifest=VALUE 参数,以进行增量拷贝 示例:–requirePreviousManifestfalse
–previousManifest=LOCATION前一次拷贝生成的目标文件信息 示例:–previousManifest=cosn://examplebucket-1250000000/big-data/manifest.gz
–copyFromManifest和 --previousManifest=LOCATION 一起使用,可将 --previousManifest 中的文件,拷贝到目标文件系统 示例:–copyFromManifestfalse
–storageClass=VALUE指定对象存储类型,可选值为 STANDARD、STANDARD_IA、ARCHIVE、DEEP_ARCHIVE、INTELLIGENT_TIERING,关于更多支持的存储类型和介绍,请参见 存储类型概述
–srcPrefixesFile=LOCATION指定本地文件,该文件中每行包含一个需要拷贝的源目录 示例:–srcPrefixesFile=file:///data/migrate-folders.txt
–skipMode=MODE拷贝文件前,校验源文件和目标文件是否相同,相同则跳过,可选 none(不校验)、length (长度)、checksum(CRC值)、length-mtime(长度+mtime值)和 length-checksum(长度 + CRC 值) 示例:–skipMode=lengthlength-checksum
–checkMode=MODE当文件拷贝完成的时候,校验源文件和目标文件是否相同,可选 none(不校验)、 length (长度)、checksum(CRC值)、length-mtime(长度+mtime值)和 length-checksum(长度 + CRC 值) 示例:–checkMode=length-checksumlength-checksum
–diffMode=MODE指定获取源和目的目录的差异文件列表,可选 length (长度)、checksum(CRC 值)、length-mtime(长度+mtime值)和 length-checksum(长度 + CRC 值) 示例:–diffMode=length-checksum
–diffOutput=LOCATION指定 diffMode 的 HDFS 输出目录,该输出目录必须为空 示例:–diffOutput=/diff-output
–cosChecksumType=TYPE指定 Hadoop-COS 插件使用的 CRC 算法,可选值为 CRC32C 和 CRC64 示例:–cosChecksumType=CRC32CCRC32C
–preserveStatus=VALUE指定是否将源文件的 user、group、permission、xattr 和 timestamps 元信息拷贝到目标文件,可选值为 ugpxt(即为 user、group、permission、xattr 和 timestamps 的英文首字母) 示例:–preserveStatus=ugpt
–ignoreSrcMiss忽略存在于文件清单中,但拷贝时不存在的文件false
–promGatewayAddress=VALUE指定 MapReduce 任务运行的 Counter 数据推送到的 Prometheus PushGateway 的地址和端口
–promGatewayDeleteOnFinish=VALUE指定任务完成时,删除 Prometheus PushGateway 中 JobName 的指标集合 示例:–promGatewayDeleteOnFinish=truetrue
–promGatewayJobName=VALUE指定上报给 Prometheus PushGateway 的 JobName 示例:–promGatewayJobName=cos-distcp-hive-backup
–promCollectInterval=VALUE指定收集 MapReduce 任务 Counter 信息的间隔,单位:ms 示例:–promCollectInterval=50005000
–promPort=VALUE指定将 Prometheus 指标暴露给外部的 Server 端口 示例:–promPort=9028
–enableDynamicStrategy指定开启任务动态分配策略,使迁移速度快的任务迁移更多的文件。 注意:该模式存在一定局限性,例如任务计数器在进程异常的情况下计数不准确,请迁移完成后用 --diffMode 进行数据校验 示例:–enableDynamicStrategyfalse
–splitRatio=VALUE指定 Dynamic Strategy 的切分比例,splitRatio 值越大,则任务粒度越小 示例:–splitRatio=88
–localTemp=VALUE指定 Dynamic Strategy 生成的任务信息文件所在的本地文件夹 示例:–localTemp=/tmp/tmp
–taskFilesCopyThreadNum=VALUE指定 Dynamic Strategy 任务信息文件拷贝到 HDFS 上的并发度 示例:–taskFilesCopyThreadNum=3232
–statsRange=VALUE指定统计的区间范围 示例:—statsRange=0,1mb,10mb,100mb,1gb,10gb,inf0,1mb,10mb,100mb,1gb,10gb,inf
–printStatsOnly只统计待迁移文件大小的分布信息,不迁移数据 示例:–printStatsOnly
–bandWidth限制读取每个迁移文件的带宽,单位为:MB/s,默认-1,不限制读取带宽。 示例:–bandWidth=10
–jobName指定迁移任务的名称。 示例:–jobName=cosdistcp-to-warehouse
–compareWithCompatibleSuffix使用 --skipMode 和 --diffMode 参数时,是否将源文件的后缀 gzip 转换为 gz,lzop 文件后缀转换为 lzo,进行判断。 示例:–compareWithCompatibleSuffix
–delete保证源目录和目标目录文件的一致性,将源目录中没有而目标目录中有的文件,移动到独立的 trash 目录下,同时生成文件清单。 注意:不能同时使用 --diffMode 参数
–deleteOutput指定 delete 的 HDFS 输出目录,该目录必须为空 示例: --deleteOutput=/dele-output

6)使用示例

使用实例较多,这里就不一一说明了,详情可以参考官方文档:https://cloud.tencent.com/document/product/436/50272

在这里插入图片描述

7)迁移 Cos 中的数据至 HDFS 及数据校验

在企业中进行大规模数据量的迁移,会涉及到很多原因,比如资源队列,网络带宽,任务名称,数据校验,补充差异数据等操作。

  • 网络带宽决定数据的传输速度,如果任务较多的情况下不能让一个任务占用过多带宽,需要合理分配网络资源

  • 数据校验决定数据的准确性,所以对差异数据进行补充也至关重要

下面我将以企业中PB级别的数据迁移为例,进行相关举例演示。

7.1.数据迁移

参数说明

  • -Dmapred.job.queue.name队列名称

  • -bandWidth带宽(每秒的传输速度,单位为M),默认为-1(不限制)

  • jobName在 yarn 上显示的任务名称

yarn jar /opt/corns/cos-distcp-1.12-3.1.0.jar -libjars /opt/corns/cos_api-bundle-5.6.69.jar,/opt/corns/hadoop-cos-3.1.0-8.1.7.jar \
-Dfs.cosn.credentials.provider=org.apache.hadoop.fs.auth.SimpleCredentialProvider \
-Dfs.cosn.userinfo.secretId=********************************* \
-Dfs.cosn.userinfo.secretKey=********************************* \
-Dfs.cosn.bucket.region=ap-guangzhou \
-Dfs.cosn.impl=org.apache.hadoop.fs.CosFileSystem \
-Dfs.AbstractFileSystem.cosn.impl=org.apache.hadoop.fs.CosN \
-Dmapred.job.queue.name=*** \
--bandWidth=-1 \
--jobName=cosdistcp-to-hdfs \
--src cosn://test-bucekt01/test/ \
--dest hdfs://nameserver/tmp/test/

7.2.数据校验

参数说明

  • -Dmapred.job.queue.name队列名称

  • -bandWidth带宽(每秒的传输速度,单位为 M),默认为-1(不限制)

  • jobName在 yarn 上显示的任务名称

  • -diffMode数据校验模式(详情参考上面表格)

  • -diffOutput数据校验结果输出到 HDFS 上的目录(输出目录必须为空)

判断数据校验结果

1、如果目录中没有 failed 目录,则数据校验结果为完全一致。

2、如果目录中存在 failed 目录,则进入目录中查看异常数据清单,内容信息如下

① 源和目的文件相同,记录为 SUCCESS

② 目标文件不存在,记录为 DEST_MISS

③ 存在源目录的清单中,但是校验时源文件不存在,记录为 SRC_MISS

④ 源文件和目标文件大小不同,记录为:LENGTH_DIFF

⑤ 源文件和目标文件 CRC 算法值不同,记录为:CHECKSUM_DIFF

⑥ 由于读取权限不够等因素导致 diff 操作失败,记录为:DIFF_FAILED

⑦ 源为目录,目的为文件,记录为:TYPE_DIFF

查看是否有 failed 目录:

在这里插入图片描述

进入目录查看存在异常数据清单文件:

在这里插入图片描述

查看异常数据清单文件内容:

在这里插入图片描述

yarn jar /opt/corns/cos-distcp-1.12-3.1.0.jar -libjars /opt/corns/cos_api-bundle-5.6.69.jar,/opt/corns/hadoop-cos-3.1.0-8.1.7.jar \
-Dfs.cosn.credentials.provider=org.apache.hadoop.fs.auth.SimpleCredentialProvider \
-Dfs.cosn.userinfo.secretId=********************************* \
-Dfs.cosn.userinfo.secretKey=********************************* \
-Dfs.cosn.bucket.region=ap-guangzhou \
-Dfs.cosn.impl=org.apache.hadoop.fs.CosFileSystem \
-Dfs.AbstractFileSystem.cosn.impl=org.apache.hadoop.fs.CosN \
-Dmapred.job.queue.name=*** \
--bandWidth=-1 \
--jobName=cosdistcp-to-hdfs-check \
--diffMode=length-checksum \
--diffOutput=/tmp/diff_output \
--src cosn://test-bucekt01/test/ \
--dest hdfs://nameserver/tmp/test/

7.3.数据补充

补充数据需要将上面校验结果中的差异数据清单拉取到 Linux 本地(如果有多个文件,可以先进行合并操作),并压缩成 gzip,然后补充命令指定此gzip文件即可完成数据补充。

合并文件到本地
在这里插入图片描述
压缩文件
在这里插入图片描述

# 合并文件到 Linux 的/opt/diff_output/中,形成合并后的 diff-manifest文件
hadoop fs -getmerge /tmp/diff_output/failed /opt/diff_output/diff-manifest
# 过滤掉 SRC_MISS 清单信息后压缩成 gzip 文件
grep -v '"comment":"SRC_MISS"' /opt/diff_output/diff-manifest |gzip > /opt/diff_output/diff-manifest.gz

参数说明

  • -Dmapred.job.queue.name队列名称

  • -bandWidth带宽(每秒的传输速度,单位为 M),默认为-1(不限制)

  • jobName在 yarn 上显示的任务名称

  • -previousManifest指定需要补充数据的清单(详情参考上面表格)

  • -copyFromManifest按照清单补充数据(详情参考上面表格)

yarn jar /opt/corns/cos-distcp-1.12-3.1.0.jar -libjars /opt/corns/cos_api-bundle-5.6.69.jar,/opt/corns/hadoop-cos-3.1.0-8.1.7.jar \
-Dfs.cosn.credentials.provider=org.apache.hadoop.fs.auth.SimpleCredentialProvider \
-Dfs.cosn.userinfo.secretId=********************************* \
-Dfs.cosn.userinfo.secretKey=********************************* \
-Dfs.cosn.bucket.region=ap-guangzhou \
-Dfs.cosn.impl=org.apache.hadoop.fs.CosFileSystem \
-Dfs.AbstractFileSystem.cosn.impl=org.apache.hadoop.fs.CosN \
-Dmapred.job.queue.name=*** \
--bandWidth=-1 \
--jobName=cosdistcp-to-hdfs-bc \
--src cosn://test-bucekt01/test/ \
--dest hdfs://nameserver/tmp/test/ \
--previousManifest=file:///opt/diff_output/diff-manifest.gz \
--copyFromManifest

7.4.总结

1、如果已经迁移过的文件,重新启动程序后不会重复迁移,会继续迁移数据。

2、迁移完成后执行数据校验脚本,会在 HDFS 指定目录下产生校验清单,如果没有 failed 目录,则没有问题,如果有failed目录,此目录下会生成一个或多个文件,里面记录着校验结果

3、将校验的结果文件进行 merge 操作后,会在 Linux 本地生成一个合并后的文件,将合并后的文件过滤 SRC_MISS 后压缩成 .gz 文件

4、执行补充数据的 Shell 命令,指定此压缩文件(指向的压缩文件必须在 Linux 本地,且类型必须为 gzip),即可将未迁移的数据进行补充迁移。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/448865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity入门】16.脚本引用组件

【Unity入门】脚本引用组件 大家好,我是Lampard~~ 欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (一)脚本引用普通组件 (1)点击控制音频播放 还记得我们的车载音乐AudioSource吗?…

zabbix搭建

1.环境 本实验使用一台centos7主机,关闭了firewalld和selinux服务,zabbix版本为5.0版本,mysql使用版本为5.7版本 若要搭建6.0以上版本的zabbix,则需要使用mysql 8.0以上的版本 其它版本的zabbix可参考zabbix官网:Download and…

YOLOv5+单目实现三维跟踪(python)

YOLOv5单目跟踪(python) 1. 目标跟踪2. 测距模块2.1 设置测距模块2.2 添加测距 3. 主代码4. 实验效果 相关链接 1. YOLOv5单目测距(python) 2. YOLOv7单目测距(python) 3. YOLOv7单目跟踪(pytho…

C++练级之初级:第四篇

C练级之初级:第四篇 引用 C练级之初级:第四篇1.引用1.1引用的介绍1.2引用的使用场景1.3常引用 2.引用的底层3.引用的与指针的比较 总结 1.引用 1.1引用的介绍 🤔首先还是一个问题,引用是解决C语言什么不足? 指针在&am…

Python自动化sql注入:布尔盲注

在sql注入时,使用python脚本可以大大提高注入效率,这里演示一下编写python脚本实现布尔盲注的基本流程: 演示靶场:sqli-labs 布尔盲注 特点:没有回显没有报错,但根据sql语句正常与否返回不同结果&#x…

新手做电商直播带货怎么和快递合作谈价格

新手做电商直播带货怎么和快递合作谈价格达人带货一般怎样的合作模式?#达人带货 #直播带货 #红人 #百收网 跟快递谈价其实是有方法的,快递的价格不是说不能打下来,就是需要你们多一点点的心机。这个视频我就再给你们补充三个方法,…

HCIP之STP

企业网三层架构 线路冗余—二层网络桥接环路 因为路由器的路由表是由相对完善的计算所得,且存在防环规则;故路由器物理链路上实施备份时,一般不会出现环路;但交换转发数据依赖MAC表(CAM表),该表…

【模式识别4】YOLO目标检测数据集xml格式转txt格式

YOLO目标检测数据集xml格式转txt格式 1. 转换前的xml格式2. xml格式转txt格式代码2.1 源代码2.2 需要修改的地方 3. 转换后的txt格式 代码资源:voc2txt.py 1. 转换前的xml格式 如果我们使用LabelImg工具标注数据集,生成的xml文件如下: xml…

Linux运维:推荐八款Linux远程连接工具

目录 2、XShell 3、SecureCRT 4、PuTTY 5、WindTerm 6、iTerm2 7、MobaXterm 8、Termius 今天给大家推荐八款Linux远程连接工具,非常实用,希望对大家能有所帮助! 1、NxShell NxShell是一款开源的Linux远程管理工具,是我日…

Spring Boot 接口加解密

1. 介绍 在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用 如果我们想保证数据传输的安全,对接口出参加密,入参解密。 但是不想写重复代码,我们可以提供一个通用starter,提…

【python数据可视化】基于networkx的10个绘图技巧

一、说明 networkx在02年5月产生,是用python语言编写的软件包,便于用户对复杂网络进行创建、操作和学习。利用networkx可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型、设计新的网络算法、进行网络…

解决java.lang.IllegalStateException: Failed to load ApplicationContext错误~

错误描述: Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [D:\SSM\SSM_3.22\spring_transaction\target\classes\spring_txAnnotation\Controller\BookController.class]; nested …

装饰器模式C++用法示例

六.装饰器模式 一.装饰器模式1.原理2.适用场景 二.C程序示例1.语法组成2.C示例 一.装饰器模式 1.原理 装饰器模式是一种结构性设计模式,其目的是通过包装对象来扩展其行为而不改变其接口。该模式可以动态地将责任附加到对象上,从而提供一种灵活的替代方…

SQL Server基础 第三章 数据表基本操作(增删改查,不允许保存更改异常!)

往表里插数据我们现在有两种方式第一种是编辑直接修改,第二种是通过查询来修改数据 两种方法的区别 第一种更直接,如果数据量小那么直接改就好了,那如果数据量稍微庞大我们就需要用新建查询来进行表内容的修改了!!&a…

【Linux】进程信号 --- 信号的产生 保存 捕捉递达

被爱情困住的是傻子 文章目录 一、信号的预备知识1.通过生活例子来理解信号2.迁移到进程上来理解信号 二、信号的发送(修改PCB的信号位图)1.通过键盘发送信号(kill指令 和 热键)2.通过系统调用发送信号(kill系统调用 和…

前端技术的miniui 和bootstartp

前端技术的miniui 和bootstartp 目录概述需求: 设计思路实现思路分析1.前端技术boostatrp2.miniui: 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better re…

1686_MATLAB处理Excel文件

全部学习汇总: GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes servral …

opencv交叉编译,支持ffmpeg、libjpeg,实现取流及写入jpeg文件

一、准备工作 1、虚拟机交叉编译连 2、在虚拟机目录下创建工作目录,注意不要选择windows共享目录,比如这里选择: /home/cxyazhou/work 3、虚拟机安装cmake cmake-gui pkg-config,直接apt install即可 4、源码下载,需要…

Mongodb的部署

MongoDB下载包获取 https://www.mongodb.com/try/download/community 安装配置 第一步:在服务器 /usr/local 下创建 MongoDB 文件夹,用来存放安装包、服务以及之后 MongoDB 的数据库和日志文件。 cd /usr/local // 进入安装目录 mkdir MongoDB // 创…

【LeetCode: 2369. 检查数组是否存在有效划分 | 暴力递归=>记忆化搜索=>动态规划 | 线性dp】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…