华为云用户手册

  • API网关系统角色 默认情况下,管理员创建的 IAM 用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 API网关服务部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问API网关服务时,需要先切换至授权区域。 权限根据授权精细程度分为角色和策略,策略是角色的升级版。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对API网关服务,管理员能够控制IAM用户进行指定的管理操作。权限策略以API接口为粒度进行权限拆分,API网关服务支持的API授权项请参见权限策略支持的授权项。 如表1所示,包括了API网关的所有系统角色和策略。 表1 API网关的系统角色或策略 系统角色/策略名称 描述 类别 依赖关系 APIG Administrator API网关服务的管理员权限。拥有该权限的用户可以使用专享版和共享版API网关服务的所有功能。 系统角色 如果在操作过程中涉及其他服务资源的创建、删除、变更等,则还需要在同项目中勾选对应服务的Administrator权限。 APIG FullAccess API网关服务所有权限。拥有该权限的用户可以使用专享版API网关服务的所有功能。 系统策略 无。 APIG ReadOnlyAccess API网关服务的只读访问权限。拥有该权限的用户只能查看专享版API网关服务的各类信息。 系统策略 无。 以上系统角色或策略的具体权限内容,可以从IAM服务控制台查看。例如APIG FullAccess的策略内容为: { "Version": "1.1", "Statement": [ { "Action": [ "apig:*:*", "vpc:*:get*", "vpc:*:list*", "vpc:ports:create", "vpc:ports:update", "vpc:ports:delete", "vpc:publicIps:update", "FunctionGraph:function:listVersion", "FunctionGraph:function:list", "FunctionGraph:function:getConfig", "ecs:servers:list", "lts:groups:list", "lts:logs:list", "lts:topics:list" ], "Effect": "Allow" } ] }
  • 其他性能分析工具 对于GPU和NPU性能比对、NPU多次训练之间性能比对的场景,昇腾提供了性能比对工具compare_tools,通过对训练耗时和内存占用的比对分析,定位到具体劣化的算子,帮助用户提升性能调优的效率。工具将训练耗时拆分为计算、通信、调度三大维度,并针对计算和通信分别进行算子级别的比对;将训练占用的总内存,拆分成算子级别的内存占用进行比对。 对于集群训练场景,昇腾提供了集群分析工具cluster_analysis,当前主要对基于通信域的迭代内耗时分析、通信时间分析以及通信矩阵分析为主,从而定位慢卡、慢节点以及慢链路问题。 父主题: PyTorch迁移性能调优
  • demo工程中的接口介绍 Demo工程中的接口如图2所示。 图2 Demo工程中的接口 /login接口 本Demo应用引入了thymeleaf,在配置文件中配置thymeleaf基本参数后,该接口返回为登录页的静态资源login.html,即登录页的界面。 图3 配置thymeleaf /is/login接口 该接口为查询当前访问的用户是否登录,如果登录,则返回当前登录的用户信息,否则返回消息为空。与OrgID的登录流程在本Demo中进行,当其他微服务需要判断当前用户登录状态时,内部调用此接口来获取当前登录的用户信息。 /index接口 DemoOrgidLogin登录成功后的访问地址首页,同/login接口,返回为登录页的静态资源,即index.html。 /oauth2/toLogin接口 该接口的接口地址为OrgID侧配置的回调地址,即上述Oauth2.0登录流程中的:回调应用,提供授权码code。 当用户输入账号密码登录后,OrgID会携带授权码code回调此接口,该接口需要依次完成Oauth2.0登录流程中的1~3步,最终拿到用户信息后,根据用户信息生成cookie,建立demo应用与用户浏览器的会话。 /app/logout接口 该接口为demo应用的退出接口,当用户需要退出应用时,需完成以下两件事: 需要清除自身会话,完成自身应用退出逻辑。 重定向到OrgID的退出页完成OrgID侧的退出逻辑。 /callback/logout接口 该接口为OrgID的回调接口,当用户从OrgID侧发起退出登录时,会通知到应用侧。此时会回调该接口,不同于/app/logout退出接口,该接口只需清理demo应用自身会话,完成自身退出登录。
  • 操作步骤 申请注册Huawei ID账号(已有华为ID账号跳过此步)。 注册链接:用户登录—华为云 (huaweicloud.com),打开后单击“注册”,填写完整信息。 图1 注册HuaweiID账号 访问OrgID服务,创建OrgID组织。 单击“创建组织”,填写组织信息。 单击“进入控制台”,进入控制台。 在OrgID管理中心创建自身对接Demo应用信息。 进入控制台单击刚创建好的组织即可进入业务侧管理中心,或直接访问管理中心。 选择“应用管理”,单击右上角的“添加自建应用”。 图2 添加自建应用 填写应用信息,上传应用图标,选择Oauth协议。 图3 添加自建应用 配置Demo应用信息。 表1 应用配置参数说明 参数 说明 首页URL Oauth登录交互流程的回调地址。 管理员登录URL 如果Demo应用区分管理员角色,且登录后为管理后台,可自行配置。 退出地址 OrgID退出登录时,通知应用的回调接口。 Token有效期 OrgID侧会话最长时间,默认两小时。 图4 应用参数配置 授权登录用户。 在应用管理页面选择“授权管理”,单击“授权设置”。 图5 授权设置 自行选择授权范围。 图6 选择授权范围 查看创建好的Demo应用配置秘钥。 在应用管理页面,选择“通用配置”,复制接口认证凭证。 接口认证凭证为OrgID侧生成的应用秘钥,请开发者妥善保管。 图7 查看应用秘钥 修改Demo工程的应用配置信息。 将application.yml.tmpl中的clientSecret配置为创建好的应用凭证信息,同时将login.html中的按钮登录链接改为已创建好的应用的登录链接,链接地址如图8所示。 图8 查看应用的登录链接 修改完成后,启动工程,访问首页登录地址。 通过“ 域名 +端口号+/login”访问首页地址,单击“登录”跳转OrgID登录页,输入账号后,可成功跳转登录后的首页地址。
  • global与specs的协同关系 global文件夹:放置被所有规格目录所复用的配置文件。 global文件夹里面的微服务都可以被规格文件夹specs中的代码复用(可根据meta.yaml指定复用哪些微服务,取决于你在相应环境的部署规划)。 global文件夹的作用类似于Java中的父类,spec类似于继承了global的子类,实际部署时还是使用的specs中的文件,但specs中的文件可以继承和复用global文件。 meta.yaml:描述变更的组件与过程。 {microservice}:描述要变更的微服务。 resources.yaml:微服务变更的主体文件,其他所有的values.yaml、config文件夹中的yaml等文件都围绕此文件展开。文件名必须为resources.yaml。 其他文件:为变量配置文件,其定义的内容都会被resources.yaml引用,文件名称可自定义。 spec文件夹:同一个服务在不同用途环境下所需配置文件(基础设施)。这个文件目录是必须的。 specs是在环境上部署服务时,最终使用的配置文件,当部署服务时,第一关注点和入口就是specs。 specs目录下的规格文件夹,命名采用站点级Cloud Map的名称(cn_product_cbu、eu_product_cbu)。可以在环境管理界面查看可选的站点级Cloud Map名称列表。 当某个规格被选用于部署时,会先将该规格目录下所有文件与global目录进行合并,得到该规格目录最终的所有配置文件,再进行部署动作。
  • 目录结构介绍 表1 IaC Spec包结构说明 位置 类型 个数 描述 iacspec_{service}_{version}.zip 文件 1 IaC压缩包。 └── package.json 文件 1 包描述文件,相关说明请参见包描述文件介绍。 └── global/ 文件夹 1 全局默认的IaC描述,包含完整文件结构,放置被所有规格目录所复用的配置文件。 │ └── meta.yaml 文件 1 变更策略描述,相关说明请参见在IaC代码中定义流水线。 │ └── environment/ 文件夹 1 定义component1,公共资源。 │ └── resources.yaml 文件 1 公共资源列表,相关说明请参见在IaC代码中声明资源。 │ └── values.yaml 文件 1 公共资源参数值,在resources.yaml中通过$ref的方式来引用。 │ └── {microservice}/ 文件夹 0-N 定义component2,微服务资源。 │ └── resources.yaml 文件 1 微服务资源列表,相关说明请参见在IaC代码中声明资源。 │ └── values.yaml 文件 1 微服务资源参数值,在resources.yaml中通过$ref的方式来引用。 │ └── configs/ 文件夹 1 微服务配置目录。 │ └── config_schema.yaml 文件 1 声明微服务的业务配置项属性,敏感业务配置项需要声明,非敏感配置项可以不声明。在resources.yaml中通过$ref的方式来引用。 │ └── {cluster}_config_records.yaml 文件 0-N 微服务的业务配置项,在resources.yaml中通过$ref的方式来引用。 └── specs/ 文件夹 1 环境特定的IaC描述,结构与global相同,但仅包含与global有差异的文件。 │ └── cn_product_cbu/ 文件夹 1 中国区生产环境,命名采用站点级Cloud Map的名称,可以在环境管理界面查看可选的站点级Cloud Map名称列表。 │ └── environment/ 文件夹 0-1 环境公共资源。 │ └── values.yaml 文件 0-1 公共资源参数值。 │ └── {microservice}/ 文件夹 0-N 微服务资源。 │ └── values.yaml 文件 0-1 微服务资源参数值。 │ └── configs/ 文件夹 0-1 微服务配置目录。 │ └── {cluster}_config_records.yaml 文件 0-N 微服务的业务配置项。 │ └── aaa_product_cbu/ 文件夹 1 亚非拉生产环境。 │ └── eu_product_cbu/ 文件夹 1 欧洲生产环境。
  • 开发者使用demo应用配置详细说明 spring: application: name: DemoOrgidLogin # 应用名称,用户可自行决定自身应用名 thymeleaf: # thymeleaf默认配置 prefix: classpath:/dist encoding: UTF-8 suffix: .html mode: HTML5 cache: false servlet: content-type: text/html redis: # Redis连接信息,该信息开发者需配置自己的Redis连接信息 host: {{spring.redis.host}} # Redis连接信息 port: {{spring.redis.port}} # Redis端口号 password: {{spring.redis.password}} # Redis连接密码 web: resources: add-mappings: false static-locations: - classpath:/dist/ server: port: 8083 # 服务端口号,开发者可根据需求配置自身服务端口号 org: url: {{org.url}} # orgid访问域名,为OrgID固定域名不可更改,用于访问OrgID接口 web-url: {{org.web-url}} # orgid访问域名,为OrgID固定域名不可更改,用于访问OrgID接口 app: cookie-domain: {{org.app.cookie-domain}} # 为demo应用与用户建立的会话的cookie域,需配置为开发者自身应用域名或ip jwt-key: {{org.app.jwt-key}} # jwt加密秘钥,用于创建和解析jwt串。该值开发者可自行配置,妥善保管长度需为4的倍数 ent-point-url: {{org.app.ent-point-url}} # demoApp自身应用的域名或ip,开发者自行配置 protocol-login: oauth: clientId: {{org.app.protocol-login.oauth.clientId}} # Oauth协议在OrgID侧生成的应用凭证,开发者需自行配置 clientSecret: {{org.app.protocol-login.oauth.clientSecret}} # Oauth协议在OrgID侧生成的应用凭证秘钥,开发者需自行配置 demo: login: url: {{demo.login.url}} # demo应用自身登录url,用于拦截未登录后,跳转重定向的登录地址,开发者需自行配置 nuwa: # Cloud Map配置信息 security: config: sensitiveWords: spring.redis.password,org.app.protocol-login.oauth.clientSecret,org.app.jwt-key cloudmap: read: cloudmap clusterName: {{nuwa.cloudmap.clusterName}} provider: cluster: {{nuwa.cloudmap.provider.cluster}} serverAddr: {{nuwa.cloudmap.serverAddr}} version: {{nuwa.cloudmap.version}} namespaceName: {{nuwa.cloudmap.namespaceName}} logging: config: /opt/huawei/app/service/config/logback-spring.xml # logback日志配置路径 父主题: 集成OrgID登录功能
  • 指定分组和资源标签 表16 指定分组和资源标签 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 resourceTag type = object ({group = stringfeatures = string}) 可选 无 group:指定集群部署的分组。 features:指定集群部署的标签信息。 此处配置的信息要再Runtime页面提前预置好。 resourceTag: group: "common" features: "dev"
  • 滚动升级策略 表12 滚动升级策略 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 rollingUpdateStrategy type = object({ maxSurge = string maxUnavailable = string }) 可选 maxSurge : "25%" maxUnavailable: 0 滚动升级策略配置 maxSurge:滚动升级时最多可以多启动多少个pod。 maxUnavailable:滚动升级时最大可以删除多少个pod。 整数:最小值为0 百分比:0% ~ 100% 说明: maxSurge和maxUnavailable不能同时为0 maxUnavailable不能设置为100或者100%,避免升级时集群没有可用的pod。 rollingUpdateStrategy: maxSurge = "50%" maxUnavailable = "25%"
  • 优雅下线 表13 优雅下线 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 preStopConfig type = object({ execCommand = list }) 必选 [] 优雅退出处理 - preStopConfig: execCommand: ["/bin/bash", "-c", "sleep 20"] terminationGracePeriodSeconds int 可选 30 优雅退出宽限时间,此时间为整个POD的最大退出时间。 - terminationGracePeriodSeconds: 30
  • 水平自动伸缩(HPA) 如果业务不需要使用hpa,请不要配置hpa相关参数。hpa开关配置关闭,也会创建hpa资源,只是不会生效扩缩容。 表15 水平自动伸缩(HPA) 参数 说明 是否必填 备注 hpa_scale_disabled 是否禁用hpa,false表示不禁用;true表示禁用。 是 取值为false是开启hpa。 polling_interval 负载检测周期,单位秒。 否 - origin_instances 初始副本数,不配置则使用min_instances值。 否 - min_instances 最小副本数 是 不配置默认为1。 max_instances 最大副本数 是 不配置默认为1。 hpa_scale_triggers 扩缩容指标配置,目前仅支持cpu/memory。 是 仅统计主容器资源。 hpa_scale_up_rules 扩容规则,定义稳定时间窗,减少扩容毛刺。 否 - hpa_scale_down_rules 缩容规则,定义稳定时间窗,减少缩容毛刺。 否 - hpa_scale_up_policies 扩容策略,定义扩容步长。 否 - hpa_scale_down_policies 缩容策略,定义缩容步长。 否 - 示例: 在resources.yaml中添加hpa参数如下: hpa: #弹性伸缩配置 $ref: 'config/hpa.yaml#/recommend' 在config目录,增加一个hpa.yaml文件,存放hpa的相关配置项。 recommend: disabled: true #true表示关闭hpa,false表示开启hpa pollingInterval: 5 #负载检测周期,单位秒 minReplicas: 2 #最小副本数 maxReplicas: 4 #最大副本数 triggers: #业务根据时间情况选择弹性伸缩策略 -type: CPU #业务容器的CPU利用率大于40%则触发扩容条件 metadata: averageUtilization: 40% -type: Memory #业务容器的内存利用率大于60%则触发扩容条件 metadata: averageUtilization: 60%
  • 灰度策略 表14 灰度策略 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 grayStage type = object({grayInstances = number grayProcess= stringgrayStatus = number }) 可选 null 灰度升级策略配置。 grayInstances:灰度升级的实例数比例,范围为1~100。 grayStatus:灰度实例对接SLB时的状态,1:生产,2:灰度。 grayProcess:灰度状态,只能填"INGRAY"和"FINISHED"。 - grayStage: grayInstances: 50 grayProcess: "INGRAY" grayStatus: 2 示例: - name: WiseCloudFGCEventBuilderService type: WiseCloud::MicroService::NuwaContainer properties: grayStage: grayInstances: 50 grayProcess: "INGRAY" grayStatus: 2
  • 业务配置 表11 业务配置 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 configs object(private = object( name = string prefix = string version = string schema = object records = object) public = object( name = string prefix = string)) 否 {} 配置项的根字段,包含两个属性,分别是private和public,分别为业务配置项和公共配置项,其下各个字段的描述如下所示。 - 见下文样例 prefix string 否 "" 配置项的归属路径 仅限于publicConfig /public/cloudeye/wiseEyeConfigService schema object(type = string properties = object( key1 = object( type = string description = string format = string))) 否 {} 配置项属性,properties属性为key-object格式,key是配置名称 ,object是配置项各项描述,其中format指配置项类型,默认为notype,如果是敏感配置项为sensitive。 说明: 如果是非敏感配置项,可以不在schema中声明,以减少维护工作量。 仅限于privateConfig 见下文样例 records object(key1 = string key2 = string) 否 {} 描述配置,key-value格式,key为配置名称 ,value为配置值。 value仅支持字符串类型 如果是数字、布尔值、对象和数组,需要加单引号,例:'10'、'true'、'{"test": 1}'、'[1,2]'。 仅限于privateConfig records: test: '{"a":"a","b":"b"}' timeout: '10' enableSa: 'true' name string 否 "" 配置项名称,对应NuwaRuntime的Container[0].configTag,对应PublicConfig和PrivateConfig的name。 说明: 配合动态配置生效,需要nuwa基础镜像版本要保持在3.0.11版本以上,否则报错。 publicConfig/privateConfig均有 限制:8位以内的小写字母和数字 见下文样例 version string 否 "" 配置版本,对应NuwaRuntime的Container[0].configVeersion,对应PrivateConfig的version。 说明: 配合动态配置生效,需要nuwa基础镜像版本要保持在3.0.11版本以上,否则报错。 仅限于privateConfig 见下文样例 示例: # resources.yaml - name: WiseCloudFGCEventBuilderService_cluster1 type: WiseCloud::MicroService::NuwaContainer properties: configs: $ref: 'config/business_config.yaml#' # business_config.yaml public: prefix: /com.huawei.wiseeye name: public5 private: version: 1.0.0 #(配合动态配置生效,需要nuwa基础镜像版本要保持在3.0.11版本以上,否则报错) name: fgcva #(配合动态配置生效,需要nuwa基础镜像版本要保持在3.0.11版本以上,否则报错) schema: type: object properties: AIOPSCONFIG_AIOPSSERVER: # 默认为format: notype,如果非敏感项,可以不填 format: notype # 默认为notype,如果非敏感项,可以不填 AIOPSCONFIG_AIOPSTOKENURI: # 敏感项必须填 format: sensitive # 敏感项必须填 records: # 必填 AIOPSCONFIG_AIOPSSERVER: https://XX.XX.XX.XX:XXXX/ test: '{"a":"a","b":"b"}' # 仅支持字符串类型,[]、{}的值,yaml会识别为对象和数组,必须加单引号 timeout: '10' # 仅支持字符串类型,数字和布尔值也要加引号 enableSa: 'true'
  • SLB配置(可选) 表8 SLB配置 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 port int32 必选 null 微服务在SLB上暴露的端口 - 8080 weight int32 必选 null 微服务在SLB上负载的权重 - 20 timeout int32 必选 null 微服务调用转发的超时时间 - 20 maxFails int32 必选 null 微服务调用的失败次数 - 3 targetGroup object{ name, loadBalancer } 必选 "" 微服务注册到SLB上的后端服务器组名 用于创建RouteRule,其中的name为必选,对应NuwaRuntime的backendClusterName,其它为可选。 在routes配置的情况下,loadBalancer也属于必选,不配置routes的话,loadBalancer则是可选。 loadBalancer当前仅支持配置roundRobin(加权轮询)且不支持修改为其它策略,如需修改可登录SLB管理台修改。 name: chaosmonekey_portal_static loadBalancer: strategy: roundRobin listenerGroupName string 必选 "" 微服务前端关联的SLB Listenser Group实例IaC名称 对应NuwaRuntime中的slbServiceName,长度为[1, 64] SLB下需要存在这个监听,为空时不会创建RouteRule。 chaos_slb_listener_lhq routes array[ location: string] 可选 [] 微服务的路由规则 不推荐使用,请直接使用slb的iac3.0创建。 /fgc/v1 示例: - name: WiseCloudFGCEventBuilderService_cluster1 type: WiseCloud::MicroService::NuwaContainer properties: bindSlb: - port: 8080 grayStatus: 1 weight: 20 maxFails: 3 timeout: 20 listenerGroupName: chaos_slb_listener_lhq targetGroup: name: chaosmonekey_portal_static loadBalancer: strategy: roundRobin
  • 证书配置 表9 证书配置 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 certConfigs type = list(object({ name = string tag = string })) 可选 [] 证书配置 name:证书名称 tag:证书tag # 业务证书配置 certConfigs: name: "server" # 证书名称 tag: "default" # 证书tag
  • daemonSet 表10 daemonSet 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 daemonSet type = list(object) 可选 [] 目前仅支持AIOps DaemonSet和BI DaemonSet,挂载hostpath提供存储持久化到node的能力。 name:AIOps or BI type:DaemonSet的类型,详见代码示例 enable:true|false,是否启用 logPath:推送日志路径(非文件名),选填。 AIOps固定为'/opt/huawei/logs' limitSize: 日志存储限制,选填,默认值为100G。仅AIOps生效。 groups:日志配置组名,必填。当前BI场景支持1个或多个分组,AIOps场景有且只能填写一个分组并且提前在AIOps管理面创建好。 详见代码示例 示例: daemonSet: - name: AIOps type: WiseCloud::Agent::AIOps enable: true logPath: '/opt/huawei/logs' limitSize: 100G groups: ["logConfigGroupName"] - name: BI type: WiseCloud::Agent::BI enable: false logPath: '/opt/huawei/logs/bi' groups: ["ODS_V001_DM_service1", "ODS_V001_DM_service2"] paramJson: "{\"dataGroups\":[{\"dataGroup\":\"ODSName_BatchFileExampleDS\",\"agentType\":\"batch\",\"batchConfig\":{\"datapushInputs\":{\"jobType\":\"file\",\"dayPeriod\":{\"startTime\":\"10:00:00\",\"offset\":\"1\"},\"file\":{\"sources\":[{\"pattern\":\"/opt/huawei/hcy/*.txt\",\"filename\":\"test.txt\"}]}},\"datapushOutput\":{\"postfix\":\"txt\",\"permitEmptyFile\":true},\"advanced\":{\"extendFields\":{\"datapushInput.isUtc\":false,\"datapushInput.file.sourcePolicy\":3,\"datapushInput.file.countThreshold\":0,\"datapushInput.file.sizeThreshold\":0,\"sendThreadCount\":3,\"datapushInput.file.fileRetryTimes\":3,\"datapushInput.file.fileWaitTimes\":3}}}},{\"dataGroup\":\"ODSName_StreamFileExampleDS\",\"agentType\":\"stream\",\"streamConfig\":{\"filebeatInputs\":{\"type\":\"log\",\"enabled\":true,\"paths\":[\"/opt/huawei/logs/*.log\",\"/opt/huawei/logs/*.txt\"]},\"advanced\":{\"extendFields\":{\"filebeatInputs.harvester_limit\":5,\"queue.mem.events\":4096,\"queue.mem.flush.min_events\":2048}}}}]}" # 配置json格式化
  • 容器健康检查 表5 容器健康检查 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 readinessProbe: exec: command: list(string) 必须配置其中一种,且只能配置一种 [] 命令行检查方式 命令行检查方式\http请求检查方式\tcp端口检查三种方式只能选择一种。 readinessProbe: exec: command: ["echo", "hello"] readinessProbe: httpGet: object - http请求检查方式 命令行检查方式\http请求检查方式\tcp端口检查三种方式只能选择一种。 readinessProbe: httpGet: path: /health port: 8080 scheme: HTTP readinessProbe: tcpSocket: port: int - tcp端口检查 命令行检查方式\http请求检查方式\tcp端口检查三种方式只能选择一种。 readinessProbe: tcpSocket: port:8080 livenessProbe: exec: command: list(string) 必须配置其中一种,且只能配置一种 [] 命令行检查方式 命令行检查方式\http请求检查方式\tcp端口检查三种方式只能选择一种。 livenessProbe: exec: command: ["echo", "hello"] livenessProbe: httpGet: object - http请求检查方式 命令行检查方式\http请求检查方式\tcp端口检查三种方式只能选择一种。 livenessProbe: httpGet: path: /health.html port: 8080 scheme: HTTP livenessProbe: tcpSocket: port: int - tcp端口检查 命令行检查方式\http请求检查方式\tcp端口检查三种方式只能选择一种。 livenessProbe: tcpSocket: port:8080 initialDelaySeconds int 可选 10s 表示容器启动多少秒之后开始探测,单位秒。默认值为10s。 不小于5 readinessProbe: exec: command: ["echo", "hello"] initialDelaySeconds: 10 periodSeconds: 20 successThreshold :1 failureThreshold: 3 timeoutSeconds:5 periodSeconds int 可选 20s 间隔周期,表示每多少秒探测一次容器,单位秒,默认值为20s。 不大于180 successThreshold int 可选 1 表示连续检测多少次成功后则记作成功。默认值为1。 不大于10,liveness探针只能为1。 failureThreshold int 可选 3 表示连续检测多少次失败当做是失败处理,并会重启容器。默认值为3。 不大于10 示例: livenessProbe: httpGet: path: /health port: 8080 scheme: HTTP initialDelaySeconds: 20 timeoutSeconds: 3 periodSeconds: 10 successThreshold: 1 failureThreshold: 3 readinessProbe: httpGet: path: /health port: 8080 scheme: HTTP initialDelaySeconds: 20 timeoutSeconds: 3 periodSeconds: 10 successThreshold: 1 failureThreshold: 10 - name: APIGateway type: WiseCloud::Agent::APIGateway version: x.x.x.x flavor: 1C2G param: $ref: 'config/sidecar_apigw_param.json
  • sidecar配置 表6 sidecar配置 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 sidecars type = list(object) - [] 由于POD销毁或被驱逐时,日志文件会丢失,因此AIOps Log Sidecar为必选参数,需要业务配置此sidecar及时将日志进行采集。 name:sidecar的名称,比如AIOpsLog。 type:sidecar的类型,详见代码示例。 version:sidecar的版本。 cpu:sidecar容器的 cpu,配置举例:0.5 或者 2 或者 500m,配置为null或者"“时,代表使用系统默认值。 memory:sidecar的内存,单位为M Mi G Gi,配置举例:100M 0.5G 2G,配置为null或者”"时,代表使用系统默认值。注意M和Mi的区别,M是1000的倍比,Mi是1024的倍比。 param:sidecar的配置参数,不同sidecar的配置参数不一样,具体可以参考各个sidecar的配置方式。 详见代码示例,按照业务需求配置所需的sidecar。 示例: sidecars: - name: AIOpsLog type: WiseCloud::Agent::AIOpsLog version: 3.3.0.100 flavor: 0.4C500M param: $ref: 'config/sidecar_aiops_param.json' - name: RASP type: WiseCloud::Agent::RASP version: 2.2.0.102.SP5 flavor: 0.3C500M param: '' - name: BIFlume type: WiseCloud::Agent::BIFlume version: x.x.x.x flavor: 0.2C500M param: $ref: 'config/sidecar_biflume_param.json' - name: APIGateway type: WiseCloud::Agent::APIGateway version: x.x.x.x flavor: 1C2G param: $ref: 'config/sidecar_apigw_param.json
  • 网络配置 表7 网络配置 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 isolatedDomain string 可选 - 隔离域 只有CCE_TURBO集群支持,老CCE集群不支持。如果不配置,则使用ENS隔离域规划中对应的隔离域,见上面隔离域说明链接中的说明。 - slbEnable bool 可选 FALSE 是否启用slb “否”仅针对第一次添加SLB信息时有效 说明: 如果之前有部署过,并且配置为“是”,此时再修改为“否”是无效的。 - 示例: - name: WiseCloudFGCEventBuilderService_cluster1 type: WiseCloud::MicroService::NuwaContainer properties: network: slbEnable: true isolatedDomain: $ {创建的隔离域名称}
  • 挂载信息 表2 挂载信息 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 name string 必选 - log_volume:日志卷 data_volume:data卷 sfs_volume:sfs卷 说明: sfs的卷命名并非固定,此处的名称主要还是供container的volumeMounts引用。 log_volume 每个POD的日志卷大小,log_volume_type不配置或者配置为local时,代表使用集群节点的本地盘,有如下注意事项:容器场景下对/opt/huawei/logs的日志卷大小限制为100G,当日志磁盘写满之后,k8s会驱逐该POD并重新拉起一个新的POD,在此过程中,会影响业务。请在log配置文件中配置绕接策略对总的日志大小不超过此限制,由于NUWA及中间件也会记录一部分日志,建议业务配置保存的log总大小不要超过90G。另外业务需要将所有的日志配置到AIOps sidecar日志服务中,以通过AIOps日志服务进行日志采集,否则POD销毁时会造成日志丢失。 如果log_volume_type配置为evs,则根据实际的大小进行配置。 data_volume data卷大小,默认挂载了/opt/huawei/data的路径,最大支持配置为5Gi。data_volume_type配置为evs则不受此限制。 volumes: - name: log_volume size: 12Gi type: local - name: data_volume size: 2Gi type: local size string 必选 - 定义存储空间 type string 可选 默认是local,代表使用集群节点本地存储。 evs sfs 参见右侧样例 sfs: volumes: - name: sfs_volume id: 11a701c9-529f-4992-9291-bc47bbf5b4c5 # 如果是已有的存储,该值代表存储的资源id type: sfs shareLocation: xxx # 共享路径 mountOptions: ["vers=3","hard","nolock"] local 示例: - name: WiseCloudFGCEventBuilderService_cluster1 type: WiseCloud::MicroService::NuwaContainer properties: volumes: - name: log_volume size: 12Gi type: local - name: data_volume size: 2Gi type: local
  • 基础参数 表1 基础参数 参数名称 参数类型 是否必选 默认值 说明 参数规范 举例 name string 必选 - IaC3.0资源名 只能包括数字、字母、'-'、'_'、'.',必须以字母开头,字母或数字结尾。长度2-64。 说明: 如果没有配置clusterName,则资源名会被当做微服务集群名,参数规范则会以微服务集群名的为准。 WiseCloudFGCEventBuilderService_cluster1 type string 必选 - BaaS服务类型,operator要求必填,固定为WiseCloud::MicroService::NuwaContainer 固定为WiseCloud::MicroService::NuwaContainer WiseCloud::MicroService::NuwaContainer microserviceName string 必选 - 微服务名称 微服务名称 WiseCloudFGCEventBuilderService clusterName string 非必选 (建议填写) 默认与name值相同 微服务集群名 只能包括数字、字母、'-'、'_'、'.',必须以字母开头,字母或数字结尾。长度2-56。 说明: 不填与name值相同,由于两字段限制不同,超过限制会报错。 cluster1 replicas int 必选 - Pod副本数 整数类型 说明: 多AZ要配置AZ的倍数,如果部署了双AZ,那么此处要配置为2的倍数。 如果使用了evs盘或者elb,为保证滚动升级每个AZ至少保留一个节点,那么单AZ至少要配置为2,双AZ至少配置为4。 1 pdbMaxUnavailable string 非必选 - Pod干扰预算 整数百分比,整数范围为[1, 50] - terminationGracePeriodSeconds integer 非必选 - 优雅下线宽限期 1-65535 - 示例: - name: WiseCloudFGCEventBuilderService_cluster1 type: WiseCloud::MicroService::NuwaContainer properties: microserviceName: WiseEyeChaosMonkeyExecutor clusterName: cluster1 replicas: 5
  • 配置监听 表4 SLB监听配置config字段说明 参数名 是否必选 说明 proxyReadTimeout 否 响应超时时间,不超过10位的数字。 proxySendTimeout 否 转发超时时间,不超过10位的数字。 keepaliveSwitch 否 启用长连接转发,是否keepalive,取值为on或off。 hostSwitch 否 是否透传请求头,取值为on或off,不填或者其他字符均为off。 xForwardedForSwitch 否 是否追加XFF,取值为on或off。 accessLogSwitch 否 是否开启access日志,取值为on或off,不填或者其他字符均为off。 proxyNextUpstreamSwitch 否 是否在异常时尝试下一台,取值为on或off,不填或者其他字符均为off。 proxyNextUpstreamCondition 否 尝试下一台场景,"403"、"404"、"429"、"500"、"502"、"503"、"504"、"error"、"timeout"、"invalid_header"。 clientConnectionFreeTime 否 客户端连接空闲时间,长度不超过10位的正整数。 proxyBuffersSwitch 否 开启响应缓存,取值为on或off,不填或者其他字符均为off。 proxyBuffersSize 否 响应缓存大小,由数字+空格+k/m组成,默认为8 k。 expiresSwitch 否 高级配置中Expires开关,取值为on或off,不填或者其他字符均为off。 expiresSize 否 设定页面缓存时间,不超过50位,不缓存或一直使用缓存。可以由字母、数字、空格、$、@、+、-、冒号、逗号组成。 indexPage 否 静态页面场景index页面设置,长度不超过255,非中文。 returnVal 否 固定返回响应码,长度不超过255,非中文。 allowMethod 否 允许的http方法,对于转发策略有效,对于监听仅为参考,在界面新增转发策略时会继承监听的此项配置,其余场景无效,"GET", "HEAD", "POST", "DELETE", "PUT", "OPTIONS", "PATCH", "MKCOL", "COPY", "MOVE", "PROPFIND", "PROPPATCH", "LOCK", "UNLOCK"。 command 否 nginx配置命令,非中文。 root 否 默认资源根目录,长度不超过500,非中文。 clientMaxBodySize 否 最大请求体大小,数字+空格+k/m组成。 clientBodyBufferSize 否 请求体buffer大小,数字+空格+k/m组成。 addHeaders 否 响应头 setVals 否 对应页面set proxySetHeaders 否 请求头 redirects 否 重定向 rewrites 否 重写 表5 addHeaders/setVals/proxySetHeaders字段说明 参数名 是否必选 说明 key 否 键,非中文 value 否 值,非中文 表6 redirects/rewrites字段字段活命 参数名 是否必选 说明 source 否 匹配规则,非中文。 target 否 重写/重定向目标,非中文。 option 否 重写标记,取值为:"last"、"break"、"permanent"。 slb_listener_config/listener_monitor_config.yaml hostSwitch: 'on' #是否透传请求头,on/off,不填或者其他字符均为off root: #默认资源根目录,不超过500非中文 clientConnectionFreeTime: 100 #客户端连接空闲时间,不超过10位的正整数 proxyReadTimeout: 70 #响应超时时间,不超过10位的数字 keepaliveSwitch: 'on' #启用长连接转发是否keepalive,on/off proxyBuffersSize: '2 m' #响应缓存大小,数字+空格+k/m组成,默认为8 k expiresSwitch: 'on' #高级配置中Expires开关,on/off,不填或者其他字符均为off proxyBuffersSwitch: 'on' #开启响应缓存,on/off,不填或者其他字符均为off accessLogSwitch: 'on' #是否开启access日志,on/off,不填或者其他字符均为off returnVal: 200 #固定返回响应码,不超过255非中文 allowMethod: POST,GET,HEAD,PUT,DELETE,OPTIONS #允许的http方法 nuwaTraceSwitch: 'off' command: #nginx配置命令,非中文 clientMaxBodySize: #最大请求体大小,数字+空格+k/m组成 clientBodyBufferSize: 10 #请求体buffer大小,数字+空格+k/m组成 expiresSize: 10 #设定页面缓存时间 indexPage: #静态页面场景index页面设置,不超过255非中文 proxyNextUpstreamCondition: error,timeout #尝试下一台场景 proxySendTimeout: 80 #转发超时时间,不超过10位的数字 xForwardedForSwitch: 'on' #是否追加XFF,on/off proxyNextUpstreamSwitch: 'on' #是否在异常时尝试下一台,on/off,不填或者其他字符均为off addHeaders: #响应头 - value: v1 key: k1 - value: v2 key: k2 rewrites: #重写 - source: s7 option: break target: t1 setVals: #对应页面set - value: v3 key: $k3 proxySetHeaders: #请求头 - value: v5 key: k5 redirects: #重定向 - source: s1 target: t1
  • Q2.3 1 2 3 4 5 6 7 8 9 SELECT SUM(LO_REVENUE), div(LO_ORDERDATE,10000) AS YEAR, P_BRAND FROM lineorder_flat WHERE P_BRAND = 'MFGR#2239' AND S_REGION = 'EUROPE' GROUP BY YEAR, P_BRAND ORDER BY YEAR, P_BRAND;
  • Q2.1 1 2 3 4 5 6 7 SELECT SUM(LO_REVENUE), div(LO_ORDERDATE,10000) AS YEAR, P_BRAND FROM lineorder_flat WHERE P_CATEGORY = 'MFGR#12' AND S_REGION = 'AMERICA' GROUP BY YEAR, P_BRAND ORDER BY YEAR, P_BRAND;
  • Q4.1 1 2 3 4 5 6 7 8 9 10 SELECT div(LO_ORDERDATE,10000) AS YEAR, C_NATION, SUM(LO_REVENUE - LO_SUPPLYCOST) AS profit FROM lineorder_flat WHERE C_REGION = 'AMERICA' AND S_REGION = 'AMERICA' AND P_MFGR IN ('MFGR#1', 'MFGR#2') GROUP BY YEAR, C_NATION ORDER BY YEAR ASC, C_NATION ASC;
  • 导入SSB数据 执行以下命令导入数据。 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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 INSERT INTO customer SELECT * FROM customer_load; INSERT INTO supplier SELECT * FROM supplier_load; INSERT INTO part SELECT * FROM part_load; INSERT INTO lineorder SELECT * FROM lineorder_load; INSERT INTO lineorder_flat SELECT l.LO_ORDERKEY AS LO_ORDERKEY, l.LO_LINENUMBER AS LO_LINENUMBER, l.LO_CUSTKEY AS LO_CUSTKEY, l.LO_PARTKEY AS LO_PARTKEY, l.LO_SUPPKEY AS LO_SUPPKEY, l.LO_ORDERDATE AS LO_ORDERDATE, l.LO_ORDERPRIORITY AS LO_ORDERPRIORITY, l.LO_SHIPPRIORITY AS LO_SHIPPRIORITY, l.LO_QUANTITY AS LO_QUANTITY, l.LO_EXTENDEDPRICE AS LO_EXTENDEDPRICE, l.LO_ORDTOTALPRICE AS LO_ORDTOTALPRICE, l.LO_DISCOUNT AS LO_DISCOUNT, l.LO_REVENUE AS LO_REVENUE, l.LO_SUPPLYCOST AS LO_SUPPLYCOST, l.LO_TAX AS LO_TAX, l.LO_COMMITDATE AS LO_COMMITDATE, l.LO_SHIPMODE AS LO_SHIPMODE, c.C_NAME AS C_NAME, c.C_ADDRESS AS C_ADDRESS, c.C_CITY AS C_CITY, c.C_NATION AS C_NATION, c.C_REGION AS C_REGION, c.C_PHONE AS C_PHONE, c.C_MKTSEGMENT AS C_MKTSEGMENT, s.S_NAME AS S_NAME, s.S_ADDRESS AS S_ADDRESS, s.S_CITY AS S_CITY, s.S_NATION AS S_NATION, s.S_REGION AS S_REGION, s.S_PHONE AS S_PHONE, p.P_NAME AS P_NAME, p.P_MFGR AS P_MFGR, p.P_CATEGORY AS P_CATEGORY, p.P_BRAND AS P_BRAND, p.P_COLOR AS P_COLOR, p.P_TYPE AS P_TYPE, p.P_SIZE AS P_SIZE, p.P_CONTAINER AS P_CONTAINER FROM lineorder AS l INNER JOIN customer AS c ON c.C_CUSTKEY = l.LO_CUSTKEY INNER JOIN supplier AS s ON s.S_SUPPKEY = l.LO_SUPPKEY INNER JOIN part AS p ON p.P_PARTKEY = l.LO_PARTKEY;
  • 创建SSB数据集的GDS外表 连接DWS数据库后执行以下SQL语句。 以下每个外表的“gsfs://192.168.0.90:500x/xxx | gsfs://192.168.0.90:500x/xxx”中的IP地址和端口,请替换成安装和启动GDS中的对应的GDS的监听IP和端口。如启动两个GDS,则使用“|”区分。如果启动多个GDS,需要将所有GDS的监听IP和端口配置到外表中。 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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 DROP FOREIGN TABLE IF EXISTS customer_load; CREATE FOREIGN TABLE customer_load ( C_CUSTKEY BIGINT NOT NULL , C_NAME VARCHAR(25) NOT NULL , C_ADDRESS VARCHAR(40) NOT NULL , C_CITY VARCHAR(25) NOT NULL , C_NATION VARCHAR(25) NOT NULL , C_REGION VARCHAR(25) NOT NULL , C_PHONE VARCHAR(15) NOT NULL , C_MKTSEGMENT VARCHAR(10) NOT NULL) SERVER gsmpp_server OPTIONS(location 'gsfs://192.168.0.90:5004/customer.tbl*', format 'text', delimiter '|', encoding 'utf8', mode 'Normal' ); DROP FOREIGN TABLE IF EXISTS supplier_load; CREATE FOREIGN TABLE supplier_load ( S_SUPPKEY BIGINT NOT NULL , S_NAME VARCHAR(25) NOT NULL , S_ADDRESS VARCHAR(40) NOT NULL , S_CITY VARCHAR(25) NOT NULL , S_NATION VARCHAR(25) NOT NULL , S_REGION VARCHAR(25) NOT NULL , S_PHONE VARCHAR(15) NOT NULL) SERVER gsmpp_server OPTIONS(location 'gsfs://192.168.0.90:5004/supplier.tbl*', format 'text', delimiter '|', encoding 'utf8', mode 'Normal' ); DROP FOREIGN TABLE IF EXISTS part_load; CREATE FOREIGN TABLE part_load ( P_PARTKEY BIGINT NOT NULL , P_NAME VARCHAR(55) NOT NULL , P_MFGR VARCHAR(25) NOT NULL , P_CATEGORY VARCHAR(25) NOT NULL , P_BRAND VARCHAR(10) NOT NULL , P_COLOR VARCHAR(20) NOT NULL , P_TYPE VARCHAR(25) NOT NULL , P_SIZE BIGINT NOT NULL , P_CONTAINER VARCHAR(10) NOT NULL) SERVER gsmpp_server OPTIONS(location 'gsfs://192.168.0.90:5004/part.tbl*', format 'text', delimiter '|', encoding 'utf8', mode 'Normal' ); DROP FOREIGN TABLE IF EXISTS lineorder_load; CREATE FOREIGN TABLE lineorder_load ( LO_ORDERKEY BIGINT NOT NULL, LO_LINENUMBER BIGINT NOT NULL, LO_CUSTKEY BIGINT NOT NULL, LO_PARTKEY BIGINT NOT NULL, LO_SUPPKEY BIGINT NOT NULL, LO_ORDERDATE DATE NOT NULL, LO_ORDERPRIORITY VARCHAR(15) NOT NULL, LO_SHIPPRIORITY BIGINT NOT NULL, LO_QUANTITY BIGINT NOT NULL, LO_EXTENDEDPRICE BIGINT NOT NULL, LO_ORDTOTALPRICE BIGINT NOT NULL, LO_DISCOUNT BIGINT NOT NULL, LO_REVENUE BIGINT NOT NULL, LO_SUPPLYCOST BIGINT NOT NULL, LO_TAX BIGINT NOT NULL, LO_COMMITDATE DATE NOT NULL, LO_SHIPMODE VARCHAR(10) NOT NULL) SERVER gsmpp_server OPTIONS(location 'gsfs://192.168.0.90:5004/lineorder.tbl*', format 'text', delimiter '|', encoding 'utf8', mode 'Normal' );
  • 创建SSB目标表 连接DWS数据库后执行以下SQL语句。 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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 CREATE TABLE CUSTOMER ( C_CUSTKEY BIGINT NOT NULL, C_NAME VARCHAR(25) NOT NULL, C_ADDRESS VARCHAR(40) NOT NULL, C_CITY VARCHAR(25) NOT NULL, C_NATION VARCHAR(25) NOT NULL, C_REGION VARCHAR(25) NOT NULL, C_PHONE VARCHAR(15) NOT NULL, C_MKTSEGMENT VARCHAR(10) NOT NULL ) WITH (orientation=column, colversion=2.0,enable_hstore=true,enable_hstore_opt=true) DISTRIBUTE BY hash(C_CUSTKEY) ; CREATE TABLE SUPPLIER ( S_SUPPKEY BIGINT NOT NULL , S_NAME VARCHAR(25) NOT NULL , S_ADDRESS VARCHAR(40) NOT NULL , S_CITY VARCHAR(25) NOT NULL , S_NATION VARCHAR(25) NOT NULL , S_REGION VARCHAR(25) NOT NULL , S_PHONE VARCHAR(15) NOT NULL ) WITH (orientation=column, colversion=2.0,enable_hstore=true,enable_hstore_opt=true) DISTRIBUTE BY hash(S_SUPPKEY); CREATE TABLE PART ( P_PARTKEY BIGINT NOT NULL , P_NAME VARCHAR(55) NOT NULL , P_MFGR VARCHAR(25) NOT NULL , P_CATEGORY VARCHAR(25) NOT NULL , P_BRAND VARCHAR(10) NOT NULL , P_COLOR VARCHAR(20) NOT NULL , P_TYPE VARCHAR(25) NOT NULL , P_SIZE BIGINT NOT NULL , P_CONTAINER VARCHAR(10) NOT NULL ) WITH (orientation=column, colversion=2.0,enable_hstore=true,enable_hstore_opt=true) DISTRIBUTE BY hash(P_PARTKEY); CREATE TABLE lineorder ( LO_ORDERKEY BIGINT NOT NULL, LO_LINENUMBER BIGINT NOT NULL, LO_CUSTKEY BIGINT NOT NULL, LO_PARTKEY BIGINT NOT NULL, LO_SUPPKEY BIGINT NOT NULL, LO_ORDERDATE DATE NOT NULL, LO_ORDERPRIORITY VARCHAR(15) NOT NULL, LO_SHIPPRIORITY BIGINT NOT NULL, LO_QUANTITY BIGINT NOT NULL, LO_EXTENDEDPRICE BIGINT NOT NULL, LO_ORDTOTALPRICE BIGINT NOT NULL, LO_DISCOUNT BIGINT NOT NULL, LO_REVENUE BIGINT NOT NULL, LO_SUPPLYCOST BIGINT NOT NULL, LO_TAX BIGINT NOT NULL, LO_COMMITDATE DATE NOT NULL, LO_SHIPMODE VARCHAR(10) NOT NULL ) WITH (orientation=column, colversion=2.0,enable_hstore=true,enable_hstore_opt=true) DISTRIBUTE BY hash(LO_ORDERKEY) PARTITION BY RANGE(LO_ORDERDATE) ( PARTITION LO_ORDERDATE_1 VALUES LESS THAN('1992-04-01 00:00:00'), PARTITION LO_ORDERDATE_2 VALUES LESS THAN('1992-07-01 00:00:00'), PARTITION LO_ORDERDATE_3 VALUES LESS THAN('1992-10-01 00:00:00'), PARTITION LO_ORDERDATE_4 VALUES LESS THAN('1993-01-01 00:00:00'), PARTITION LO_ORDERDATE_5 VALUES LESS THAN('1993-04-01 00:00:00'), PARTITION LO_ORDERDATE_6 VALUES LESS THAN('1993-07-01 00:00:00'), PARTITION LO_ORDERDATE_7 VALUES LESS THAN('1993-10-01 00:00:00'), PARTITION LO_ORDERDATE_8 VALUES LESS THAN('1994-01-01 00:00:00'), PARTITION LO_ORDERDATE_9 VALUES LESS THAN('1994-04-01 00:00:00'), PARTITION LO_ORDERDATE_10 VALUES LESS THAN('1994-07-01 00:00:00'), PARTITION LO_ORDERDATE_11 VALUES LESS THAN('1994-10-01 00:00:00'), PARTITION LO_ORDERDATE_12 VALUES LESS THAN('1995-01-01 00:00:00'), PARTITION LO_ORDERDATE_13 VALUES LESS THAN('1995-04-01 00:00:00'), PARTITION LO_ORDERDATE_14 VALUES LESS THAN('1995-07-01 00:00:00'), PARTITION LO_ORDERDATE_15 VALUES LESS THAN('1995-10-01 00:00:00'), PARTITION LO_ORDERDATE_16 VALUES LESS THAN('1996-01-01 00:00:00'), PARTITION LO_ORDERDATE_17 VALUES LESS THAN('1996-04-01 00:00:00'), PARTITION LO_ORDERDATE_18 VALUES LESS THAN('1996-07-01 00:00:00'), PARTITION LO_ORDERDATE_19 VALUES LESS THAN('1996-10-01 00:00:00'), PARTITION LO_ORDERDATE_20 VALUES LESS THAN('1997-01-01 00:00:00'), PARTITION LO_ORDERDATE_21 VALUES LESS THAN('1997-04-01 00:00:00'), PARTITION LO_ORDERDATE_22 VALUES LESS THAN('1997-07-01 00:00:00'), PARTITION LO_ORDERDATE_23 VALUES LESS THAN('1997-10-01 00:00:00'), PARTITION LO_ORDERDATE_24 VALUES LESS THAN('1998-01-01 00:00:00'), PARTITION LO_ORDERDATE_25 VALUES LESS THAN('1998-04-01 00:00:00'), PARTITION LO_ORDERDATE_26 VALUES LESS THAN('1998-07-01 00:00:00'), PARTITION LO_ORDERDATE_27 VALUES LESS THAN('1998-10-01 00:00:00'), PARTITION LO_ORDERDATE_28 VALUES LESS THAN('1999-01-01 00:00:00') ); SET enable_hstoreopt_auto_bitmap=true; CREATE TABLE lineorder_flat ( LO_ORDERKEY BIGINT NOT NULL, LO_LINENUMBER BIGINT NOT NULL, LO_CUSTKEY BIGINT NOT NULL, LO_PARTKEY BIGINT NOT NULL, LO_SUPPKEY BIGINT NOT NULL, LO_ORDERDATE DATE NOT NULL, LO_ORDERPRIORITY VARCHAR(15) NOT NULL, LO_SHIPPRIORITY BIGINT NOT NULL, LO_QUANTITY BIGINT NOT NULL, LO_EXTENDEDPRICE BIGINT NOT NULL, LO_ORDTOTALPRICE BIGINT NOT NULL, LO_DISCOUNT BIGINT NOT NULL, LO_REVENUE BIGINT NOT NULL, LO_SUPPLYCOST BIGINT NOT NULL, LO_TAX BIGINT NOT NULL, LO_COMMITDATE DATE NOT NULL, LO_SHIPMODE VARCHAR(10) NOT NULL, C_NAME VARCHAR(25) NOT NULL , C_ADDRESS VARCHAR(40) NOT NULL , C_CITY VARCHAR(25) NOT NULL , C_NATION VARCHAR(25) NOT NULL , C_REGION VARCHAR(25) NOT NULL , C_PHONE VARCHAR(15) NOT NULL , C_MKTSEGMENT VARCHAR(10) NOT NULL , S_NAME VARCHAR(25) NOT NULL , S_ADDRESS VARCHAR(40) NOT NULL , S_CITY VARCHAR(25) NOT NULL , S_NATION VARCHAR(25) NOT NULL , S_REGION VARCHAR(25) NOT NULL , S_PHONE VARCHAR(15) NOT NULL , P_NAME VARCHAR(55) NOT NULL , P_MFGR VARCHAR(25) NOT NULL , P_CATEGORY VARCHAR(25) NOT NULL , P_BRAND VARCHAR(10) NOT NULL , P_COLOR VARCHAR(20) NOT NULL , P_TYPE VARCHAR(25) NOT NULL , P_SIZE BIGINT NOT NULL , P_CONTAINER VARCHAR(10) NOT NULL , Partial Cluster Key(s_region,s_nation,s_city) ) WITH (orientation=column, colversion=2.0,enable_hstore=true,enable_hstore_opt=true,secondary_part_column='p_mfgr', secondary_part_num=8) DISTRIBUTE BY hash(LO_ORDERKEY) PARTITION BY RANGE(LO_ORDERDATE) ( PARTITION LO_ORDERDATE_1 VALUES LESS THAN('1992-04-01 00:00:00'), PARTITION LO_ORDERDATE_2 VALUES LESS THAN('1992-07-01 00:00:00'), PARTITION LO_ORDERDATE_3 VALUES LESS THAN('1992-10-01 00:00:00'), PARTITION LO_ORDERDATE_4 VALUES LESS THAN('1993-01-01 00:00:00'), PARTITION LO_ORDERDATE_5 VALUES LESS THAN('1993-04-01 00:00:00'), PARTITION LO_ORDERDATE_6 VALUES LESS THAN('1993-07-01 00:00:00'), PARTITION LO_ORDERDATE_7 VALUES LESS THAN('1993-10-01 00:00:00'), PARTITION LO_ORDERDATE_8 VALUES LESS THAN('1994-01-01 00:00:00'), PARTITION LO_ORDERDATE_9 VALUES LESS THAN('1994-04-01 00:00:00'), PARTITION LO_ORDERDATE_10 VALUES LESS THAN('1994-07-01 00:00:00'), PARTITION LO_ORDERDATE_11 VALUES LESS THAN('1994-10-01 00:00:00'), PARTITION LO_ORDERDATE_12 VALUES LESS THAN('1995-01-01 00:00:00'), PARTITION LO_ORDERDATE_13 VALUES LESS THAN('1995-04-01 00:00:00'), PARTITION LO_ORDERDATE_14 VALUES LESS THAN('1995-07-01 00:00:00'), PARTITION LO_ORDERDATE_15 VALUES LESS THAN('1995-10-01 00:00:00'), PARTITION LO_ORDERDATE_16 VALUES LESS THAN('1996-01-01 00:00:00'), PARTITION LO_ORDERDATE_17 VALUES LESS THAN('1996-04-01 00:00:00'), PARTITION LO_ORDERDATE_18 VALUES LESS THAN('1996-07-01 00:00:00'), PARTITION LO_ORDERDATE_19 VALUES LESS THAN('1996-10-01 00:00:00'), PARTITION LO_ORDERDATE_20 VALUES LESS THAN('1997-01-01 00:00:00'), PARTITION LO_ORDERDATE_21 VALUES LESS THAN('1997-04-01 00:00:00'), PARTITION LO_ORDERDATE_22 VALUES LESS THAN('1997-07-01 00:00:00'), PARTITION LO_ORDERDATE_23 VALUES LESS THAN('1997-10-01 00:00:00'), PARTITION LO_ORDERDATE_24 VALUES LESS THAN('1998-01-01 00:00:00'), PARTITION LO_ORDERDATE_25 VALUES LESS THAN('1998-04-01 00:00:00'), PARTITION LO_ORDERDATE_26 VALUES LESS THAN('1998-07-01 00:00:00'), PARTITION LO_ORDERDATE_27 VALUES LESS THAN('1998-10-01 00:00:00'), PARTITION LO_ORDERDATE_28 VALUES LESS THAN('1999-01-01 00:00:00') ) ; SET enable_hstoreopt_auto_bitmap=false;
  • SSB数据生成 下载ssb工具包并编译。 git clone http://github.com/vadimtk/ssb-dbgen.git cd ssb-dbgen && make 生成数据。 文件生成路径最好符合安装和启动GDS中SSB所使用的路径,否则需要修改安装和启动GDS中GDS的启动路径。 ./dbgen -s 100 -T c ./dbgen -s 100 -T l ./dbgen -s 100 -T p ./dbgen -s 100 -T s ./dbgen -s 100 -T d 父主题: SSB测试过程
  • SSB测试结果 经过针对SSB宽表场景对DWS和开源OLAP产品ClickHouse的对比测试发现: 使用hstore_opt表,配合turbo存储、turbo引擎, DWS查询性能整体优于开源产品ClickHouse 1.3倍。 固定query_dop=16调优后,DWS查询性能全面超越ClickHouse,是该产品的3.73倍。 表1 SSB测试结果 SSB DWS ClickHouse - 开箱性能 query_dop=16 - Q1.1 0.0670 0.05 0.059 Q1.2 0.0264 0.022 0.021 Q1.3 0.0836 0.057 0.022 Q2.1 0.2309 0.041 0.254 Q2.2 0.3015 0.163 0.281 Q2.3 0.2398 0.05 0.214 Q3.1 0.3182 0.074 0.434 Q3.2 0.1823 0.042 0.348 Q3.3 0.1759 0.081 0.299 Q3.4 0.0239 0.014 0.025 Q4.1 0.2951 0.103 0.456 Q4.2 0.0942 0.037 0.171 Q4.3 0.0645 0.02 0.146 总时长(s) 2.1032 0.754 2.73 父主题: SSB性能测试
共100000条