华为云用户手册

  • 计费示例 假设您在2023/03/10 8:45:30在性能测试服务(假设产品单价为0.0032元/VUM)上启动了压测任务,然后在9:30:00将其全部停止运行,则计费周期分为如下两个时间段: 8:00:00~9:00:00时间段,在8:45:30~9:00:00间产生费用,该计费周期内的计费时长为870秒。则参考计费项中的计费公式,该计费时间段的费用为:0.0032x870÷60=0.0464(元)。 9:00:00~10:00:00时间段,在9:00:00~9:30:00间产生费用,该计费周期内的计费时长为1800秒。则参考计费项中的计费公式,该计费时间段的费用为:0.0032x1800÷60=0.096(元)。
  • 什么是准出条件? 流水线服务提供了统一的准出条件管理能力,是指用户在定义流水线时,在阶段中配置的用于进行自动化看护的质量指标卡点,通过配置规则和策略,来实现阶段准出的校验,并最终控制流水线的执行。 当前仅支持“标准策略准出条件”,配置流水线时,单击阶段下,弹出“准出条件”侧滑框,将鼠标移动到准出条件卡片,单击“添加”,即可为当前阶段添加准出条件,并为准出条件配置策略。 规则:基于扩展插件的输出阈值,设置比较关系和阈值条件,供创建和编辑策略时使用,并最终应用到流水线准出条件中,作为准出的判断依据,目前支持对以下类型扩展插件设置指标卡点。 Check代码检查:通过设置相关检查项的阈值,对代码检查结果进行限制。 当问题数小于等于设置的阈值,则认为代码检查通过,并继续执行流水线;否则,认为代码检查不通过,会中止流水线的执行。 Build构建:调用CodeArtsBuild构建能力,返回Maven单元测试的用例通过率、用例总数和分支覆盖率。 TestPlan接口测试:通过设置API测试通过率阈值,对测试套件中测试用例通过率进行限制。 当通过率大于等于设置的阈值,则认为测试通过,并继续执行流水线;否则,认为测试不通过,会中止流水线的执行。 策略:是一系列规则的集合,每个规则对应了一个步骤插件的输出指标值的条件模板。在流水线编排时进行展示和选择,作为阶段准出条件来控制流水线的执行。 父主题: 功能介绍和使用
  • 在微服务场景下,java项目如何按顺序部署多个模块的构建包? 在微服务场景下,如果一个java项目里面有多个模块,一次打包会在多个模块打多个包,并且部署的时候需要将多个包按照顺序部署,可尝试通过以下方法实现该场景: 新建代码仓库。 进入 代码托管服务 ,单击“普通新建”。 在“普通新建”页面,填写代码仓库名称等信息,然后单击“确定”完成仓库创建。 将java项目代码上传代码至代码仓库。 新建构建任务。 进入编译构建服务,单击“新建任务”。 在“新建任务”页面,选择源码源(“源码源”选择代码托管,“源码仓库”选择已创建的代码仓库,“分支”默认选择“master”),构建模板选择“Maven”,然后单击“确定”。 进入“构建步骤”页签,保留默认构建步骤,构建步骤配置说明请参见:构建步骤。 配置完成后,单击“新建并执行”,执行完成后,即可在软件发布库查看构建生成的软件包。 新建部署任务。 添加“选择部署来源”部署步骤,选择上一步创建的构建任务和上传到软件发布仓的构建包,将构建包下载到服务器指定的路径下。配置说明请参见:选择部署来源。 然后添加“启动/停止SpringBoot服务”部署步骤,用来将指定的jar包启动起来。配置说明请参见:启动/停止SpringBoot服务。 新建流水线,添加以上构建任务和部署任务,然后执行流水线即可。 父主题: 功能介绍和使用
  • 处理方法 使用可以修改该流水线权限的账号登录流水线。 进入目标流水线权限管理页面,检查用户的流水线权限(项目创建者和流水线创建者默认拥有流水线的所有权限且不能更改)。 流水线权限包括角色权限配置和人员权限配置。默认情况下,用户配置角色权限后会自动同步人员权限,如果配置了人员权限,则该人员权限会覆盖该人员对应的角色权限。 若“角色权限配置”中该用户所属角色没有执行权限,则为该角色添加执行权限(会导致是该角色的用户,对该条流水线都具有执行权限)。 若“角色权限配置”中该用户所属角色有执行权限,则在“人员权限配置”页签,为该用户添加执行权限。
  • 应用场景 域名证书监控功能用于为您统一监控所有站点的HTTPS状态并简化证书维护的复杂度,开启后可帮助您检测多个站点的HTTPS业务状态并及时发现站点上的SSL证书安全问题(例如:未配置SSL证书、证书已过期等),方便您统一维护多站点HTTPS,降低因人为疏忽导致HTTPS业务中断的风险。 初次使用域名证书监控功能,系统会为您发放一个有效期为7天的免费实例,您可以试用该实例体验域名证书监控功能。有效期截止后实例自动失效。 如需继续使用,您可以单击右上角“购买域名证书监控”购买更多域名证书监控实例。
  • AOM 权限 默认情况下,管理员创建的 IAM 用户没有任何权限,您需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对AOM进行操作。 AOM部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问AOM时,需要先切换至授权区域。 权限根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对E CS 服务,管理员能够控制IAM用户仅能对某一类云服务器资源进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分,AOM支持的API授权项请参见策略和授权项说明。 如表1所示,包括了AOM的所有系统权限。 表1 AOM系统权限 策略名称 描述 类别 依赖系统权限 AOM FullAccess AOM管理员权限,拥有该权限的用户可以操作并使用AOM。 系统策略 CCE Administrator、OBS Administrator、LTS FullAccess AOM ReadOnlyAccess AOM只读权限,拥有该权限的用户仅能查看AOM数据。 系统策略 表2列出了AOM常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表2 常用操作与系统权限的关系 操作 AOM FullAccess AOM ReadOnlyAccess 创建阈值规则 √ x 修改阈值规则 √ x 删除阈值规则 √ x 创建阈值模板 √ x 修改阈值模板 √ x 删除阈值模板 √ x 创建仪表盘 √ x 修改仪表盘 √ x 删除仪表盘 √ x 创建告警行动规则 √ x 修改告警行动规则 √ x 删除告警行动规则 √ x 创建消息模板 √ x 修改消息模板 √ x 删除消息模板 √ x 创建分组规则 √ x 修改分组规则 √ x 删除分组规则 √ x 创建抑制规则 √ x 修改抑制规则 √ x 删除抑制规则 √ x 创建静默规则 √ x 修改静默规则 √ x 删除静默规则 √ x 创建应用发现规则 √ x 修改应用发现规则 √ x 删除应用发现规则 √ x 导出监控报告 √ √ 配置虚机日志采集路径 √ x 查看桶日志 √ √ 添加日志转储 √ x 修改日志转储 √ x 删除日志转储 √ x 开启周期性转储 √ x 暂停周期性转储 √ x 创建统计规则 √ x 修改统计规则 √ x 删除统计规则 √ x 配置分词 √ x 安装ICAgent √ √ 升级ICAgent √ x 卸载ICAgent √ x 使用自定义细粒度策略,请使用管理员用户进入 统一身份认证 (IAM)服务,按需选择AOM的细粒度权限进行授权操作。AOM细粒度权限说明请参见表3。 表3 AOM细粒度权限说明 权限名称 权限描述 权限依赖 应用场景 aom:alarmRule:create 创建阈值规则 无 创建阈值规则 aom:alarmRule:set 修改阈值规则 修改阈值规则 aom:alarmRule:get 查询阈值规则 根据ID查询单个阈值规则或者查询所有阈值规则 aom:alarmRule:delete 删除阈值规则 批量删除阈值规则或者根据ID删除单个阈值规则 aom:discoveryRule:list 查看应用发现规则 查询系统中已有应用发现规则 aom:discoveryRule:delete 删除应用发现规则 删除应用发现规则 aom:discoveryRule:set 添加应用发现规则 添加应用发现规则 aom:metric:list 查询时间序列 查询时间序列 aom:metric:list 查询时序数据 查询时序数据 aom:metric:get 查询指标 查询指标 aom:metric:get 查询监控数据 查询监控数据
  • 续订说明 在您所选套餐的订单到期或即将到期时: 如果您需要继续使用AOM按需版的套餐包,则请及时进行购买套餐包操作。如果您在订单到期前没有续订,则订单到期后,AOM会在订单到期的第二天按需扣费,直到您再次购买了套餐包。如果您的账户余额不足,导致无法支付AOM的按需费用,您的账户将被冻结,进入保留期。保留期为15天,您可选择充值或手动切换到基础版,手动切换到基础版后AOM将会删除超出基础版的配额,删除动作不可恢复,请谨慎操作。当超出保留期仍未充值时,AOM将自动切换至基础版。切换到基础版的次日凌晨起,AOM将会删除超出基础版的配额。删除动作不可恢复,所以请您及时充值。
  • 计费说明 应用运维管理 服务(简称AOM)提供基础版、按需版两种计费方式。其中按需版分为按量后付费和预付费套餐包(其中预付费套餐包又分为专业版套餐包和企业版套餐包),计费详见AOM-价格说明。 AOM与其他云服务组合使用,为您提供通知发送、日志转储、性能管理等功能,这些功能可能产生额外费用,具体费用由提供该功能的云服务结算。 阈值规则和告警通知:依赖 消息通知 服务(简称 SMN ),将阈值规则状态变更信息和告警信息以邮件或短信的方式发送给相关人员,以便及时获取资源运行状态等信息并采取相应措施,避免因资源问题造成业务损失。SMN-价格说明 日志转储:依赖 对象存储服务 (简称OBS),将日志文件转储到OBS桶中,以便进行长期存储。OBS-价格说明 日志订阅和阈值告警订阅:依赖分布式消息服务Kafka版,发送日志或阈值告警数据到Kafka队列中,可从分布式消息服务的Kafka队列中获取消费日志或阈值告警数据。分布式消息服务Kafka版-价格说明 应用性能管理 :AOM集成了应用性能管理服务(简称 APM ),方便提供更高级的运维能力。APM-价格说明
  • 切换版本 AOM支持基础版和按需版的相互切换。 只有按需版支持购买套餐包。 基础版切换至按需版 当基础版不能满足您的需要时,可切换至按需版。您可在AOM总览界面中单击“切换版本”进行切换。切换到按需版后,如果您未购买套餐包,将按照实际使用量进行扣费。如果您已购买套餐包,则在套餐包生效期间,扣费方式是先扣除已购买的套餐包内的额度,之后的超出部分按照按需付费的方式进行结算。 按需版切换至基础版 当您不再需要按需版时,您可在AOM总览界面中单击“切换版本”回到基础版,每24小时仅支持一次回退到基础版操作。切换到基础版的次日凌晨起,AOM将会删除超出基础版的配额。删除动作不可恢复,所以请您慎重操作。 如果您已使用按需版,当您的账户因欠费而被冻结时,您的账户将进入保留期。保留期为15天,您可选择充值或手动切换到基础版,手动切换到基础版后AOM将会删除超出基础版的配额,删除动作不可恢复,请谨慎操作。当超出保留期仍未充值时,AOM将自动切换至基础版。切换到基础版的次日凌晨起,AOM将会删除超出基础版的配额。删除动作不可恢复,所以请您及时充值。
  • 安装并启动Agent 在Agent管理页面,找到已成功创建的Agent。如图4所示,下载Agent。 图4 下载Agent 将下载的Agent压缩包,上传至待部署Agent的Linux主机上。 该Linux主机对vCPUs、内存、磁盘等规格无特殊要求,但须满足以下条件: 需要已安装64位版本java 8并配置java环境变量。 授予Ruby用户(若无Ruby用户则需手动创建)在/tmp目录下的写权限。 解压安装包后执行如下命令安装Agent。 sh sbin/install.sh 如果需要通过Agent连接关系数据库,则需要将对应的驱动(参考管理驱动获取)上传至Agent安装目录下的/server/jdbc,并修改在同目录下properties文件里对应数据库驱动的版本号。 以root用户执行如下命令,在/server/jdbc路径将新上传驱动的所有者和所属组修改为Ruby。 chown Ruby.Ruby * -R 安装完成后,执行如下命令启动Agent。 su Ruby sh sbin/start.sh 执行如下命令检查Agent进程是否启动。 ps -ef | grep cdm 如果命令执行完成后返回了正在运行的Agent进程,说明Agent进程已启动。
  • 创建 CDM 集群并绑定EIP 如果是独立CDM服务,参考创建集群创建CDM集群;如果是作为 DataArts Studio 服务CDM组件使用,参考创建集群创建CDM集群。 关键配置如下: CDM集群的规格,按待迁移的数据量选择,一般选择cdm.medium即可,满足大部分迁移场景。 CDM集群的VPC必须和 云搜索服务 集群所在VPC一致,且推荐子网、安全组也与 云搜索 服务一致。 如果安全控制原因不能使用相同子网和安全组,那么需要确保安全组规则能允许CDM访问云搜索服务集群。 CDM集群创建完成后,在集群管理界面选择“绑定弹性IP”,CDM通过EIP访问Oracle数据源。 如果用户对本地数据源的访问通道做了SSL加密,则CDM无法通过弹性IP连接数据源。
  • 操作步骤 进入购买 云数据迁移 服务界面。 配置CDM集群参数,各参数说明如表1所示。 表1 CDM集群参数 参数名称 样例 说明 当前区域 华北-北京一 选择CDM集群的区域,不同区域的资源之间内网不互通。 可用区 可用区2 请参见什么是可用区。 集群名称 cdm-aff1 自定义CDM集群名称。 说明: CDM集群创建后,不支持修改集群名称。 实例类型 cdm.large 目前CDM支持以下规格供用户选择: cdm.large:8核CPU、16G内存的虚拟机,最大带宽/基准带宽为3/0.8 Gbps,集群作业并发数上限为16。 cdm.xlarge:16核CPU、32G内存的虚拟机,最大带宽/基准带宽为10/4 Gbps,集群作业并发数上限为32,适合使用10GE高速带宽进行TB级以上的数据量迁移。 cdm.4xlarge:64核CPU、128G内存的虚拟机,最大带宽/基准带宽为40/36 Gbps,集群作业并发数上限为128。 购买DataArts Studio赠送的4核CPU、8G内存的虚拟机,仅支持作业单并发运行。 虚拟私有云 vpc1 CDM集群所属VPC、子网、安全组,需确保CDM集群与待连接的数据源能正常通信。用户可以根据CDM迁移的数据源端、目的端所处网络进行选择: 如果CDM集群与待连接的数据源所属不同的VPC,或者待连接的为本地数据源时,CDM集群需要绑定EIP,通过公网通信。 如果待连接的数据源为云上服务,则推荐CDM集群的网络配置与该云服务一致,此时CDM集群不用绑定EIP,通过内网通信。 如果待连接的数据源为云上服务,CDM与它在同一个VPC但所属不同子网,则可以通过配置安全组规则来使CDM集群与云服务间的网络互通。 VPC、子网、安全组的详细操作,请参见《虚拟私有云用户指南》。 子网 subnet-1 安全组 sg-1 企业项目 default 只有在企业项目管理界面创建了企业项目,这里才可以选择。 企业项目管理服务是一种云资源管理方式,具体请参见《企业管理用户指南》。 标签 cluster_owner:cdm 高级配置参数选择自定义时可配置标签参数。 如果您需要使用同一标签标识多种云资源,可以自定义填写标签键及对应的标签值,后续可在TMS标签系统中可筛选出同一标签的云资源。 说明: 一个集群最多可添加10个标签。 标签键(key)的最大长度为36个字符,标签值(value)的最大长度为43个字符。 消息通知 否 开启后,支持配置20个手机号码或邮箱,作业(目前仅支持表/文件迁移的作业)失败时、EIP异常时会发送短信或邮件通知用户。 查看当前配置,确认无误后单击“立即购买”进入规格确认界面。 集群创建好以后不支持修改规格,如果需要使用更高规格,需要重新创建。 单击“提交”,系统开始自动创建CDM集群,在“集群管理”界面可查看创建进度。
  • 前提条件 已申请VPC、子网和安全组。CDM集群连接云上其它服务时,需确保CDM集群与待连接的云服务在同一个VPC。如果CDM集群与其它云服务所属不同VPC,则CDM集群需要通过EIP连接云服务。 当CDM集群与其他云服务所在的区域、VPC、子网、安全组一致时,可保证CDM集群与其他云服务内网互通,无需专门打通网络。 当CDM集群与其他云服务所在的区域和VPC一致、但子网或安全组不一致时,需配置路由规则及安全组规则以打通网络。配置路由规则请参见如何配置路由规则章节,配置安全组规则请参见如何配置安全组规则章节。 当CDM集群与其他云服务所在的区域一致、但VPC不一致时,可以通过对等连接打通网络。配置对等连接请参见如何配置对等连接章节。 注:如果配置了VPC对等连接,可能会出现对端VPC子网与CDM管理网重叠,从而无法访问对端VPC中数据源的情况。推荐使用公网做跨VPC数据迁移,或联系管理员在CDM后台为VPC对等连接添加特定路由。 当CDM集群与其他云服务所在的区域不一致时,则需要通过公网或者专线打通网络。通过公网互通时,需确保CDM集群已绑定EIP、CDM云上安全组出方向放通云下数据源所在的主机、数据源所在的主机可以访问公网且防火墙规则已开放连接端口。 另外,如果创建了企业项目,则企业项目也会影响CDM集群与其他云服务的网络互通,只有企业项目一致的云服务才能打通网络。
  • 操作步骤 修改CDM迁移作业,通过使用SQL语句的方式迁移。 SQL语句格式为:“select id,cast(原字段名 as INT) as 新字段名可以和原字段名一样 from schemaName.tableName;” 例如:select `id`, `name`, cast(`sex` AS char(255) ) AS `sex` from `test_1117869`.`test_no_support_type`; 转换后的字段就转换为CDM支持的数据类型。
  • 操作场景 CDM集群创建完成后,支持解绑或绑定EIP。EIP即弹性公网IP,由虚拟私有云(Virtual Private Cloud,简称VPC)负责其计费。 如果CDM需要访问本地数据源、Internet的数据源,或者跨VPC的云服务,则必须要为CDM集群绑定一个弹性IP,或者使用NAT网关让CDM集群与其他弹性云服务器共享弹性IP访问Internet,具体操作请见添加SNAT规则。 如果用户对本地数据源的访问通道做了SSL加密,则CDM无法通过弹性IP连接数据源。
  • 如何获取驱动 不同类型的关系数据库,需要适配不同类型的驱动。注意,上传的驱动版本不必与待连接的数据库版本相匹配,直接参考表1获取建议版本的JDK8 .jar格式驱动即可。 表1 获取驱动 关系数据库类型 驱动名称 获取地址 建议版本 云数据库 MySQL MySQL MYSQL https://downloads.mysql.com/archives/c-j/ 5.1.48版本,获取mysql-connector-java-5.1.48.jar Oracle ORACLE_6 ORACLE_7 ORACLE_8 驱动包下载地址:https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html 历史版本驱动包下载地址:https://repo1.maven.org/maven2/com/oracle/database/jdbc/ ojdbc8的12.2.0.1版本,获取ojdbc8.jar 说明: 不支持使用新版本(如Oracle Database 21c (21.3) drivers),会导致创建作业时无法获取模式名。 云数据库 PostgreSQL PostgreSQL POSTGRESQL https://mvnrepository.com/artifact/org.postgresql/postgresql PostgreSQL推荐使用42.3.4版本,获取postgresql-42.3.4.jar 金仓数据库 POSTGRESQL https://mvnrepository.com/artifact/org.postgresql/postgresql 金仓数据库推荐使用42.2.9版本PostgreSQL驱动,获取postgresql-42.2.9.jar GaussDB数据库 POSTGRESQL GaussDB JDBC驱动请在GaussDB官方文档中搜索“JDBC包、驱动类和环境类”,然后选择实例对应版本的文档,参考文档获取gsjdbc4.jar。 请从对应版本的发布包中获取gsjdbc4.jar 云数据库 SQL Server Microsoft SQL Server SQLServer https://docs.microsoft.com/en-us/sql/connect/jdbc/release-notes-for-the-jdbc-driver?view=sql-server-ver15#previous-releases 4.2版本,获取sqljdbc42.jar
  • 创建CDM集群并绑定EIP 如果是独立CDM服务,参考创建集群创建CDM集群;如果是作为DataArts Studio服务CDM组件使用,参考创建集群创建CDM集群。 关键配置如下: CDM集群的规格,按待迁移的数据量选择,一般选择cdm.medium即可,满足大部分迁移场景。 CDM集群创建完成后,选择集群操作列的“绑定弹性IP”,CDM通过EIP访问MySQL。 图1 集群列表 如果用户对本地数据源的访问通道做了SSL加密,则CDM无法通过弹性IP连接数据源。
  • 创建CDM集群 如果是独立CDM服务,参考创建集群创建CDM集群;如果是作为DataArts Studio服务CDM组件使用,参考创建集群创建CDM集群。 该场景下,如果CDM集群只是用于迁移OBS数据到 DLI ,不需要迁移其他数据源,则CDM集群所在的VPC、子网、安全组选择任一个即可,没有要求,CDM通过内网访问DLI和OBS。主要是选择CDM集群的规格,按待迁移的数据量选择,一般选择cdm.medium即可,满足大部分迁移场景。
  • 操作步骤 登录CDM管理控制台。单击左侧导航上的“集群管理”,进入集群管理界面。 图1 集群列表 “创建来源”列仅通过DataArts Studio服务进入数据集成界面可以看到。 单击集群名称后,选择“标签”页签。 图2 修改集群配置 单击“添加/编辑标签”,通过添加、修改标签为CDM集群设置资源标识。 图3 添加标签 一个集群最多可添加10个标签。 标签键(key)的最大长度为36个字符,标签值(value)的最大长度为43个字符。 (可选)在标签列表中,单击标签操作列“删除”,删除CDM集群标签。 通过以下两种方式筛选出所配置标签的资源。 在标签管理服务中,选择资源搜索条件,单击“搜索”即可筛选出所配置标签的资源。 在集群列表中,单击标签搜索,筛选出所配置标签的资源。
  • 文件/路径过滤器 参数位置:在创建表/文件迁移作业时,如果源端数据源为文件类型,那么源端作业参数的高级属性中可以看到“过滤类型”参数,该参数可选择:通配符或正则表达式。 参数原理:“过滤类型”选择“通配符”时,CDM就可以通过用户配置的通配符过滤文件或路径,CDM只迁移满足指定条件的文件或路径。 配置样例: 例如源端文件名带有时间字段“2017-10-15 20:25:26”,这个时刻生成的文件为“/opt/data/file_20171015202526.data”,则在创建作业时,参数配置如下: 过滤类型:选择“通配符”。 文件过滤器:配置为“*${dateformat(yyyyMMdd,-1,DAY)}*”(这是CDM支持的日期宏变量格式,详见时间宏变量使用解析)。 图1 文件过滤 配置作业定时自动执行,“重复周期”为1天。 这样每天就可以把昨天生成的文件都导入到目的端目录,实现增量同步。 文件增量迁移场景下,“路径过滤器”的使用方法同“文件过滤器”一样,需要路径名称里带有时间字段,这样可以定期增量同步指定目录下的所有文件。
  • 时间过滤 参数位置:在创建表/文件迁移作业时,如果源端数据源为文件类型,那么源端作业配置下的高级属性中,“时间过滤”参数选择“是”。 参数原理:“起始时间”和“终止时间”参数中输入时间值后,只有修改时间介于起始时间和终止时间之间(时间区间为左闭右开,即等于起始时间也在区间之内)的文件才会被CDM迁移。 配置样例: 例如需要CDM只同步2021年1月1日~2022年1月1日生成的文件到目的端,则参数配置如下: 时间过滤器:选择为“是”。 起始时间:配置为2021-01-01 00:00:00(格式要求为yyyy-MM-dd HH:mm:ss)。 终止时间:配置为2022-01-01 00:00:00(格式要求为yyyy-MM-dd HH:mm:ss) 图2 时间过滤 这样CDM作业就只迁移2021年1月1日~2022年1月1日时间段内生成的文件,下次作业再启动时就可以实现增量同步。
  • 时间宏变量和定时任务配合完成增量同步 这里列举两个简单的使用场景: 数据库表中存在表示时间的列DS,类型为“varchar(30)”,插入的时间格式类似于“2017-xx-xx”。 定时任务中,重复周期为1天,每天的凌晨0点执行定时任务。配置“Where子句”为DS='${dateformat(yyyy-MM-dd,-1,DAY)}',这样就可以在每天的凌晨0点导出前一天产生的所有数据。 数据库表中存在表示时间的列time,类型为“Number”,插入的时间格式为时间戳。 定时任务中,重复周期为1天,每天的凌晨0点执行定时任务。配置“Where子句”为time between ${timestamp(-1,DAY)} and ${timestamp()},这样就可以在每天的凌晨0点导出前一天产生的所有数据。 其它的配置方式原理相同。
  • Where子句中的时间宏变量 以SQOOP.CDM_20171016表为例,该表中存在表示时间的列DS,如图2所示。 图2 表数据 假设当前时间为“2017-10-16”,要导出前一天的数据(即DS=‘2017-10-15’),则可以在创建作业时配置“Where子句”为DS='${dateformat(yyyy-MM-dd,-1,DAY)}',即可将符合DS=‘2017-10-15’条件的数据导出。
  • 时间变量宏定义具体展示 假设当前时间为“2017-10-16 09:00:00”,时间变量宏定义具体如表1所示。 表1 时间变量宏定义具体展示 宏变量 含义 实际显示效果 ${dateformat(yyyy-MM-dd)} 以yyyy-MM-dd格式返回当前时间。 2017-10-16 ${dateformat(yyyy/MM/dd)} 以yyyy/MM/dd格式返回当前时间。 2017/10/16 ${dateformat(yyyy_MM_dd HH:mm:ss)} 以yyyy_MM_dd HH:mm:ss格式返回当前时间。 2017_10_16 09:00:00 ${dateformat(yyyy-MM-dd HH:mm:ss, -1, DAY)} 以yyyy-MM-dd HH:mm:ss格式返回时间,时间为当前时间的前一天。 2017-10-15 09:00:00 ${timestamp()} 返回当前时间的时间戳,即1970年1月1日(00:00:00 GMT)到当前时间的毫秒数。 1508115600000 ${timestamp(-10, MINUTE)} 返回当前时间点10分钟前的时间戳。 1508115000000 ${timestamp(dateformat(yyyyMMdd))} 返回今天0点的时间戳。 1508083200000 ${timestamp(dateformat(yyyyMMdd,-1,DAY))} 返回昨天0点的时间戳。 1507996800000 ${timestamp(dateformat(yyyyMMddHH))} 返回当前整小时的时间戳。 1508115600000
  • 路径和表名的时间宏变量 如图1所示,如果将: 源端的“表名”配置为“CDM_/${dateformat(yyyy-MM-dd)}”。 目的端的“写入目录”配置为“/opt/ttxx/${timestamp()}”。 经过宏定义转换,这个作业表示:将Oracle数据库的“SQOOP.CDM_20171016”表中数据,迁移到HDFS的“/opt/ttxx/1508115701746”目录中。 图1 源表名和写入目录配置为时间宏变量 目前也支持一个表名或路径名中有多个宏定义变量,例如“/opt/ttxx/${dateformat(yyyy-MM-dd)}/${timestamp()}”,经过转换后为“/opt/ttxx/2017-10-16/1508115701746”。
  • dateformat dateformat支持两种形式的参数: dateformat(format) format表示返回日期的格式,格式定义参考“java.text.SimpleDateFormat.java”中的定义。 例如当前日期为“2017-10-16 09:00:00”,则“yyyy-MM-dd HH:mm:ss”表示“2017-10-16 09:00:00”。 dateformat(format, dateOffset, dateType) format表示返回日期的格式。 dateOffset表示日期的偏移量。 dateType表示日期的偏移量的类型。 目前dateType支持以下几种类型:SECOND(秒),MINUTE(分钟),HOUR(小时),DAY(天),MONTH(月),YEAR(年)。 其中MONTH(月),YEAR(年)的偏移量类型存在特殊场景: 对于年、月来说,若进行偏移后实际没有该日期,则按照日历取该月最大的日期。 不支持在源端和目的端的“时间过滤”参数中的起始时间、终止时间使用年、月的偏移。 例如当前日期为“2023-03-01 09:00:00”,则: “dateformat(yyyy-MM-dd HH:mm:ss, -1, YEAR)”表示当前时间的前一年,也就是“2022-03-01 09:00:00”。 “dateformat(yyyy-MM-dd HH:mm:ss, -3, MONTH)”表示当前时间的前三月,也就是“2022-12-01 09:00:00”。 “dateformat(yyyy-MM-dd HH:mm:ss, -1, DAY)”表示当前时间的前一天,也就是“2023-02-28 09:00:00”。 “dateformat(yyyy-MM-dd HH:mm:ss, -1, HOUR)”表示当前时间的前一小时,也就是“2023-03-01 08:00:00”。 “dateformat(yyyy-MM-dd HH:mm:ss, -1, MINUTE)”表示当前时间的前一分钟,也就是“2023-03-01 08:59:00”。 “dateformat(yyyy-MM-dd HH:mm:ss, -1, SECOND)”表示当前时间的前一秒,也就是“2023-03-01 08:59:59”。
  • timestamp timestamp支持两种形式的参数: timestamp() 返回当前时间的时间戳,即从1970年到现在的毫秒数,如1508078516286。 timestamp(dateOffset, dateType) 返回经过时间偏移后的时间戳,“dateOffset”和“dateType”表示日期的偏移量以及偏移量的类型。 例如当前日期为“2017-10-16 09:00:00”,则“timestamp(-10, MINUTE)”返回当前时间点10分钟前的时间戳,即“1508115000000”。
  • 约束限制 如果在字段映射界面,CDM通过获取样值的方式无法获得所有列(例如从HBase/CloudTable/MongoDB导出数据时,CDM有较大概率无法获得所有列),则可以单击后选择“添加新字段”来手动增加,确保导入到目的端的数据完整。 关系数据库、Hive、 MRS Hudi及DLI做源端时,不支持获取样值功能。 SQLServer作为目的端数据源时,不支持timestamp类型字段的写入,需修改为其他时间类型字段写入(如datetime)。 当作业源端为OBS、迁移CSV文件时,并且配置“解析首行为列名”参数的场景下显示列名。 当使用二进制格式进行文件到文件的迁移时,没有字段映射这一步。 自动创表场景下,需在目的端表中提前手动新增字段,再在字段映射里新增字段。 添加完字段后,新增的字段在界面不显示样值,不会影响字段值的传输,CDM会将字段值直接写入目的端。 如果字段映射关系不正确,您可以通过拖拽字段、单击对字段批量映射两种方式来调整字段映射关系。 如果是导入到 数据仓库 服务(DWS),则还需在目的字段中选择分布列,建议按如下顺序选取分布列: 有主键可以使用主键作为分布列。 多个数据段联合做主键的场景,建议设置所有主键作为分布列。 在没有主键的场景下,如果没有选择分布列,DWS会默认第一列作为分布列,可能会有数据倾斜风险。 如CDM不支持源端迁移字段类型,请参见不支持数据类型转换规避指导将字段类型转换为CDM支持的类型。
  • 操作场景 作业参数配置完成后,将进行字段映射的配置,您可以通过字段映射界面的可自定义新增字段。 如果是文件类数据源(FTP/SFTP/HDFS/OBS)之间相互迁移数据,且源端“文件格式”配置为“二进制格式”(即不解析文件内容直接传输),则没有字段映射这一步骤。 其他场景下,CDM会自动匹配源端和目的端数据表字段,需用户检查字段映射关系和时间格式是否正确,例如:源字段类型是否可以转换为目的字段类型。 您可以单击字段映射界面的选择“添加新字段”自定义新增字段,通常用于标记数据库来源,以确保导入到目的端数据的完整性。 图1 字段映射 目前支持以下类型自定义字段: 常量 常量参数即参数值是固定的参数,不需要重新配置值。例如“lable”=“friends”用来标识常量值。 变量 您可以使用时间宏、表名宏、版本宏等变量来标记数据库来源信息。变量的语法:${variable},其中“variable”指的是变量。例如“input_time”=“${timestamp()}”用来标识当前时间的时间戳。 表达式 您可以使用表达式语言根据运行环境动态生成参数值。表达式的语法:#{expr},其中“expr”指的是表达式。例如“time”=“#{DateUtil.now()}”用来标识当前日期字符串。
  • 事务模式迁移 CDM的事务模式迁移,是指当CDM作业执行失败时,将数据回滚到作业开始之前的状态,自动清理目的表中的数据。 参数位置:创建表/文件迁移的作业时,如果目的端为关系型数据库,在目的端作业配置的高级属性中,可以通过“先导入阶段表”参数选择是否启用事务模式。 参数原理:如果启用,在作业执行时CDM会自动创建临时表,先将数据导入到该临时表,导入成功后再通过数据库的事务模式将数据迁移到目标表中;导入失败则将目的表回滚到作业开始之前的状态。 图1 事务模式迁移 如果“导入开始前”选择“清除部分数据”或“清除全部数据”,CDM的事务模式不会回滚已经删除的数据。 父主题: 关键操作指导
共100000条