云服务器内容精选

  • 源端优化 Mysql优化 表1 全量阶段 参数名 类型 默认值 说明 scan.incremental.snapshot.backfill.skip boolean true 全量阶段是否跳过读取binlog数据,默认为true。跳过读取binlog数据可以有效降低内存使用。需要注意的是,跳过读取binlog功能只提供at-least-once保证。 scan.incremental.snapshot.chunk.size int 50000 分片大小,决定了全量阶段单个分片最大数据的数据条数以及分片个数。分片大小越大,单个分片数据条数越多,分片个数越小。 当表的条数过多时,作业会划分较多的分片,从而占用过多的内存导致内存问题,请解决表的条数适当调整该值。 当scan.incremental.snapshot.backfill.skip为false时,实时处理集成作业会缓存单个分片的数据,此时分片越大,占用内存越多,引发内存溢出,在此场景下,可以考虑降低分片大小。 scan.snapshot.fetch.size int 1024 全量阶段抽取数据时,从Mysql侧单次请求抽取数据的最大条数,适当增加请求条数可以减少对Mysql的请求次数提升性能。 debezium.max.queue.size int 8192 数据缓存队列条数,默认为8192,当源表中单条数据过大时(如1MB),缓存过多数据会导致内存溢出,可以考虑减小该值。 debezium.max.queue.size.in.bytes int 0 数据缓存队列大小,默认为0,即表示缓存队列不考虑数据大小,只按照数据条数计算。在debezium.max.queue.size无法有效限制内存占用时,考虑显式设置该值来限制缓存数据的大小。 jdbc.properties.socketTimeout int 300000 全量阶段连接Mysql的socket超时时间,默认为5分钟。当Mysql负载较高,作业出现SocketTimeout异常时,考虑增大该值。 jdbc.properties.connectTimeout int 60000 全量阶段连接Mysql的连接超时时间,默认为1分钟。当Mysq负载较高,作业出现ConnectTimeout异常时,考虑增大该值。 表2 增量阶段 参数名 类型 默认值 说明 debezium.max.queue.size int 8192 数据缓存队列条数,默认为8192,当源表中单条数据过大时(如1MB),缓存过多数据会导致内存溢出,可以考虑减小该值。 debezium.max.queue.size.in.bytes int 0 数据缓存队列大小,默认为0,即表示缓存队列不考虑数据大小,只按照数据条数计算。在debezium.max.queue.size无法有效限制内存占用时,考虑显式设置该值来限制缓存数据的大小。 Oracle优化 表3 全量阶段 参数名 类型 默认值 说明 scan.incremental.snapshot.backfill.skip boolean true 全量阶段是否跳过读取Redo log数据,默认为true。由于Oracle初始化LogMiner 较慢,因此在Oracle场景下,跳过读取Redo log数据可以有效提升全量抽取的性能,同时减低内存的使用。需要注意的是,跳过读取binlog功能只提供at-least-once保证。 scan.incremental.snapshot.chunk.size int 50000 分片大小,决定了全量阶段单个分片最大数据的数据条数以及分片个数。分片大小越大,单个分片数据条数越多,分片个数越小。 当表的条数过多时,作业会划分较多的分片,从而占用过多的内存导致内存问题,请解决表的条数适当调整该值。 当scan.incremental.snapshot.backfill.skip为false时,实时处理集成作业会缓存单个分片的数据,此时分片越大,占用内存越多,引发内存溢出,在此场景下,可以考虑降低分片大小。 scan.snapshot.fetch.size int 1024 全量阶段抽取数据时,从Mysql侧单次请求抽取数据的最大条数,适当增加请求条数可以减少对Oracle的请求次数而提升性能。
  • 源端抽取慢 检查源端负载是否已到达源端数据源上限,如Mysql、Oracle、SqlServer数据源,优先查看源端数据源的监控指标,查看CPU、内存、IO等参数是否处于高负载状态。 在排除源端负载的情况下,如果源端是Mysql\Oracle\SqlServer\PostGres\OpenGauss等的全量+增量作业且作业处于全量抽取阶段,或者Kafka\hudi等数据源抽取速度慢,请优先尝试加大作业并发数,以提高作业的并发抽取速率。 Mysql\Oracle\SqlServer\PostGres\OpenGauss等关系型数据为保证事务有序,在增量阶段是单并发抽取,加大并发一般不会提升抽取性能。 如果第2步也无法有效提升性能,请根据源端优化尝试进行参数优化。 如果上述步骤仍然无法提升作业速度,请联系技术支持人员协助解决。
  • 目的端写入慢 检查目的端负载是否已达到目的端数据源上限,如DWS、Doris,优先查看目的端监控指标,查看CPU、内存、IO等参数是否处于高负载状态。 在排除目的端负载的情况下,加大作业并发,以提高写入速度。 如果第2步也无法有效提升性能,请根据源端抽取慢排查源端的性能因素。 如果排除了源端的情况下,请根据目的端优化尝试进行参数优化。 如果上述步骤仍然无法提升作业速度,请联系技术支持人员协助解决。
  • 请求示例 创建一个参数模板,名称为myparameter,node_type为shard,version为3.4,最大连接数为10 { "name" : "myparameter", "description" : "parameter1", "datastore" : { "node_type" : "shard", "version" : "3.4" }, "parameter_values" : { "max_connections" : "10" } }
  • 响应消息 参数说明 表4 响应Body参数 名称 参数类型 描述 configuration ParamGroupInfoResult object 参数模板列表。 表5 configuration字段数据结构说明 名称 参数类型 说明 id String 参数模板ID。 name String 参数模板名称。 description String 参数模板描述。 datastore_version String 数据库版本。 datastore_name String 数据库类型。 created String 创建时间,格式为“yyyy-MM-ddTHH:mm:ssZ”。 其中,T指某个时间的开始;Z指时区偏移量,例如北京时间偏移显示为+0800。 updated String 更新时间,格式为“yyyy-MM-ddTHH:mm:ssZ”。 其中,T指某个时间的开始;Z指时区偏移量,例如北京时间偏移显示为+0800。 响应示例 { "configuration": { "id": "7b4e07852bd54016906e89461b3182cdpr02", "name": "myparameter", "description": "parameter1", "datastore_version": "3.4", "datastore_name": "mongodb", "created": "2018-09-19T02:54:21", "updated": "2018-09-19T02:54:21" } }
  • URI POST https://{Endpoint}/v3/{project_id}/configurations/{config_id}/reset 表1 参数说明 名称 参数类型 是否必选 说明 project_id String 是 参数解释: 租户在某一Region下的项目ID。 获取方法请参见获取项目ID。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字组成,且长度为32个字符。 默认取值: 不涉及。 config_id String 是 参数模板ID。
  • 配置项详细信息列表 MAS-DB-SDK配置分为props、etcd、sources、router四部分,在SpringBoot项目中配置项使用驼峰风格,详细信息如下表: 表1 props配置项 名称 说明 默认值 备注 props.appId MAS应用ID 空 MAS服务应用列表页中“应用ID”列对应值。 props.monitorId MAS监控器ID 空 MAS服务DB监控页中“监控ID”列对应值。 props.databaseName MAS监控DB名称 空 MAS服务DB监控页选择应用单击“编辑”中连接池配置下“数据库名称”列对应值。 props.decipherClassName 密码解析类 com.huawei.devspore.mas.password.DefaultDecipher 需要实现基类 。com.huawei.devspore.mas.password.Decipher props.version 配置文件版本号 空 当前固定填v1。 props.azs 服务所属AZ信息 空 路由算法为本地读单边写时必填。 props配置项中的值都是取自于本服务在MAS服务注册时展示的值。 props配置项中的值与在MAS服务中的来源请参考props、etcd配置项在MAS服务中如何查询。 表2 etcd配置项 名称 说明 默认值 备注 etcd.address ETCD地址 空 MAS服务总览页单击ETCD连接地址后的查看详情获取。 etcd.apiVersion ETCD接口版本 v3 固定值v3。 etcd.username ETCD用户名 空 MAS服务总览页单击ETCD连接地址后的查看详情获取。 etcd.password ETCD密码 空 MAS服务总览页单击ETCD连接地址后的查看详情获取。 etcd.httpsEnable ETCD是否启用https false 根据ETCD实际情况选择,最新版本的MAS服务etcd均为https,此处需要配置为true,并配置证书路径。 etcd.certificatePath 启用https时证书存放路径 空 https证书存放路径。也支持不使用证书,此时不需要配置该配置项。 etcd配置项中的值都是取自于本服务在MAS服务etcd展示的值。 props配置项中的值与在etcd中的来源请参考props、etcd配置项在MAS服务中如何查询。 etcd.apiVersion填写固定值V3。 etcd.httpsEnable的值取决于ETCD页面“etcd集群地址”访问是http,这里值为false;访问是https,这里值为true。查看方法参考props、etcd配置项在MAS服务中如何查询。 表3 sources数据源配置项 名称 说明 默认值 备注 sources.ds1 数据库节点名称:ds1 空 与MAS服务中连接池中的命名一致。 sources.ds1.driverClassName 数据库驱动类名 空 驱动名称,自定义。 sources.ds1.jdbcUrl 数据库连接地址 空 与MAS服务中连接池中各节点下数据库连接地址一致。 sources.ds1.username 数据库用户名 空 与MAS服务中连接池中各节点下数据库用户名一致。 sources.ds1.password 数据库密码 空 如果密码为加密,需要自定义实现解密类配置:props.decipherClassName sources.ds1.type 数据源类型 空 支持类型如下: com.zaxxer.hikari.HikariDataSource org.apache.commons.dbcp2.BasicDataSource com.alibaba.druid.pool.DruidDataSource sources.ds1.props 数据源类型其他参数 空 根据自己选择的数据源类型配置。 props: connection-timeout: 1000 validation-timeout: 1000 sources主要配置本项目中涉及的一组或者多组数据源,所以上表中"ds1"为数据源的节点名称,如果有多组数据源,按照同样的格式配置多组即可。 对接MAS服务,各组数据源的节点名称与MAS服务中连接池中的命名一致。 无对接MAS服务,各组数据源的节点名称应命名为具有区别意义的名称。 表4 router路由配置 名称 说明 默认值 备注 router.active 默认数据源的激活节点 - - router.routeAlgorithm 路由策略 single-read-write 单边读写single-read-write。 router.nodes.ds1.loadBalance 读写分离负载均衡算法 空 可选项: RANDOM是随机。 ROUND_ROBIN是轮询。 router.nodes.ds1.master 主数据源 空 当slaves为空时,读写流量都在master 当slaves不为空时,读流量在slaves,写流量,DDL,事务操作在master。 router.nodes.ds1.slaves 读写分离读数据源列表 空 - router.nodes.ds1.azs 该数据中心所属AZ信息 空 路由算法为本地读单边写,且未对接MAS平台时必填。 router.nodes配置罗列本项目中数据源路由节点,所以上表中“ds1”为数据源路由节点名称,如果有多组数据源,按照同样的格式配置多组即可。 节点router.nodes.ds1.master下配置的源名称为“表3 sources数据源配置项”中的“sources.ds1”主节点的值。 节点router.nodes.ds1.slaves下配置的源名称为“表3”中的“sources.ds1”从节点的值。 router.active对应值为router.nodes的一个节点名称。 父主题: 参数配置说明
  • 请求示例 如下以创建名为“testConfig”,描述为“This is config”的训练作业参数为例。 POST https://endpoint/v1/{project_id}/training-job-configs { "config_name": "testConfig", "config_desc": "This is config", "worker_server_num": 1, "app_url": "/usr/app/", "boot_file_url": "/usr/app/boot.py", "parameter": [ { "label": "learning_rate", "value": "0.01" }, { "label": "batch_size", "value": "32" } ], "spec_id": 1, "dataset_id": "38277e62-9e59-48f4-8d89-c8cf41622c24", "dataset_version_id": "2ff0d6ba-c480-45ae-be41-09a8369bfc90", "engine_id": 1, "train_url": "/usr/train/", "log_url": "/usr/log/", "model_id": 1 }
  • 参数说明 表1 Estimator请求参数说明 参数 是否必选 参数类型 描述 modelarts_session 是 Object 会话对象,初始化方法见Session鉴权。 train_instance_count 是 Long 训练作业worker的个数。 code_dir 否 String 训练作业的代码目录,如“/bucket/src/”。当填入model_name时不需要填写。 boot_file 否 String 训练作业的代码启动文件,需要在代码目录下,如“/bucket/src/boot.py”。当填入model_name时不需要填写。 model_name 否 Long 训练作业的内置算法模型名称。填入model_name后app_url与boot_file_url不需填写,framework_type和framework_version也不需要填写。 output_path 是 String 训练作业的输出位置。 hyperparameters 否 JSON Array 训练作业的运行参数,为label-value格式;当为 自定义镜像 训练作业的时候,此参数为容器环境变量。 log_url 否 String 训练作业的日志OBS输出路径URL,默认为空。如:“/usr/log/”。 train_instance_type 是 Long 训练作业选择的资源规格。若选择在训练平台训练,请从查询资源规格列表接口获取。 framework_type 否 String 训练作业选择的引擎规格。请从查询引擎规格列表接口获取引擎规格。当填入model_name时不需要填写。 framework_version 否 String 训练作业选择的引擎版本。请从查询引擎规格列表接口获取引擎版本。当填入model_name时不需要填写。 job_description 否 String 训练作业的描述。 user_image_url 否 String 自定义镜像训练作业的自定义镜像的SWR-URL。如:“100.125.5.235:20202/jobmng/custom-cpu-base:1.0”。 user_command 否 String 自定义镜像训练作业的自定义镜像的容器的启动命令。形式为:“bash /home/work/run_train.sh python /home/work/user-job-dir/app/train.py {python_file_parameter}”。 表2 update_job_configs请求参数说明 参数 是否必选 参数类型 描述 config_name 是 String 训练作业参数名称。限制为1-20位只含数字、字母、下划线或者中划线的名称。当不填写时,默认会按日期动态生成。 config_desc 否 String 对训练作业的描述,默认为空,字符串的长度限制为[0,256]。 inputs 否 String 训练作业的OBS数据存储位置。 dataset_id 否 String 训练作业的数据集ID。应与dataset_version_id同时出现,但不可与inputs同时出现。 dataset_version_id 否 String 训练作业的数据集版本ID。应与dataset_id同时出现,但不可与inputs同时出现。 data_source 否 JSON Array 训练作业使用的数据集。不可与inputs、dataset_id、dataset_version_id同时使用。 表3 data_source属性列表 参数 是否必选 参数类型 描述 dataset_id 否 String 训练作业的数据集ID。 dataset_version 否 String 训练作业的数据集版本ID。 type 是 String 数据集类型。可选值:“obs”、“dataset”。 data_url 否 String obs的桶路径,不可与dataset_id/dataset_version同时出现。 表4 update_job_configs返回参数说明 参数 参数类型 描述 error_msg String 调用失败时的错误信息。 调用成功时无此字段。 error_code String 调用失败时的错误码,具体请参见错误码。 调用成功时无此字段。 is_success Boolean 接口调用是否成功。
  • 示例代码 在ModelArts notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。 示例一:使用OBS存储位置更新训练作业参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 from modelarts.session import Session from modelarts.estimator import Estimator session = Session() estimator = Estimator( modelarts_session=session, framework_type='PyTorch', # AI引擎名称 framework_version='PyTorch-1.0.0-python3.6', # AI引擎版本 code_dir='/bucket/src/', # 训练脚本目录 boot_file='/bucket/src/pytorch_sentiment.py', # 训练启动脚本目录 log_url='/bucket/log/', # 训练日志目录 hyperparameters=[ {"label":"classes", "value": "10"}, {"label":"lr", "value": "0.001"} ], output_path='/bucket/output/', # 训练输出目录 train_instance_type='modelarts.vm.gpu.p100', # 训练环境规格 train_instance_count=1) # 训练节点个数 update_info = estimator.update_job_configs(config_name='my_job_config', inputs='/bucket/dataset/', config_desc='update') 示例二:使用数据集更新训练作业参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 from modelarts.session import Session from modelarts.estimator import Estimator session = Session() estimator = Estimator( modelarts_session=session, framework_type='PyTorch', # AI引擎名称 framework_version='PyTorch-1.0.0-python3.6', # AI引擎版本 code_dir='/bucket/src/', # 训练脚本目录 boot_file='/bucket/src/pytorch_sentiment.py', # 训练启动脚本目录 log_url='/bucket/log/', # 训练日志目录 hyperparameters=[ {"label":"classes", "value": "10"}, {"label":"lr", "value": "0.001"} ], output_path='/bucket/output/', # 训练输出目录 train_instance_type='modelarts.vm.gpu.p100', # 训练环境规格 train_instance_count=1) # 训练节点个数 update_info = estimator.update_job_configs(config_name='my_job_config', dataset_id='4AZNvFkN7KYr5EdhFkH', dataset_version_id='UOF9BIeSGArwVt0oI6T', config_desc='update')
  • URI URI格式 DELETE https://{Endpoint}/v3/{project_id}/configurations/{config_id} URI样例 https://gaussdb-opengauss.cn-north-1.myhuaweicloud.com/v3/619d3e78f61b4be68bc5aa0b59edcf7b/configurations/3ca44134a16d4bbab8eb701e025b19f7pr14 参数说明 表1 参数说明 参数 是否必选 参数类型 描述 project_id 是 String 租户在某一region下的project ID。 获取方法请参见获取项目ID。 config_id 是 String 参数模板ID。