华为云用户手册

  • 什么是业务带宽限制 WAF的业务带宽是指所有该WAF防护的 域名 、站点中正常业务流量的大小,单位为Mbit/s。一个QPS扩展包包含: 对于部署在华为云的Web应用 业务带宽:50Mbit/s 每秒钟的请求量:1000QPS(Query Per Second,例如一个HTTP GET请求就是一个Query) 对于未部署在华为云的Web应用 业务带宽:20Mbit/s 每秒钟的请求量:1000QPS(Query Per Second,例如一个HTTP GET请求就是一个Query) WAF中的实际业务带宽由WAF单独计算,与其他 华为云产品 (如CDN、ELB、E CS 等)的带宽或者流量限制没有任何关联。 通过包年/包月模式购买WAF时,标准版、专业版和铂金版都存在一定量的业务带宽限制,且在华为云内的源站服务器(如ECS、ELB实例等)可享有更高的业务带宽。例如,在WAF铂金版套餐中,对于华为云内的源站的业务带宽限制为300Mbit/s,而对于华为云外的服务器(如IDC机房等)的业务带宽限制则为100Mbit/s,如图1所示。 图1 业务带宽
  • 超过业务带宽限制和请求限制会有什么影响 如果您的正常业务流量超过您已购买的WAF版本的业务带宽和请求限制,您在WAF中配置的全部业务的流量转发将可能受到影响。 超出业务请求限制后,可能出现限流、随机丢包等现象,导致您的正常业务在一定时间内不可用、卡顿、延迟等。例如,页面提示“Website is under maintenance (Protected by WAF)”。 如果出现这种情况,您需要升级WAF版本或者扩展业务请求,避免正常业务流量超出业务请求限制所产生的影响。
  • 如何选择QPS扩展包 购买WAF时,您需要提前考虑准备通过WAF配置防护的所有站点的日常入方向和出方向总流量的峰值,确保您选购的WAF所对应的业务带宽限制大于入、出方向总流量峰值中较大的值。 一般情况下,出方向的流量会比较大。 您可以参考云服务器(ECS)管理控制台中的流量统计,或者通过您站点服务器上的其它监控工具来评估您的实际业务流量大小。 流量指的是业务去掉攻击流量后的正常流量。例如,您需要将所有站点对外访问的流量都接入WAF进行防护,在正常访问(未遭受攻击)时,WAF将这些正常访问流量回源到源站ECS实例;而当站点遭受攻击(CC攻击或DDoS攻击)时,WAF将异常流量拦截、过滤后,将正常流量回源到源站ECS实例。因此,您在云服务器(ECS)管理控制台中查看您源站ECS实例的入方向及出方向的流量就是正常的业务流量。如果存在多个源站ECS实例,则需要统计所有源站ECS实例流量的总和。例如:假设您需要通过WAF配置防护六个站点,每个站点的出方向的正常业务流量峰值都不超过2,000QPS,流量总和不超过12,000QPS。这种情况下,您只需选择购买 Web应用防火墙 铂金版套餐即可。
  • 云审计 服务支持的WAF操作列表 云审计服务(Cloud Trace Service, CTS )记录了Web应用防火墙相关的操作事件,方便用户日后的查询、审计和回溯,具体请参见云审计服务用户指南。 表1 云审计服务支持的WAF操作列表 操作名称 资源类型 事件名称 创建云模式域名 instance createInstance 删除云模式域名 instance deleteInstance 修改云模式域名的防护状态 instance modifyProtectStatus 修改云模式域名的接入状态 instance modifyAccessStatus 修改云模式域名 instance modifyInstance 修改DNS解析,快速接入WAF instance quickAccessInstance 服务器线路设置 instance modifyInstanceRoute 创建域名(独享/elb) host createHost 修改域名(独享/elb) host modifyHost 删除域名(独享/elb) host deleteHost 修改防护状态(独享/elb) host modifyProtectStatus 修改接入状态(独享/elb) host modifyAccessStatus 修改接入配置(独享/elb) host modifyAccessProgress 域名迁移 migrate-host migrateHosts 添加证书 certificate createCertificate 修改证书 certificate updateCertificate 删除证书 certificate deleteCertificate 应用证书(将证书添加到域名) certificate applyCertificate 共享证书 certificate-sharing createCertificateSharing 关闭证书共享 certificate-sharing deleteCertificateSharing 创建Web应用防火墙防护策略 policy createPolicy 应用Web应用防火墙防护策略 policy applyToHost 更新Web应用防火墙防护策略 policy modifyPolicy 删除Web应用防火墙防护策略 policy deletePolicy 创建CC规则 policy createCc 修改CC规则 policy modifyCc 删除CC规则 policy deleteCc 创建精准防护规则 policy createCustom 修改精准防护规则 policy modifyCustom 删除精准防护规则 policy deleteCustom 创建IP黑白名单规则 policy createWhiteblackip 修改IP黑白名单规则 policy modifyWhiteblackip 删除IP黑白名单规则 policy deleteWhiteblackip 创建/刷新网页防篡改规则 policy createAntitamper 开启/关闭网页防篡改规则 policy modifyAntitamper 删除网页防篡改规则 policy deleteAntitamper 创建全局白名单(原误报屏蔽)规则 policy createIgnore 修改全局白名单(原误报屏蔽)规则 policy modifyIgnore 删除全局白名单(原误报屏蔽)规则 policy deleteIgnore 创建隐私屏蔽规则 policy createPrivacy 修改隐私屏蔽规则 policy modifyPrivacy 删除隐私屏蔽规则 policy deletePrivacy 创建攻击惩罚规则 policy createPunishment 修改攻击惩罚规则 policy modifyPunishment 删除攻击惩罚规则 policy deletePunishment 创建地理位置访问控制规则 policy createGeoip 修改地理位置访问控制规则 policy modifyGeoip 删除地理位置访问控制规则 policy deleteGeoip 创建威胁情报访问控制规则 policy createIp-reputation 修改威胁情报访问控制规则 policy modifyIp-reputation 删除威胁情报访问控制规则 policy deleteIp-reputation 创建反爬虫规则 policy createAnticrawler 修改反爬虫规则 policy modifyAnticrawler 删除反爬虫规则 policy deleteAnticrawler 创建防敏感信息泄露规则 policy createAntileakage 修改防敏感信息泄露规则 policy modifyAntileakage 删除防敏感信息泄露规则 policy deleteAntileakage 批量创建CC规则 policy batchCreateCc 批量修改CC规则 policy batchUpdateCc 批量删除CC规则 policy batchDeleteCc 批量创建精准防护规则 policy batchCreateCustom 批量修改精准防护规则 policy batchUpdateCustom 批量删除精准防护规则 policy batchDeleteCustom 批量创建IP黑白名单规则 policy batchCreateWhiteblackip 批量修改IP黑白名单规则 policy batchUpdateWhiteblackip 批量删除IP黑白名单规则 policy batchDeleteWhiteblackip 批量创建地理位置访问控制规则 policy batchCreateGeoip 批量修改地理位置访问控制规则 policy batchUpdateGeoip 批量删除地理位置访问控制规则 policy batchDeleteGeoip 批量创建威胁情报访问控制规则 policy batchCreateIp-reputation 批量修改威胁情报访问控制规则 policy batchUpdateIp-reputation 批量删除威胁情报访问控制规则 policy batchDeleteIp-reputation 批量创建/刷新网页防篡改规则 policy batchCreateAntitamper 批量开启/关闭网页防篡改规则 policy batchUpdateAntitamper 批量删除网页防篡改规则 policy batchDeleteAntitamper 批量创建防敏感信息泄露规则 policy batchCreateAntileakage 批量修改防敏感信息泄露规则 policy batchUpdateAntileakage 批量删除防敏感信息泄露规则 policy batchDeleteAntileakage 批量创建全局白名单(原误报屏蔽)规则 policy batchCreateIgnore 批量修改全局白名单(原误报屏蔽) policy batchUpdateIgnore 批量删除全局白名单(原误报屏蔽) policy batchDeleteIgnore 批量创建隐私屏蔽规则 policy batchCreatePrivacy 批量修改隐私屏蔽规则 policy batchUpdatePrivacy 批量删除隐私屏蔽规则 policy batchDeletePrivacy 创建告警通知 alertNoticeConfig createAlertNoticeConfig 修改告警通知 alertNoticeConfig modifyAlertNoticeConfig 删除告警通知 alertNoticeConfig deleteAlertNoticeConfig 批量删除告警通知 alertNoticeConfig batchDeleteAlertNoticeConfig 删除独享实例 instance deleteInstance 创建独享实例 instance createInstance 更新独享实例 instance upgradeInstance 修改实例名 instance alterInstanceName 添加地址组 ip-group createIPGroup 修改地址组 ip-group modifyIPGroup 删除地址组 ip-group deleteIPGroup 创建引用表 valueList createValueList 修改引用表 valueList modifyValueList 删除引用表 valueList deleteValueList 创建安全报告模板 SecurityReport createSecurityReportSubscription 修改安全报告模板 SecurityReport updateSecurityReportSubscription 删除安全报告模板 SecurityReport deleteSecurityReportSubscription 购买内容安全检测 content_security openPostpaidContentSecurity 批量购买内容安全检测 content_security batchCreateContentSecurityTask 父主题: 审计
  • 请求消息体(可选) 该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,********为用户登录密码,xxxxxxxxxxxxxxxxxx为project的名称,如“cn-north-1”,您可以从地区和终端节点获取。 scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可以设置Token的作用域为某个账号下所有资源或账号的某个project下的资源,详细定义请参见获取用户Token。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxxxxxxxxxxxx" } } } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中的“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求URI 请求URI由如下部分组成: {URI-scheme}://{Endpoint}/{resource-path}?{query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 描述 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点获取。 例如 IAM 服务在“华北-北京四”区域的Endpoint为“iam.cn-north-4.myhuaweicloud.com”。 resource-path 资源路径,即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“?limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华北-北京四”区域的Token,则需使用“华北-北京四”区域的Endpoint(iam.cn-north-4.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 1 https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为方便查看,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务您正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: 1 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 名称 描述 是否必选 示例 Host 请求的服务器信息,从服务API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,https的默认端口为443。 否 使用AK/SK认证时该字段必选。 code.test.com or code.test.com:443 Content-Type 消息体的类型(格式)。推荐用户使用默认值application/json,有其他取值时会在具体接口中专门说明。 是 application/json Content-Length 请求body长度,单位为Byte。 否 3495 X-Project-Id project id,项目编号。请参考获取项目ID章节获取项目编号。 否 如果是专属云场景采用AK/SK认证方式的接口请求,或者多project场景采用AK/SK认证的接口请求,则该字段必选。 e9993fc787d94b6c886cbaa340f9c0f4 X-Auth-Token 用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头(Headers)中包含的“X-Subject-Token”的值即为Token值。 否 使用Token认证时该字段必选。 注:以下仅为Token示例片段。 MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ API同时支持使用AK/SK认证,AK/SK认证使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见认证鉴权的“AK/SK认证”。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 1 2 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小在12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):私有访问密钥。与访问密钥ID结合使用,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头中,从而通过身份认证,获得操作API的权限。Token可通过调用获取用户Token接口获取。 云服务存在两种部署方式:项目级服务和全局级服务。 项目级服务需要获取项目级别的Token,此时请求body中auth.scope的取值为project。 全局级服务需要获取全局级别的Token,此时请求body中auth.scope的取值为domain。 调用配置审计服务API需要全局级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择domain,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", //IAM用户名 "password": "********", //IAM用户密码 "domain": { "name": "domainname" //IAM用户所属帐号名 } } } }, "scope": { "domain": { "name": "xxxxxxxx" //项目名称 } } } } 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 1 2 3 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projects Content-Type: application/json X-Auth-Token: ABCDEFJ.... 您还可以通过这个视频教程了解如何使用Token认证:https://bbs.huaweicloud.com/videos/101333。
  • 合规规则包 权限 对应API接口 授权项 依赖的授权项 IAM项目 企业项目 创建合规规则包 POST /v1/resource-manager/domains/{domain_id}/conformance-packs rms:conformancePacks:create rf:stack:createStack rf:stack:getStackMetadata rf:stack:listStackResources √ 不涉及 查看合规规则包 GET /v1/resource-manager/domains/{domain_id}/conformance-packs/{conformance_pack_id} rms:conformancePacks:get - √ 不涉及 列举合规规则包 GET /v1/resource-manager/domains/{domain_id}/conformance-packs rms:conformancePacks:list - √ 不涉及 删除合规规则包 DELETE /v1/resource-manager/domains/{domain_id}/conformance-packs/{conformance_pack_id} rms:conformancePacks:delete rf:stack:deleteStack rf:stack:getStackMetadata √ 不涉及 列举合规规则包的结果概览 GET /v1/resource-manager/domains/{domain_id}/conformance-packs/compliance/summary rms:conformancePacks:list - √ 不涉及 列举合规规则包的评估结果 GET /v1/resource-manager/domains/{domain_id}/conformance-packs/{conformance_pack_id}/compliance rms:conformancePacks:get - √ 不涉及 列举合规规则包的评估结果详情 GET /v1/resource-manager/domains/{domain_id}/conformance-packs/{conformance_pack_id}/compliance/details rms:conformancePacks:get - √ 不涉及 列举合规规则包分数 GET /v1/resource-manager/domains/{domain_id}/conformance-packs/scores rms:conformancePacks:list - √ 不涉及 创建组织合规规则包 POST /v1/resource-manager/organizations/{organization_id}/conformance-packs rms:organizationConformancePacks:create organizations:organizations:get organizations:accounts:list organizations:delegatedAdministrators:list organizations:trustedServices:enable organizations:trustedServices:list √ 不涉及 列举组织合规规则包 GET /v1/resource-manager/organizations/{organization_id}/conformance-packs rms:organizationConformancePacks:list organizations:organizations:get √ 不涉及 查看组织合规规则包 GET /v1/resource-manager/organizations/{organization_id}/conformance-packs/{conformance_pack_id} rms:organizationConformancePacks:get organizations:organizations:get √ 不涉及 删除组织合规规则包 DELETE /v1/resource-manager/organizations/{organization_id}/conformance-packs/{conformance_pack_id} rms:organizationConformancePacks:delete organizations:organizations:get √ 不涉及 查看组织合规规则包部署状态 GET /v1/resource-manager/organizations/{organization_id}/conformance-packs/statuses rms:organizationConformancePacks:list organizations:organizations:get √ 不涉及 查看组织合规规则包部署详细状态 GET /v1/resource-manager/organizations/{organization_id}/conformance-packs/detailed-statuses rms:organizationConformancePacks:list organizations:organizations:get √ 不涉及 父主题: 权限和授权项
  • 资源合规 权限 对应API接口 授权项 依赖的授权项 IAM项目 企业项目 列出内置策略 GET /v1/resource-manager/policyDefinitions rms:policyDefinitions:get - √ 不涉及 查询单个内置策略 GET /v1/resource-manager/policy-definitions/{policy_definition_id} rms:policyDefinitions:get - √ 不涉及 更新合规规则 PUT /v1/resource-manager/domains/{domain_id}/policy-assignments/{policy_assignment_id} rms:policyAssignments:update - √ 不涉及 启用合规规则 POST /v1/resource-manager/domains/{domain_id}/policy-assignments/{policy_assignment_id}/enable rms:policyAssignments:update - √ 不涉及 停用合规规则 POST /v1/resource-manager/domains/{domain_id}/policy-assignments/{policy_assignment_id}/disable rms:policyAssignments:update - √ 不涉及 创建合规规则 PUT /v1/resource-manager/domains/{domain_id}/policy-assignments rms:policyAssignments:create - √ 不涉及 列出合规规则 GET /v1/resource-manager/domains/{domain_id}/policy-assignments rms:policyAssignments:get - √ 不涉及 查看单个合规规则 GET /v1/resource-manager/domains/{domain_id}/policy-assignments/{policy_assignment_id} rms:policyAssignments:get - √ 不涉及 删除合规规则 DELETE /v1/resource-manager/domains/{domain_id}/policy-assignments/{policy_assignment_id} rms:policyAssignments:delete - √ 不涉及 获取规则的评估状态 GET /v1/resource-manager/domains/{domain_id}/policy-states/evaluation-state rms:policyStates:get - √ 不涉及 获取资源的合规结果 GET /v1/resource-manager/domains/{domain_id}/resources/{resource_id}/policy-states rms:policyStates:get - √ 不涉及 获取用户的合规结果 GET /v1/resource-manager/domains/{domain_id}/policy-states rms:policyStates:get - √ 不涉及 获取规则的合规结果 GET /v1/resource-manager/domains/{domain_id}/policy-assignments/{policy_assignment_id}/policy-states rms:policyStates:get - √ 不涉及 运行合规评估 POST /v1/resource-manager/domains/{domain_id}/policy-states/run-evaluation rms:policyStates:runEvaluation - √ 不涉及 更新合规评估结果 GET /v1/resource-manager/domains/{domain_id}/policy-states rms:policyStates:update - √ 不涉及 创建或更新组织合规规则 PUT /v1/resource-manager/organizations/{organization_id}/policy-assignments rms:organizationPolicyAssignments:put organizations:organizations:get organizations:accounts:list organizations:delegatedAdministrators:list organizations:trustedServices:enable organizations:trustedServices:list √ 不涉及 查询组织合规规则列表 GET /v1/resource-manager/organizations/{organization_id}/policy-assignments rms:organizationPolicyAssignments:list organizations:organizations:get √ 不涉及 查询指定组织合规规则 GET /v1/resource-manager/organizations/{organization_id}/policy-assignments/{organization_policy_assignment_id} rms:organizationPolicyAssignments:get organizations:organizations:get √ 不涉及 查询组织合规规则部署状态 GET /v1/resource-manager/organizations/{organization_id}/policy-assignment-statuses rms:organizationPolicyAssignments:list organizations:organizations:get √ 不涉及 查询组织内每个成员帐号合规规则部署的详细状态 GET /v1/resource-manager/organizations/{organization_id}/policy-assignment-detailed-status rms:organizationPolicyAssignments:list organizations:organizations:get √ 不涉及 删除组织合规规则 DELETE /v1/resource-manager/organizations/{organization_id}/policy-assignments/{organization_policy_assignment_id} rms:organizationPolicyAssignments:delete organizations:organizations:get √ 不涉及 父主题: 权限和授权项
  • 响应示例 状态码: 200 操作成功。 { "value" : [ { "id" : "k0123456789", "template_key" : "example-001.yaml", "description" : "预定义合规包模板示例。", "template_body" : "Omit it.", "parameters" : { "listOfAllowedFlavors" : { "description" : "The list of allowed flavor types.", "type" : "Array", "default_value" : "STAT", "allowed_values" : [ "STAT" ] } } } ], "page_info" : { "current_count" : 1, "next_marker" : null } }
  • URI GET /v1/resource-manager/conformance-packs/templates 表1 Query参数 参数 是否必选 参数类型 描述 limit 否 Integer 最大的返回数量。 最小值:1 最大值:200 缺省值:200 marker 否 String 分页参数,通过上一个请求中返回的marker信息作为输入,获取当前页。 最小长度:4 最大长度:400 template_key 否 String 预定义合规包模板名称。 最小长度:1 最大长度:128
  • 错误码 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 更多服务错误码请参见API错误中心。 状态码 错误码 错误信息 描述 处理措施 400 RMS .00010001 some region is restricted to access. 区域非法。 请检查请求参数。 400 RMS.00010002 resource type invalid. 资源类型非法。 请检查请求参数。 400 RMS.00010003 service invalid. 服务非法。 请检查请求参数。 400 RMS.00010004 invalid parameter. 不合法的参数。 请检查请求参数。 400 RMS.00010007 The max length of domainId must be less than or equal to 36. domainId的长度必须小于等于36。 请检查帐号ID是否正确。 400 RMS.00010008 domainId is illegal. domainId非法。 请检查帐号ID是否正确。 400 RMS.00010009 The max length of id must be less than or equal to 512. 资源ID的长度必须小于等于512。 请检查请求参数。 400 RMS.00010010 id is illegal. 资源ID非法。 请检查请求参数。 400 RMS.00010011 The max length of name must be less than or equal to 256. 资源名称的长度必须小于等于256。 请检查请求参数。 400 RMS.00010012 name is illegal. 资源名称非法。 请检查请求参数。 400 RMS.00010013 The size of resource type array must be between 1 and 100. 资源类型列表的长度必须介于1和100之间。 请检查请求参数。 400 RMS.00010014 The max length of resource type must be less than or equal to 40. 资源类型的长度必须小于等于40。 请检查请求参数。 400 RMS.00010015 resource type is illegal. 资源类型非法。 请检查请求参数。 400 RMS.00010016 The size of region id array must be between 1 and 10. 区域ID列表的长度必须介于1和10之间。 请检查请求参数。 400 RMS.00010017 The max length of region id must be less than or equal to 36. 区域ID的长度必须小于等于36。 请检查请求参数。 400 RMS.00010018 region id is illegal. 区域ID非法。 请检查请求参数。 400 RMS.00010019 The size of enterprise project array must be between 1 and 10. 企业项目列表的长度必须介于1和10之间。 请检查请求参数。 400 RMS.00010020 enterprise project is invalid. 无效的企业项目。 请检查请求参数。 400 RMS.00010021 The max length of project id array must be between 1 and 10. 项目ID列表的长度必须介于1和10之间。 请检查请求参数。 400 RMS.00010022 The max length of project id must be less than or equal to 36. 项目ID的长度必须小于等于36。 请检查请求参数。 400 RMS.00010023 project id is illegal. 项目ID非法。 请检查请求参数。 400 RMS.00010024 The minimum value of limit must be greater than or equal to 1. 分页限制值必须大于等于1。 请检查请求参数。 400 RMS.00010025 The maximum value of limit must be less than or equal to 200. 分页限制值必须小于等于200。 请检查请求参数。 400 RMS.00010026 The minimum value of offset must be greater than or equal to 1. 偏移值必须大于等于1。 请检查请求参数。 400 RMS.00010027 The maximum value of offset must be less than or equal to 1000. 偏移值必须小于等于1000。 请检查请求参数。 400 RMS.00010028 The number of tag keys must be between 1 and 5. 不同标签键的数量必须介于1和5之间。 请检查请求参数。 400 RMS.00010029 The length of a tag key must be less than or equal to 128. 标签的键名长度必须小于等于128。 请检查请求参数。 400 RMS.00010030 The number of values in a tag key must be less than or equal to 5. 同一标签键的键值数量必须小于等于5。 请检查请求参数。 400 RMS.00010031 The length of a tag value must be less than or equal to 255. 标签的键值长度必须小于等于255。 请检查请求参数。 400 RMS.00010032 Tag value is illegal. 标签键值非法。 请检查请求参数。 400 RMS.00010033 Tag key is illegal. 标签键名非法。 请检查请求参数。 400 RMS.00010034 marker is illegal. 标记非法。 请检查请求参数。 400 RMS.00010035 The length of marker must be between 4 and 400. 标记长度必须介于4和400之间。 请检查请求参数。 400 RMS.00010036 The minimum value of limit must be greater than or equal to 1. 分页限制值必须大于等于1。 请检查请求参数。 400 RMS.00010037 The maximum value of limit must be less than or equal to 200. 分页限制值必须小于等于200。 请检查请求参数。 400 RMS.00010038 The minimum value of offset must be greater than or equal to 1. 偏移值必须大于等于1。 请检查请求参数。 400 RMS.00010039 The maximum value of offset must be less than or equal to 1000. 偏移值必须小于等于1000。 请检查请求参数。 400 RMS.00010040 The max length of auth action must be less than or equal to 64. 操作的长度必须小于等于64。 请检查请求参数。 400 RMS.00010041 policy assignment id is illegal. policyAssignmentId非法。 请检查请求参数。 400 RMS.00010042 policy definition id is illegal. policyDefinitionId非法。 请检查请求参数。 400 RMS.00010043 The max length of policy assignment id must be less than or equal to 36. policyAssignmentId的长度必须小于等于36。 请检查请求参数。 400 RMS.00010044 The max length of policy definition id must be less than or equal to 36. policyDefinitionId的长度必须小于等于36。 请检查请求参数。 400 RMS.00010045 The max length of name must be less than or equal to 64. 名称的长度必须小于等于64。 请检查请求参数。 400 RMS.00010046 name is illegal. 名称非法。 请检查请求参数。 400 RMS.00010047 The max length of keyword must be less than or equal to 64. 关键字的长度必须小于等于64。 请检查请求参数。 400 RMS.00010048 keyword is illegal. 关键字非法。 请检查请求参数。 400 RMS.00010049 The max length of compliance state must be less than or equal to 16. 合规状态的长度必须小于等于16。 请检查请求参数。 400 RMS.00010050 compliance state is illegal. 合规状态非法。 请检查请求参数。 400 RMS.00010051 The max length of policy assignment state must be less than or equal to 16. 合规策略状态的长度必须小于等于16。 请检查请求参数。 400 RMS.00010052 policy assignment state is illegal. 合规策略状态非法。 请检查请求参数。 400 RMS.00010053 X-Language header is invalid. 非法的X-Language请求头。 请检查请求参数。 400 RMS.00010054 The max length of queryId must be less than or equal to 36. QueryId的长度必须小于等于36。 请检查请求参数。 400 RMS.00010055 QueryId is illegal. QueryId非法。 请检查请求参数。 400 RMS.00010056 The minimum value of limit must be greater than or equal to 1. 分页限制值必须大于等于1。 请检查请求参数。 400 RMS.00010057 The maximum value of limit must be less than or equal to 200. 分页限制值必须小于等于200。 请检查请求参数。 400 RMS.00010058 marker is illegal. marker标记非法。 请检查请求参数。 400 RMS.00010059 The length of marker must be between 4 and 400. marker标记长度必须介于4和400之间。 请检查请求参数。 400 RMS.00010060 Incorrect resource query language. 错误的高级查询语句。 检查高级查询语句是否正确。 400 RMS.00010061 Stored query name is illegal. 高级查询名称非法。 请检查请求参数。 400 RMS.00010062 The length of stored query name must be between 1 and 64. 高级查询名称长度必须介于1和64之间。 请检查请求参数。 400 RMS.00010064 Organization_id is illegal. organization_id非法。 请检查请求参数。 400 RMS.00010065 Organization_id length must be between 1 and 34. organization_id长度必须小于等于34。 请检查请求参数。 400 RMS.00010066 Organization_policy_assignment_id is illegal. organization_policy_assignment_id非法。 请检查请求参数。 400 RMS.00010067 Organization_policy_assignment_id length must be between 1 and 32. organization_policy_assignment_id长度必须小于等于32。 请检查请求参数。 400 RMS.00010068 Organization_policy_assignment_name is illegal. organization_policy_assignment_name非法。 请检查请求参数。 400 RMS.00010069 Organization_policy_assignment_name must be between 1 and 64. organization_policy_assignment_name长度必须小于等于64。 请检查请求参数。 400 RMS.00010070 The aggregator is not found. 聚合器不存在。 请检查请求参数。 400 RMS.00010071 Aggregator_id is illegal. aggregator_id非法。 请检查请求参数。 400 RMS.00010072 Aggregator_id length must be between 1 and 32. aggregator_id长度必须小于等于32。 请检查请求参数。 400 RMS.00010073 Authorized_account_id is illegal. authorized_account_id非法。 请检查请求参数。 400 RMS.00010074 Authorized_account_id length must be between 1 and 36. authorized_account_id长度必须小于等于36。 请检查请求参数。 400 RMS.00010075 Requester_account_id is illegal. requester_account_id非法。 请检查请求参数。 400 RMS.00010076 Requester_account_id length must be between 1 and 36. requester_account_id长度必须小于等于36。 请检查请求参数。 400 RMS.00010077 Aggregator_name is illegal. aggregator_name非法。 请检查请求参数。 400 RMS.00010078 Aggregator_name length must be between 1 and 64. aggregator_name长度必须小于等于64。 请检查请求参数。 400 RMS.00010080 Aggregator_update_status length must be between 1 and 16. aggregator_update_status长度必须小于16。 请检查请求参数。 400 RMS.00010081 The maximum value of limit is 2000. 分页限制值必须小于等于2000。 请检查请求参数。 400 RMS.00010082 The number of aggregators exceed quota. 聚合器数量超过配额,组织聚合器上限数量为1,帐号聚合器上限数量为30。 请检查资源聚合器剩余配额。 400 RMS.00010083 Conformance_pack_name is illegal. 合规规则包名称非法。 请检查请求参数。 400 RMS.00010084 Conformance_pack_name length must be between 1 and 64. 合规规则包名称长度必须小于等于64。 请检查请求参数。 400 RMS.00010085 Conformance_pack_id is illegal. 合规规则包ID非法。 请检查请求参数。 400 RMS.00010086 Conformance_pack_id length must be between 1 and 36. 合规规则包ID长度必须小于等于36。 请检查请求参数。 400 RMS.00010087 Template_key is illegal. 预定义合规规则包模板的名称非法。 请检查请求参数。 400 RMS.00010088 Template_key length must be between 1 and 128. 预定义合规规则包模板的名称长度必须小于等于128。 请检查请求参数。 400 RMS.00010089 Template_id is illegal. 预定义合规规则包模板的ID非法。 请检查请求参数。 400 RMS.00010090 Template_id length must be between 1 and 36. 预定义合规规则包模板的ID长度必须小于等于36。 请检查请求参数。 400 RMS.00010091 The tracker-config is not enabled. 资源记录器未开启。 请开启资源记录器。 400 RMS.00010092 The number of accounts operated by the aggregator exceeds the limit. 聚合器操作超过限制,帐号聚合器七天内增加或删除的最大账户数为1000 请检查七天内增加或删除的最大账户数是否超过1000 400 RMS.00010093 Exceeded limit on organization aggregator operations. 聚合器操作超过限制,组织聚合器一天内新增最大数为1 请检查一天内创建的组织聚合器个数 401 RMS.00010079 Incorrect IAM authentication information: Authorization header is missing. IAM认证错误:缺少Authorization header。 请添加认证header。 403 RMS.00010006 access denied. 访问拒绝。 请检查权限是否正确。 404 RMS.00010005 resource not found. 资源未找到。 请检查资源是否存在。 429 RMS.00010063 ResourceQL is busy. 高级查询繁忙中。 请稍后重试。 500 RMS.INTERNAL.ERROR Internal server error occurred. 服务内部错误。 请稍后再试或联系客服。 父主题: 附录
  • 响应示例 状态码: 200 操作成功。 { "id" : "k0123456789", "template_key" : "example-001.yaml", "description" : "预定义合规包模板示例。", "template_body" : "Omit it.", "parameters" : { "listOfAllowedFlavors" : { "description" : "The list of allowed flavor types.", "type" : "Array", "default_value" : "STAT", "allowed_values" : [ "STAT" ] } } }
  • 常用概念 Topic Kafka维护的同一类的消息称为一个Topic。 Partition 每一个Topic可以被分为多个Partition,每个Partition对应一个可持续追加的、有序不可变的log文件。 Producer 将消息发往Kafka topic中的角色称为Producer。 Consumer 从Kafka topic中获取消息的角色称为Consumer。 Broker Kafka集群中的每一个节点服务器称为Broker。 父主题: 概述
  • 操作步骤 导出Jar包。具体步骤请参考安装客户端时编译并运行程序章节的1。 是否运行HBase/Phoenix对接SpringBoot样例: 是,执行以下步骤运行样例: 在Linux环境新建运行目录,将“target”目录下的“hbase-springboot-*.jar”放到该路径下,并上传配置文件到1配置的对应路径下。 切换到运行目录,执行以下命令,运行Jar包。 java -jar hbase-springboot-*.jar 否,执行3。 准备依赖的Jar包和配置文件。 在Linux环境新建目录,例如“/opt/test”,并创建子目录“lib”和“conf”。将样例工程中“lib”的Jar包导出,导出步骤请参考安装客户端时编译并运行程序章节的3,以及1导出的Jar包,上传到Linux的“lib”目录。将样例工程中“conf”的配置文件上传到Linux中“conf”目录。 在“/opt/test”根目录新建脚本“run.sh”,修改内容如下并保存: #!/bin/sh BASEDIR=`cd $(dirname $0);pwd` cd ${BASEDIR} for file in ${BASEDIR}/lib/*.jar do i_cp=$i_cp:$file echo "$file" done for file in ${BASEDIR}/conf/* do i_cp=$i_cp:$file done java -cp .${i_cp} com.huawei.bigdata.hbase.examples.TestMain 切换到“/opt/test”,执行以下命令,运行Jar包。 sh run.sh
  • 在对性能要求比较高的场景下,可以使用Kryo优化序列化性能 Spark提供了两种序列化实现: org.apache.spark.serializer.KryoSerializer:性能好,兼容性差 org.apache.spark.serializer.JavaSerializer:性能一般,兼容性好 使用:conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer") 为什么不默认使用Kryo序列化? Spark默认使用的是Java的序列化机制,也就是ObjectOutputStream/ObjectInputStream API来进行序列化和反序列化。但是Spark同时支持使用Kryo序列化库,Kryo序列化类库的性能比Java序列化类库的性能要高很多。官方介 绍,Kryo序列化机制比Java序列化机制,性能高10倍左右。Spark之所以默认没有使用Kryo作为序列化类库,是因为Kryo要求最好要注册所 有需要进行序列化的自定义类型,因此对于开发者来说,这种方式比较麻烦。
  • RDD多次使用时,建议将RDD持久化 RDD在默认情况下的存储级别是StorageLevel.NONE,即既不存磁盘也不放在内存中,如果某个RDD需要多次使用,可以考虑将该RDD持久化,方法如下: 调用spark.RDD中的cache()、persist()、persist(newLevel:StorageLevel)函数均可将RDD持久化,cache()和persist()都是将RDD的存储级别设置为StorageLevel.MEMORY_ONLY,persist(newLevel:StorageLevel)可以为RDD设置其他存储级别,但是要求调用该方法之前RDD的存储级别为StorageLevel.NONE或者与newLevel相同,也就是说,RDD的存储级别一旦设置为StorageLevel.NONE之外的级别,则无法改变。 如果想要将RDD去持久化,那么可以调用unpersist(blocking:Boolean = true),该函数功能如下: 将该RDD从持久化列表中移除,RDD对应的数据进入可回收状态; 将RDD的存储级别重新设置为StorageLevel.NONE。
  • 在业务情况允许的情况下使用高性能算子 使用reduceByKey/aggregateByKey替代groupByKey。 所谓的map-side预聚合,说的是在每个节点本地对相同的key进行一次聚合操作,类似于MapReduce中的本地combiner。 map-side预聚合之后,每个节点本地就只会有一条相同的key,因为多条相同的key都被聚合起来了。其他节点在拉取所有节点上的相同key时,就会大大减少需要拉取的数据数量,从而也就减少了磁盘IO以及网络传输开销。通常来说,在可能的情况下,建议使用reduceByKey或aggregateByKey算子来替代掉groupByKey算子。因为reduceByKey和aggregateByKey算子都会使用用户自定义的函数对每个节点本地的相同key进行预聚合。而groupByKey算子是不会进行预聚合的,全量的数据会在集群的各个节点之间分发和传输,性能相对来说比较差。 使用mapPartitions替代普通map。 mapPartitions类的算子,一次函数调用会处理一个partition所有的数据,而不是一次函数调用处理一条,性能相对来说会高一些。 但是有的时候,使用mapPartitions会出现OOM(内存溢出)的问题。因为单次函数调用就要处理掉一个partition所有的数据,如果内存不够,垃圾回收时是无法回收掉太多对象的,很可能出现OOM异常。所以使用这类操作时要慎重! 使用filter之后进行coalesce操作。 通常对一个RDD执行filter算子过滤掉RDD中较多数据后(比如30%以上的数据),建议使用coalesce算子,手动减少RDD的partition数量,将RDD中的数据压缩到更少的partition中去。因为filter之后,RDD的每个partition中都会有很多数据被过滤掉,此时如果照常进行后续的计算,其实每个task处理的partition中的数据量并不是很多,有一点资源浪费,而且此时处理的task越多,可能速度反而越慢。因此用coalesce减少partition数量,将RDD中的数据压缩到更少的partition之后,只要使用更少的task即 可处理完所有的partition。在某些场景下,对于性能的提升会有一定的帮助。 使用repartitionAndSortWithinPartitions替代repartition与sort类操作。 repartitionAndSortWithinPartitions是Spark官网推荐的一个算子,官方建议,如果需要在 repartition重分区之后,还要进行排序,建议直接使用repartitionAndSortWithinPartitions 算子。因为该算子 可以一边进行重分区的shuffle操作,一边进行排序。shuffle与sort两个操作同时进行,比先shuffle再sort来说,性能可能是要高的。 使用foreachPartitions替代foreach。 原理类似于“使用mapPartitions替代map”,也是一次函数调用处理一个partition的所有数据,而不是一次函数调用处理一条数 据。在实践中发现,foreachPartitions类的算子,对性能的提升还是很有帮助的。比如在foreach函数中,将RDD中所有数据写 MySQL,那么如果是普通的foreach算子,就会一条数据一条数据地写,每次函数调用可能就会创建一个数据库连接,此时就势必会频繁地创建和销毁数据库连接,性能是非常低下;但是如果用foreachPartitions算子一次性处理一个partition的数据,那么对于每个 partition,只要创建一个数据库连接即可,然后执行批量插入操作,此时性能是比较高的。
  • 功能分解 根据上述的业务场景进行功能分解,需要开发的功能点如表1所示。 表1 在HBase中开发的功能 序号 步骤 代码实现 1 根据表1中的信息创建表。 请参见创建表。 2 导入用户数据。 请参见插入数据。 3 增加“教育信息”列族,在用户信息中新增用户的学历、职称等信息。 请参见修改表。 4 根据用户编号查询用户姓名和地址。 请参见使用Get读取数据。 5 根据用户姓名进行查询。 请参见使用过滤器Filter。 6 为提升查询性能,创建二级索引或者删除二级索引。 请参见创建二级索引和基于二级索引的查询。 7 用户销户,删除用户信息表中该用户的数据。 请参见删除数据。 8 A业务结束后,删除用户信息表。 请参见删除表。
  • 功能分解 根据上述的业务场景进行功能分解,需要开发的功能点如表1所示。 表1 在HBase中开发的功能 序号 步骤 代码实现 1 根据表1中的信息创建表。 请参见创建表。 2 导入用户数据。 请参见插入数据。 3 增加“教育信息”列族,在用户信息中新增用户的学历、职称等信息。 请参见修改表。 4 根据用户编号查询用户姓名和地址。 请参见使用Get读取数据。 5 根据用户姓名进行查询。 请参见使用过滤器Filter。 6 为提升查询性能,创建二级索引或者删除二级索引。 请参见创建二级索引和基于二级索引的查询。 7 用户销户,删除用户信息表中该用户的数据。 请参见删除数据。 8 A业务结束后,删除用户信息表。 请参见删除表。
  • 操作步骤 导出Jar包。具体步骤请参考安装客户端时编译并运行程序章节的1。 是否运行HBase/Phoenix对接SpringBoot样例: 是,执行以下步骤运行样例: 在Linux环境新建运行目录,将“target”目录下的“hbase-springboot-*.jar”放到该路径下,并上传配置文件和用户认证文件到1配置的对应路径下。 切换到运行目录,执行以下命令,运行Jar包。 java -jar hbase-springboot-*.jar 否,执行3。 准备依赖的Jar包和配置文件。 在Linux环境新建目录,例如“/opt/test”,并创建子目录“lib”和“conf”。将样例工程依赖的Jar包导出,导出步骤请参考安装客户端时编译并运行程序章节的3,以及1导出的Jar包,上传到Linux的“lib”目录。将样例工程中“conf”的配置文件及认证文件上传到Linux中“conf”目录。 在“/opt/test”根目录新建脚本“run.sh”,修改内容如下并保存: #!/bin/sh BASEDIR=`cd $(dirname $0);pwd` cd ${BASEDIR} for file in ${BASEDIR}/lib/*.jar do i_cp=$i_cp:$file echo "$file" done for file in ${BASEDIR}/conf/* do i_cp=$i_cp:$file done java -cp .${i_cp} com.huawei.bigdata.hbase.examples.TestMain 其中,com.huawei.bigdata.hbase.examples.TestMain为举例,具体以实际样例代码为准。 切换到“/opt/test”,执行以下命令,运行Jar包。 sh run.sh
  • 适用场景 Spark是分布式批处理框架,提供分析挖掘与迭代式内存计算能力,支持多种语言(Scala/Java/Python)的应用开发。 适用以下场景: 数据处理(Data Processing):可以用来快速处理数据,兼具容错性和可扩展性。 迭代计算(Iterative Computation):支持迭代计算,有效应对多步的数据处理逻辑。 数据挖掘(Data Mining):在海量数据基础上进行复杂的挖掘分析,可支持各种数据挖掘和机器学习算法。 流式处理(Streaming Processing):支持秒级延迟的流式处理,可支持多种外部数据源。 查询分析(Query Analysis):支持标准SQL查询分析,同时提供DSL(DataFrame), 并支持多种外部输入。 父主题: Spark
  • Doris样例工程介绍 MRS 样例工程获取地址为https://github.com/huaweicloud/huaweicloud-mrs-example,切换分支为与MRS集群相匹配的版本分支,然后下载压缩包到本地后解压,即可获取各组件对应的样例代码工程。 当前MRS提供以下Doris相关样例工程: 表1 Doris相关样例工程 样例工程位置 描述 doris-examples/doris-example Doris数据读写操作的应用开发示例。 通过调用Doris接口可实现创建用户表、向表中插入数据、查询表数据、删除表等功能,相关业务场景介绍请参见Doris JDBC接口调用样例程序。 springboot/doris-examples Doris数据读写操作的SpringBoot应用开发示例。 提供Doris对接SpringBoot的样例,样例介绍请参见配置并导入SpringBoot样例工程。 父主题: 概述
  • 代码样例 下面列出pyflink-sql.py的主要逻辑代码作为演示,在提交之前需要确保“file_path” 为要运行的SQL的路径,建议写全路径。 完整代码参见“flink-examples/pyflink-example/pyflink-sql”中的“pyflink-sql.py”。 import logging import sys import os from pyflink.table import (EnvironmentSettings, TableEnvironment) def read_sql(file_path): if not os.path.isfile(file_path): raise TypeError(file_path + " does not exist") all_the_text = open(file_path).read() return all_the_text def exec_sql(): # 提交之前修改SQL路径 file_path = "datagen2kafka.sql" sql = read_sql(file_path) t_env = TableEnvironment.create(EnvironmentSettings.in_streaming_mode()) statement_set = t_env.create_statement_set() sqlArr = sql.split(";") for sqlStr in sqlArr: sqlStr = sqlStr.strip() if sqlStr.lower().startswith("create"): print("---------create---------------") print(sqlStr) t_env.execute_sql(sqlStr) if sqlStr.lower().startswith("insert"): print("---------insert---------------") print(sqlStr) statement_set.add_insert_sql(sqlStr) statement_set.execute() if __name__ == '__main__': logging.basicConfig(stream=sys.stdout, level=logging.INFO, format="%(message)s") exec_sql() 表1 使用Python提交SQL作业参数说明 参数 说明 示例 file_path “datagen2kafka.sql”文件路径,建议写全路径。需在二次样例代码中获取并上传至客户端指定目录。 说明: 当作业需要以yarn-application模式提交时,需替换如下路径: file_path = os.getcwd() + "/../../../../yarnship/datagen2kafka.sql" file_path = /客户端安装目录/Flink/flink/datagen2kafka.sql SQL示例: create table kafka_sink ( uuid varchar(20), name varchar(10), age int, ts timestamp(3), p varchar(20) ) with ( 'connector' = 'kafka', 'topic' = 'input2', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'properties.group.id' = 'testGroup2', 'scan.startup.mode' = 'latest-offset', 'format' = 'json' ); create TABLE datagen_source ( uuid varchar(20), name varchar(10), age int, ts timestamp(3), p varchar(20) ) WITH ( 'connector' = 'datagen', 'rows-per-second' = '1' ); INSERT INTO kafka_sink SELECT * FROM datagen_source;
  • 建议 目前Hudi主要适用在实时入湖和增量数据ETL的场景,针对存量的历史数据可以批量导入Hudi表。 针对增量数据基本都是新增数据,侧重于读取数据的性能场景,更适合适用COW表。 针对对入湖性能有较高要求且增量数据中含有大量新增更新数据的场景,更适合用MOR表。 对于分区键的设置,根据业务建议使用日期字段来进行分区。 Hudi实时入湖时资源配置与Kafka的partition有一定关系,在消费kafka时一个partition只能被一个executor-core消费,因此过多配置executor-core会造成一定程度的资源浪费。 Spark streaming实时入湖的消费批次参数设置需要根据实际情况,满足每批次的间隔时间稍小于消费一批次消息写入Hudi表的时间。 Hudi写入的并行度设置不宜过大,适当缩小并行度可以缩短处理时间。 父主题: Hudi
  • 连接方式说明 连接方式 是否支持用户名密码认证方式 是否支持Keytab认证方式 是否支持客户端跨网段访问 使用前提 HSFabric 是 是 是 确保业务侧和HetuEngine服务端HSFabric所在业务节点网络互通 适用于双平面的网络场景 只需对外开放HSFabric固定的IP,端口 支持范围:MRS 3.1.3及之后版本 HSBroker 是 否 否 确保业务侧和HetuEngine服务端HSBroker、Coordinator(随机分布在Yarn NodeManger)所在业务节点网络互通 需对外开放Coordinator的IP,端口 支持范围:MRS 3.1.0及之后版本 父主题: 概述
  • 连接方式说明 连接方式 是否支持用户名密码认证方式 是否支持Keytab认证方式 是否支持客户端跨网段访问 使用前提 HSFabric 是 是 是 确保业务侧和HetuEngine服务端HSFabric所在业务节点网络互通 适用于双平面的网络场景 只需对外开放HSFabric固定的IP,端口 支持范围:MRS 3.1.3及之后版本 HSBroker 是 否 否 确保业务侧和HetuEngine服务端HSBroker、Coordinator(随机分布在Yarn NodeManger)所在业务节点网络互通 需对外开放Coordinator的IP,端口 支持范围:MRS 3.1.0及之后版本 父主题: 概述
共100000条