华为云用户手册

  • 响应示例 状态码:200 OK { "description" : "this is demo", "project_id" : "2e76d6f0b2c5403796e36bf63c5d5561", "project_name" : "testdemo", "project_num_id" : 708168641, "project_type" : "scrum", "user_num_id" : 700145037 } 状态码:400 Bad Request { "error_code" : "PM.00000001", "error_msg" : "param error" }
  • 响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 description String 参数解释: 项目描述。 取值范围: 不涉及。 project_id String 参数解释: 项目id。 取值范围: 不涉及。 project_name String 参数解释: 项目名。 取值范围: 不涉及。 project_num_id Integer 参数解释: 项目数字id。 取值范围: 不涉及。 project_type String 参数解释: 项目类型。 取值范围: 不涉及。 user_num_id Integer 参数解释: 创建者的数字id。 取值范围: 不涉及。 状态码:400 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码:401 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 参数解释: 用户Token。 通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 约束限制: 必传。 取值范围: 最小长度:10,最大长度:32768。 默认取值: 不涉及。 表2 请求Body参数 参数 是否必选 参数类型 描述 description 否 String 参数解释: 项目描述。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 enterprise_id 否 String 参数解释: 项目要绑定的企业项目ID,可以通过[获取项目详情]接口获取,响应消息体中的enterprise_id字段的值就是项目要绑定的企业项目ID。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 project_name 是 String 参数解释: 项目名称。 约束限制: 最小长度:1,最大长度:128。 取值范围: 不涉及。 默认取值: 不涉及。 project_type 是 String 参数解释: 项目类型。 约束限制: 正则表达式:"scrum|normal|xboard|basic|phoenix|ipd"。 取值范围: scrum(scrum项目) normal(normal项目) xboard(看板项目) basic(basic项目) phoenix(凤凰项目) ipd(IPD项目template_id必传) 默认取值: 不涉及。 source 否 String 参数解释: 项目来源。 约束限制: 包含0到64个字符,字符可以是字母、数字、中文字符、空白字符以及特定的特殊字符。 取值范围: 不涉及。 默认取值: 不涉及。 template_id 否 Integer 参数解释: 用户创建的项目模板id。 约束限制: 当project_type字段值为ipd时,template_id可选值为10001,10002,10003,分别对应IPD-系统设备类,IPD-独立软件类,IPD-自运营软件/云服务类 取值范围: 10001(IPD-系统设备类) 10002(IPD-独立软件类) 10003(IPD-自运营软件/云服务类) 默认取值: 不涉及。
  • 响应示例 状态码:200 OK { "members" : [ { "domain_id" : "4e919d73499648e3b0292cd3cbef806a", "domain_name" : "demo_user_name", "user_id" : "a360371833bf4c558f796fd707b44daf", "user_name" : "demo_user_name", "user_num_id" : 4097, "role_id" : 7, "nick_name" : "name", "role_name" : "项目创建者", "user_type" : "User", "forbidden" : 0 } ], "total" : 1 }
  • 响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 members Array of members objects 参数解释: 项目成员列表。 total Integer 参数解释: 总数。 取值范围: 不涉及。 表4 members 参数 参数类型 描述 domain_id String 参数解释: 租户id。 取值范围: 不涉及。 domain_name String 参数解释: 租户名。 取值范围: 不涉及。 user_id String 参数解释: 用户id。用户在系统中的唯一编号。 取值范围: 不涉及。 user_name String 参数解释: 用户名。 取值范围: 不涉及。 user_num_id Integer 参数解释: 创建人numId。用户int类型的编号,有部分删除接口需要。 取值范围: 不涉及。 role_id Integer 参数解释: 成员角色id,取值范围枚举值中的key。 取值范围: -1( 项目创建者); 3 (项目经理); 4( 开发人员); 5 (测试经理); 6( 测试人员); 7 (参与者); 8 (浏览者); 9 (运维经理)。 nick_name String 参数解释: 用户昵称。 取值范围: 不涉及。 role_name String 参数解释: 用户角色,取值范围枚举值中的value。 取值范围: 项目创建者、项目经理、 开发人员、测试经理、测试人员、参与者、浏览者、运维经理等。 user_type String 参数解释: 用户类型。 取值范围: User(iam用户); Federation(联邦账号); forbidden Integer 参数解释: 是否是禁用账号。 取值范围: 1 禁用账号, 0非禁用账号。 状态码:400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码:401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • URI GET /v4/projects/{project_id}/members 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数解释: 项目的32位uuid,项目唯一标识,通过[查询项目列表]接口获取,响应消息体中的project_id字段的值就是项目ID。 约束限制: 正则表达式,[A-Za-z0-9]{32}。 取值范围: 不涉及 默认取值: 不涉及。 表2 Query参数 参数 是否必选 参数类型 描述 limit 是 Integer 参数解释: 条数,每页显示查询的数量。 约束限制: 不涉及。 取值范围: 最小值:1,最大值:1000。 默认取值: 10 offset 是 Integer 参数解释: 分页索引,偏移量,offset是limit的整数倍数。 约束限制: 从0开始。 取值范围: 最小值:0,最大值:10000。 默认取值: 缺省值:0
  • 创建注册配置中心 进入购买注册配置中心页面。 参考下表设置参数,参数前面带*号的是必须设置的参数。 参数 说明 计费模式 选择计费方式,目前支持: 包年/包月 按需计费 *企业项目 选择Nacos所在的项目,可在下拉框中搜索和选择需要的企业项目。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。 参考开通企业项目,创建并启用新的企业项目后可以使用,默认选择default。 注册配置中心Nacos引擎创建完成后,可将Nacos引擎资源迁出当前企业项目,迁入到新的企业项目,具体操作请参考迁出企业项目资源和为企业项目迁入资源。 *引擎名称 输入Nacos引擎的名称,名称以字母开头,由字母、数字和-组成,且不能以-结尾,长度为3~24个字符。名称不允许命名为“default”。 *注册配置中心类型 选择注册配置中心类型“Nacos”。 *选择实例数 选择需要的容量规格。 说明: 当您需要Nacos引擎微服务实例数大于2,000时需要提交工单申请。 版本 只能创建最新版本。 *网络 为引擎选择虚拟私有云及子网,可以为您的引擎构建隔离的、自主配置和管理的虚拟网络环境。 使用已创建的VPC,可在下拉列表中搜索和选择当前账号已创建的虚拟私有云和子网。 使用新的VPC,可单击“控制台”进入“虚拟私有云”页面,创建新的VPC,具体操作请参考创建虚拟私有云和子网。 标签 用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种维度(例如用途、所有者或环境)对云资源进行分类。 您可以单击“ 添加标签”,在“添加标签”弹框输入标签键和标签值,添加标签,标签的命名规则请参见管理标签。在“添加标签”弹框,可单击“ 新增标签”同时添加多个标签,也可单击标签后的,删除该标签。 *购买时长 计费模式选择“包年/包月”时需要设置。可设置是否开通自动续费。 单击“立即购买”,进入引擎信息确认界面。 单击“提交”,引擎开始创建,当“运行状态”为“可用”时,引擎创建完成。
  • 创建应用网关 进入购买应用网关页面。 参考下表设置参数,参数前面带*号的是必须设置的参数。 参数 说明 *企业项目 选择网关所在的项目,可在下拉框中搜索和选择需要的企业项目。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。 参考开通企业项目,创建并启用新的企业项目后可以使用,默认选择default。 应用网关创建完成后,可将应用网关资源迁出当前企业项目,迁入到新的企业项目,具体操作请参考迁出企业项目资源和为企业项目迁入资源。 *引擎名称 输入应用网关名称,名称以字母开头,由字母、数字和-组成,且不能以-结尾,长度为3~24个字符,且名称不能以default命名。 *产品版本 目前只支持专业版。 *规格 选择实例规格。当前支持规格有:小型、中型、大型和超大型。 可用区 您可根据实际情况选择可用区。 *版本 只能创建最新版本。 *节点数 选择网关的节点数量,节点数量不少于2个。 *入口网络 为应用网关选择虚拟私有云及子网,此子网作为入口网络,用于选择可用的弹性负载均衡,需与后端VPC子网网络互通,具体操作请参考对等连接。 使用已创建的VPC,可在下拉列表中搜索和选择当前账号已创建的虚拟私有云和子网。 使用新的VPC,可单击“控制台”进入“虚拟私有云”页面,创建新的VPC,具体操作请参考创建虚拟私有云和子网。 使用共享VPC,请在下拉列表选择其他账号共享给当前账号的VPC。 共享VPC基于 资源访问管理 (Resource Access Manager,简称 RAM )服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC。 *弹性负载均衡 选择已创建的弹性负载均衡。 若当前没有可用的弹性负载均衡,可单击“购买弹性负载均衡”进入弹性负载均衡页面进行购买。 *后端网络 为应用网关选择虚拟私有云及子网,此子网作为后端网络,默认同入口网络一致。若同入口网络不一致时,需要打通网络。 使用已创建的VPC,可在下拉列表中搜索和选择当前账号已创建的虚拟私有云和子网。 使用新的VPC,可单击“控制台”进入“虚拟私有云”页面,创建新的VPC,具体操作请参考创建虚拟私有云和子网 使用共享VPC,请在下拉列表选择其他账号共享给当前账号的VPC。 共享VPC基于资源访问管理(Resource Access Manager,简称RAM)服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC。 维护时间窗 运维操作时间。单击参数后的可以修改时间窗。具体操作请参考修改应用网关维护时间窗。 标签 用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种维度(例如用途、所有者或环境)对云资源进行分类。 您可以单击“ 添加标签”,在“添加标签”弹框输入标签键和标签值,添加标签,标签的命名规则请参见管理标签。在“添加标签”弹框,可单击“ 新增标签”同时添加多个标签,也可单击标签后的,删除该标签。 单击“立即购买”,网关开始创建,当“运行状态”为“可用”时,应用网关创建完成。
  • 约束与限制 应用网关创建完成后,不支持变更虚拟私有云。 当前仅支持独享型网络型负载均衡器。默认会使用所选ELB的80、443端口,如果选择的负载均衡器已经占用了部分端口,会创建失败。 ELB被应用网关使用后,为其配置的用于应用网关使用的监听器(即监听器名称中包含应用网关名称)及其关联的后端服务器组和后端服务器均不允许被删除。 各VPC网段不冲突。 当前端ELB与后端网络不同VPC时,需开启ELB的跨VPC后端,具体操作请参考跨VPC后端。
  • 扩容应用网关 应用网关规格支持在线扩容,只有低规格的实例支持扩容到高规格。 登录微服务引擎控制台。 左侧导航栏选择“应用网关 ”。 单击待操作的实例“操作”栏的“规格变更”,也可在应用网关的“基础信息”页面,单击“基础信息”区域“容量规格”后的“规格变更”。 在“应用网关规格变更”页面,选择待变更的规格。 单击“立即变更”,确认无误后,单击“提交”。待实例运行状态由“变更中”变成“可用”时,扩容成功。 父主题: 管理应用网关
  • 创建ServiceComb引擎 进入购买ServiceComb引擎专享版页面。 每个项目默认最多可以创建5个ServiceComb引擎专享版,如果您想创建更多,可以提交工单申请扩大配额。 关于项目,请参考项目。 参考下表设置参数,参数前面带*号的是必须设置的参数。 参数 说明 *计费模式 选择计费方式,目前支持: 包年/包月 按需计费 *企业项目 选择ServiceComb引擎所在的项目,可在下拉框中搜索和选择需要的企业项目。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。 参考开通企业项目,创建并启用新的企业项目后可以使用,默认选择default。 ServiceComb引擎创建完成后,可将ServiceComb引擎资源迁出当前企业项目,迁入到新的企业项目,具体操作请参考迁出企业项目资源和为企业项目迁入资源。 *选择实例数 选择微服务实例数配额。 *引擎类型 选择ServiceComb引擎的类型。 引擎类型为集群,其为集群模式部署,主机级容灾。 *ServiceComb引擎名称 输入ServiceComb引擎的名称,名称以字母开头,由字母、数字和-组成,且不能以-结尾,长度为3~24个字符。ServiceComb引擎名称不允许命名为“default”。 *可用区 选择可用区。 根据环境可用区数量,为引擎选择1个或者3个可用区。 选择1个可用区,可提供主机级别容灾能力。 选择3个可用区,可提供可用区级别容灾能力。 说明: 同一个区域内的可用区内网互通。 多可用区可加强容灾能力。 *网络 为引擎选择虚拟私有云及其子网,可以为您的引擎构建隔离的、自主配置和管理的虚拟网络环境。 使用已创建的VPC,可在下拉列表中搜索和选择当前账号已创建的虚拟私有云和子网。 使用新的VPC,在下拉列表中单击“创建新虚拟私有云”,创建新的虚拟私有云,具体操作请参考创建虚拟私有云和子网。 描述 单击,输入引擎描述信息。 标签 用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种维度(例如用途、所有者或环境)对云资源进行分类。 您可以单击“ 添加标签”,在“添加标签”弹框输入标签键和标签值,添加标签,标签的命名规则请参见管理标签。在“添加标签”弹框,可单击“ 新增标签”同时添加多个标签,也可单击标签后的,删除该标签。 安全认证 开启了“安全认证”的ServiceComb引擎专享版,通过微服务引擎控制台提供了基于RBAC(Role-Based Access Control,基于角色的访问控制)的系统管理功能。 选择“开启安全认证”: 根据业务需要确认是否需要开启“编程接口安全认证”。 开启编程接口安全认证后,需要在微服务的配置文件中添加对应用户的账号密码,否则服务无法注册到引擎。 关闭编程接口安全认证,微服务的配置文件中无需配置账号密码即可将服务注册到引擎,效率性能更高,建议用于VPC内访问时使用。 输入root账号的“密码”,并在“再次输入密码”输入框输入密码进行确认。 密码请妥善保管,以免遗失。 选择“关闭安全认证”: 关闭安全认证功能,可以在实例创建完成后再设置开启。 购买时长 计费模式选择“包年/包月”时需要设置。可设置是否开通自动续费。 单击“立即购买”,进入引擎信息确认界面。 单击“提交”,等待引擎创建完毕。 ServiceComb引擎创建完成,大约需要31分钟。 ServiceComb引擎创建成功后,“状态”为“可用”。查看ServiceComb引擎状态,请参考查看ServiceComb引擎信息。 如果ServiceComb引擎创建失败,可在操作日志页面上查看失败原因并处理后可进行以下操作: 可在“ServiceComb引擎信息”区域,单击“重试”重新创建。 如果重试失败,可删除创建失败的ServiceComb引擎,删除ServiceComb引擎,请参考删除ServiceComb引擎专享版。
  • 前提条件 ServiceComb引擎运行于虚拟私有云,创建ServiceComb引擎前,需保证有可用的虚拟私有云和子网。 创建虚拟私有云和子网,请参考创建虚拟私有云和子网。 如果引擎创建账号的权限为创建引擎的最小权限,如微服务引擎细粒度权限依赖说明中的“cse:engine:create”所示。则需要由主账号为其预置VPC默认安全组cse-engine-default-sg,并添加如表1所示规则。 添加安全组规则,请参考添加安全组规则。 表1 默认安全组cse-engine-default-sg规则说明 方向 优先级 策略 协议端口 类型 源地址 入方向 1 允许 ICMPV6 : 全部 IPv6 ::/0 1 允许 TCP : 30100-30130 IPv6 ::/0 1 允许 全部 IPv6 cse-engine-default-sg 1 允许 全部 IPv4 cse-engine-default-sg 1 允许 TCP : 30100-30130 IPv4 0.0.0.0/0 1 允许 ICMP : 全部 IPv4 0.0.0.0/0 出方向 100 允许 全部 IPv4 0.0.0.0/0 100 允许 全部 IPv6 ::/0
  • 查看Nacos引擎详细信息 登录微服务引擎控制台。 在左侧导航栏选择“注册配置中心”。 单击待查看的Nacos实例名称。只有引擎运行状态为“可用”才可单击实例名称进入详细信息页面。 查看如表1所示的Nacos引擎信息。 表1 引擎详细信息说明 信息类型 参数 说明 基础信息 名称 创建注册配置中心时输入的引擎名称,单击可复制。可以修改引擎名称,名称以字母开头,由字母、数字和-组成,且不能以-结尾,长度为3~24个字符。 ID 引擎的ID,单击可复制。 运行状态 引擎的状态。 注册配置中心类型 注册配置中心的类型为Nacos。 版本 引擎的版本号。 容量规格 创建注册配置中心时选择的引擎规格。当为小规格引擎时可单击右侧“扩容”进行扩容操作,具体操作请参考扩容Nacos引擎。 企业项目 创建注册配置中心时选择的企业项目。 计费方式 创建注册配置中心时选择的计费方式,若计费方式为“按需计费”时,可单击“转包周期”变更计费模式。 创建时间 创建注册配置中心的时间。 连接信息 内网地址 Nacos引擎的内网地址。 内网端口 Nacos引擎的内网端口。 虚拟私有云 创建注册配置中心时选择的虚拟私有云。 子网 创建注册配置中心时选择的子网。 访问白名单 Nacos支持白名单控制。允许配置多个IP地址/地址段,不在地址段范围内的ip不允许访问。白名单访问的操作请参考管理Nacos引擎白名单。 更多设置 标签 显示为Nacos引擎添加的标签,也可单击“标签管理”,根据需要对标签进行相应操作,具体操作可参见管理Nacos引擎标签。
  • 查看访问日志 当您配置了访问日志,可以查看访问日志的详细信息。 在 云日志 服务管理控制台,单击“日志管理”。 在日志组列表中,单击6中创建的日志组名称前对应的。 在日志流列表中,单击6中创建的日志流名称,进入日志详情页面。 可在页面右上角选择时间范围筛选符合时间要求的日志信息,具体操作请参见日志搜索。 日志字段说明如表1所示。 表1 日志字段 字段名称 描述 取值类型 取值示例 authority 请求报文中的Host Header。 string 100.19.10.178 bytes_received 请求的Body大小(不包含Header)。 long 0 bytes_sent 响应的Body大小(不包含Header)。 long 1127 downstream_local_address 网关Pod地址。 string 100.19.10.193:80 downstream_remote_address 连接到网关的Client端地址。 string 100.19.10.120:44944 duration 请求整体耗时。单位:ms。 long 7 method HTTP方法。 string GET path HTTP请求中的Path。 string / protocol HTTP的协议版本。 string HTTP/1.1 request_id 网关会为每次请求产生一个ID,并放在Header的x-request-id中,后端可以根据这个字段记录并进行排查。 string afbd1211-081d-4403-9b5d-7ccb9e632a4b requested_server_name SSL连接时使用的Server Name。 string - response_code HTTP响应的状态码。 long 200 response_flags 响应失败的原因。response_flags不同取值代表的详细信息见表2。 string UAEX route_name 路由名。 string http-mr6l-tom start_time 请求开始时间。格式:UTC。 string 2023-11-09T07:57:57.770Z trace_id Trace ID。 string 7db5d5c73ccd6517e419448a99174099 upstream_cluster 上游集群。 string outbound|8080||tom.default.svc.cluster.local upstream_host 上游IP。 string 172.18.0.130:8080 upstream_local_address 本地连接上游的地址。 string 100.19.10.193:51046 upstream_service_time 上游服务处理请求的耗时(毫秒),包括网关访问上游服务的网络耗时和上游服务自身处理耗时两部分。 long 4 upstream_transport_failure_reason 上游链接失败的原因。 string - user_agent HTTP Header中的UserAgent。 string curl/7.69.1 x_forwarded_for HTTP Header中的x-forwarded-for,通常用来表示HTTP请求端真实IP。 string 100.19.10.120 表2 response_flags信息 response_flags 详细信息 UH 上游集群中没有健康运行的上游主机。 UF 上游连接失败。 UO 上游溢出(断路)。 NR 没有为给定请求配置路由,或者下游连接没有匹配的过滤器链。 URX 由于已达到上游重试限制或最大连接尝试次数导致请求被拒绝。 NC 未找到上游集群。 DT 当请求或连接超过max_connection_duration或max_downstream_connection_duration时。 DC 下游连接终止。 LH 本地服务未通过健康检查请求。 UT 上游请求超时。 LR 连接本地重置。 UR 上游远程重置。 UC 上游连接终止。 DI 请求处理延迟了一段时间,该时间是由故障注入指定。 FI 请求被故障注入指定了响应代码终止。 RL 除429响应代码外,HTTP速率限制过滤器还对请求进行了本地速率限制。 UAEX 请求被外部授权服务拒绝。 RLSE 因为速率限制服务中存在错误,请求被拒绝。 IH 因为除了400响应代码之外,还在严格检查的标头设置了无效值,导致请求被拒绝。 SI 除了408或504响应代码之外,Stream空闲超时。 DPE 下游请求出现HTTP协议错误。 UPE 上游响应包含HTTP协议错误。 UMSDR 上游请求已达到最大流持续时间。 RFCF 响应来自Envoy缓存过滤器。 NFCF 由于未在允许的预热截止时间内收到过滤器配置,因此请求终止。 OM 超负荷管理器已终止请求。 DF 由于DNS解析失败,请求终止。 DO 除了503响应代码外,由于drop_overloads请求被终止。 如果您希望将日志转储进行二次分析,您可设置日志转储操作,具体操作请参考日志转储。
  • 镜像管理 权限 对应API接口 授权项(Action) 依赖的授权项 IAM项目(Project) 企业项目(Enterprise Project) 查询镜像列表 GET /v2/cloudimages ims:images:list - √ √ 说明: 查询共享镜像仅支持IAM项目,不支持企业项目。 查询镜像支持的OS列表 GET /v1/cloudimages/os_version ims:images:list - √ × 更新镜像信息 PATCH /v2/cloudimages/{image_id} ims:images:update ims:serverImages:create(仅企业项目迁移需要) ims:serverImages:create(仅企业项目迁移需要) obs:bucket:* obs:object:* kms:*:* ecs:cloudServers:get ecs:servers:get ecs:serverVolumes:use ecs:cloudServers:list ecs:serverVolumeAttachments:list ecs:servers:list evs:volumes:* bms:servers:list bms:servers:get bms:serverFlavors:get √ √ 制作镜像 POST /v2/cloudimages/action 说明: 外部文件制作镜像前请确保用户已拥有 对象存储服务 的Tenant Administrator权限。 ims:serverImages:create obs:bucket:* obs:object:* kms:*:* ecs:cloudServers:get ecs:servers:get ecs:serverVolumes:use ecs:cloudServers:list ecs:serverVolumeAttachments:list ecs:servers:list evs:volumes:* bms:servers:list bms:servers:get bms:serverFlavors:get √ √ 镜像文件快速导入 POST /v2/cloudimages/quickimport/action 说明: 使用镜像文件快速导入前请确保用户已拥有对象存储服务的Tenant Administrator权限。 ims:serverImages:create(仅快速导入系统盘镜像需要) ims:dataImages:create(仅快速导入数据盘镜像需要) ims:serverImages:create(仅快速导入系统盘镜像需要) obs:bucket:* obs:object:* kms:*:* ecs:cloudServers:get ecs:servers:get ecs:serverVolumes:use ecs:cloudServers:list ecs:serverVolumeAttachments:list ecs:servers:list evs:volumes:* bms:servers:list bms:servers:get bms:serverFlavors:get ims:dataImages:create(仅快速导入数据盘镜像需要) obs:bucket:* obs:object:* kms:*:* ecs:cloudServers:get ecs:servers:get ecs:serverVolumes:use ecs:cloudServers:list ecs:serverVolumeAttachments:list ecs:servers:list evs:volumes:* √ √ 使用外部镜像文件制作数据镜像 POST /v1/cloudimages/dataimages/action 说明: 使用外部镜像文件前请确保用户已拥有对象存储服务的Tenant Administrator权限。 ims:dataImages:create obs:bucket:* obs:object:* kms:*:* ecs:cloudServers:get ecs:servers:get ecs:serverVolumes:use ecs:cloudServers:list ecs:serverVolumeAttachments:list ecs:servers:list evs:volumes:* √ √ 制作整机镜像 POST /v1/cloudimages/wholeimages/action 说明: 制作整机镜像前请确保用户已拥有云服务器备份服务的 CS BS Administrator权限,或者云备份服务的CBR Admin权限。 ims:wholeImages:create obs:bucket:* obs:object:* kms:*:* cbr:*:* CSBS:backup:* ecs:cloudServers:get ecs:servers:get ecs:serverVolumes:use ecs:cloudServers:list ecs:serverVolumeAttachments:list ecs:servers:list evs:volumes:* √ √ 注册镜像 PUT /v1/cloudimages/{image_id}/upload 说明: 注册镜像前请确保用户已拥有对象存储服务的Tenant Administrator权限。 必须配置default的企业项目权限,才能正常使用企业项目权限注册镜像。 ims:images:upload ims:images:get ims:images:update obs:bucket:* obs:object:* kms:*:* √ √ 导出镜像 POST /v1/cloudimages/{image_id}/file 说明: 导出镜像前请确保用户已拥有对象存储服务的Tenant Administrator权限。 ims:images:export obs:bucket:* obs:object:* kms:*:* √ √ 查询镜像列表(OpenStack原生) GET /v2/images ims:images:list - √ x 查询镜像详情(OpenStack原生) GET /v2/images/{image_id} ims:images:get - √ √ 更新镜像信息(OpenStack原生) PATCH /v2/images/{image_id} ims:images:update - √ √ 删除镜像(OpenStack原生) DELETE /v2/images/{image_id} ims:images:delete - √ √ 创建镜像元数据(OpenStack原生) POST /v2/images ims:images:create - √ x 上传镜像(OpenStack原生) PUT /v2/images/{image_id}/file ims:images:get ims:images:update ims:images:upload ims:images:upload obs:bucket:* obs:object:* kms:*:* √ x 查询版本(OpenStack原生) GET / 无 - √ x 查询镜像详情(OpenStack原生v1.1--已废弃,不推荐使用) GET /v1.1/images/detail ims:images:list - √ x 查询镜像元数据(OpenStack原生v1--已废弃,不推荐使用) HEAD /v1/images/{image_id} ims:images:get - √ x 删除镜像(OpenStack原生v1.1--已废弃,不推荐使用) DELETE /v1.1/images/{image_id} ims:images:delete - √ x 父主题: 权限和授权项
  • 前提条件 已购买 云桌面 。 管理员账号已具备云备份服务操作权限。 自主注册的华为云账号默认拥有华为云所有服务的操作权限,如果您使用的是此类账号,无需再进行确认。 华为云账号下新建的IAM账号,需要加入“admin”内置用户组,或者拥有云备份服务操作权限的用户组,才可使用云备份服务。可进入“ 统一身份认证 服务”中查看是否属于“admin”内置用户组。如果非“admin”内置用户组,请参见云备份服务授权赋予IAM账号使用云备份服务的权限。
  • 调用API示例 在工程中引入sdk。 1 using APIGATEWAY_SDK; 生成一个新的Signer, 填入AppKey和AppSecret。 1 2 3 4 5 6 7 8 // 认证用的ak和sk编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量SDK_AK和SDK_SK。 string ak = System.Environment.GetEnvironmentVariable("SDK_AK"); string sk = System.Environment.GetEnvironmentVariable("SDK_SK"); Signer signer = new Signer(); signer.Key = ak; signer.Secret = sk; 生成一个HttpRequest对象,指定域方法名、请求url和body。 1 2 3 HttpRequest r = new HttpRequest("POST", new Uri("https://c967a237-cd6c-470e-906f-a8655461897e.apigw.cn-north-1.huaweicloud.com/app1?query=value")); r.body = "{\"a\":1}"; 给请求添加header头,内容为具体参数数据。如有需要,添加需要签名的其他头域。 1 2 r.headers.Add("x-stage", "RELEASE"); r.headers.Add("name","value"); 进行签名,执行此函数会生成一个新的HttpWebRequest,并在请求参数中添加用于签名的X-Sdk-Date头和Authorization头。然后为请求添加x-Authorization头,值与Authorization头相同。 1 2 HttpWebRequest req = signer.Sign(r); req.Headers.Add("x-Authorization", string.Join(", ", req.Headers.GetValues("Authorization"))); 访问API,查看访问结果。 1 2 3 4 5 6 var writer = new StreamWriter(req.GetRequestStream()); writer.Write(r.body); writer.Flush(); HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); var reader = newStreamReader(resp.GetResponseStream()); Console.WriteLine(reader.ReadToEnd());
  • SDK调用常见错误码/错误信息 表1 常见错误码/错误信息 错误码 错误信息 错误原因 解决方案 DLM.0 null 表示API调用成功。 表示调用成功,无需处理。 APIG.0101 The API does not exist or has not been published in the environment API未发布 url错误 发布API 确认请求的url和实际url是否相同 APIG.0106 Orchestration error: Invalid header parameter: x-Authorization, required SDK未添加x-Authorization。 SDK使用前准备步骤3。 APIG.0106 Orchestration error: Invalid ___ parameter: ___, required 未传指定参数。 调用时上传此参数。 APIG.0201 Backend timeout 后端超时(API网关请求维持50秒后未收到返回结果,会返回此错误信息。) 请先确认数据服务访问日志,如果访问日志中有数据(数据略有延迟),则说明数据源取数时间过长,请尽量优化取数sql逻辑。 如果访问日志中无数据,请确认(共享版:数据服务gateway/专享版:数据服务集群)是否运行中。 APIG.0303 Incorrect app authentication information: app not found 应用不存在。 确认请求的key和secret是否准确。 APIG.0304 The app is not authorized to access the API 应用无权访问当前API。 确认API已授权给应用。 确认请求的key和secret是否准确。 APIG.0308 The throttling threshold has been reached: policy domain over ratelimit, limit:1000, time:1 day 域名 的请求次数达到了给定的上限:1天1000次。 建议:去API网关,为分组绑定域名。 临时规避:切换分组。域名以分组为单位,每个分组限制独立计算。 DLM.4018 Api is not exist API不存在。 20200630版本前发布的API: 请确认调用时参数x-api-id的值,是否正确(该值为所访问API的ID,请向此API的提供者获取) 20200630版本后发布的API: 确认请求的url和实际url是否相同。 若为专享版刚发布的API,请稍作等待,API下发至集群存在短暂的延时。 其他(数据同步异常): 停用/下线对应API,然后恢复/发布。 尝试重启集群(逐个节点重启可避免业务影响)。 DLM.4094 Call api failed. 调用API失败。 确认调用所执行的SQL正确,可以正常使用(所执行SQL详见访问日志,仅API方可见)。 CDM 中代理异常,错误原因详见返回的DLG错误信息。 调用超时,若为DWS数据库,建议API采用自定义分页。 调用超时,请优化查询语句,确保数据库中能短时间内完成执行。 DLM.4211 Token invalid token校验不通过。 确认token是否正确。 确认token所属租户,是否已授权或已位于白名单中。 DLM.4312 Missing parameters: ___ 缺少指定参数。 调用时上传此参数。 400 App does not have permission to access API. 应用无权访问当前API。 确认API已授权给应用。 确认请求的key和secret是否准确。 确认API和APP的授权关系仍在有效期内。 401 Authorization not found. 签名信息未找到。 应用认证:SDK使用前准备步骤3。 发布到网关的专享版IAM认证:IAM认证的API发布到网关后,不支持直接访问集群的token认证形式。 401 Authorization format incorrect. 签名格式错误。 建议使用SDK生成签名。 401 Signing key not found. 签名密钥未找到。 确认请求的key和secret是否准确。 401 Signed header ___ not found. 签名头未找到。 请确认用于签名的header头参数在调用时上传了。 401 Header x-sdk-date not found. 签名头x-sdk-date未找到。 此参数为签名时自动生成,若通过其他方式调用,请将SDK签名后的此参数在调用时也进行上传。 401 Signature expired. 签名过期。 签名具有一定的有效期,当前签名已过期,请重新生成签名。 请确认本地时间和实际时间是否一致。 如果本地时间是准确的,请联系相关人员确认集群节点时间,可能节点时间存在异常。 401 Verify authorization failed. 签名校验失败。 请确认进行签名的所有参数,均已上传且和签名时相同,包括且不限于url、path、header、query、body等。 说明: 如果自行对接了第三方网关等,请求地址和数据服务展示的地址不一致,需要在请求头中补充参数x-forwarded-host,值为签名时使用的请求地址。 如果使用get请求,不要定义body体。 DLG.0902 Fail to call the agent. For details about No matching constant for [-1], see the CDM logs. CDM上的代理拒绝服务。 SQL执行时间过长 CDM资源不足了 确认SQL执行时长,如果时间过长,建议优化SQL(默认分页的话则建议使用自定义分页)。 如果SQL执行时间较短,当前没有其他服务正在作业的话,重启CDM。 DAYU.1088 Failed to process the request sent by the agent. CDM无响应。 尝试重启CDM。 可能是CDM升级引起,考虑新买一个CDM。 父主题: 数据服务SDK参考
  • 数据规划 在kafka中生成模拟数据(需要有Kafka权限用户) 确保集群安装完成,包括HDFS、Yarn、Spark2x和Kafka。 创建Topic。 {zkQuorum}表示ZooKeeper集群信息,格式为IP:port。 $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper {zkQuorum}/kafka --replication-factor 1 --partitions 1 --topic {Topic} 启动Kafka的Producer,向Kafka发送数据。 {ClassPath}表示工程jar包的存放路径,详细路径由用户指定,可参考在Linux环境中编包并运行Spark程序章节中导出jar包的操作步骤。 java -cp $SPARK_HOME/conf:$SPARK_HOME/jars/*:$SPARK_HOME/jars/streamingClient010/*:{ClassPath} com.huawei.bigdata.spark.examples.KafkaProducer {brokerlist} {topic} {number of events produce every 0.02s} 示例: java -cp /opt/client/Spark2x/spark/conf:/opt/StructuredStreamingState-1.0.jar:/opt/client/Spark2x/spark/jars/*:/opt/client/Spark2x/spark/jars/streamingClient010/* com.huawei.bigdata.spark.examples.KafkaProducer xxx.xxx.xxx.xxx:21005,xxx.xxx.xxx.xxx:21005,xxx.xxx.xxx.xxx:21005 mytopic 10
  • MRS 各组件样例工程汇总 样例工程获取地址参见获取MRS应用开发样例工程,切换分支为与MRS集群相匹配的版本分支,然后下载压缩包到本地后解压,即可获取各组件对应的样例代码工程。 MRS样例代码库提供了各组件的基本功能样例工程供用户使用,当前版本各组件提供的样例工程汇总参见表1。 表1 各组件样例工程汇总 组件 样例工程位置 描述 ClickHouse clickhouse-examples 指导用户基于Java语言,实现MRS集群中的ClickHouse的数据表创建、删除以及数据的插入、查询等操作。 本工程中包含了建立服务端连接、创建数据库、创建数据表、插入数据、查询数据及删除数据表等操作示例。 Flink 开启Kerberos认证集群的样例工程目录“flink-examples/flink-examples-security”。 未开启Kerberos认证集群的样例工程目录为“flink-examples/flink-examples-normal”。 FlinkCheckpointJavaExample Flink异步Checkpoint机制的Java/Scala示例程序。 本工程中,程序使用自定义算子持续产生数据,产生的数据为一个四元组(Long,String,String,Integer)。数据经统计后,将统计结果打印到终端输出。每隔6秒钟触发一次checkpoint,然后将checkpoint的结果保存到HDFS中。 FlinkCheckpointScalaExample FlinkKafkaJavaExample Flink向Kafka生产并消费数据的Java/Scala示例程序。 在本工程中,假定某个Flink业务每秒就会收到1个消息记录,启动Producer应用向Kafka发送数据,然后启动Consumer应用从Kafka接收数据,对数据内容进行处理后并打印输出。 FlinkKafkaScalaExample FlinkPipelineJavaExample Flink Job Pipeline的Java/Scala示例程序。 本样例中一个发布者Job自己每秒钟产生10000条数据,另外两个Job作为订阅者,分别订阅一份数据。订阅者收到数据之后将其转化格式,并抽样打印输出。 FlinkPipelineScalaExample FlinkSqlJavaExample 使用客户端通过jar作业提交SQL作业的应用开发示例。 FlinkStreamJavaExample Flink构造DataStream的Java/Scala示例程序。 本工程示例为基于业务要求分析用户日志数据,读取文本数据后生成相应的DataStream,然后筛选指定条件的数据,并获取结果。 FlinkStreamScalaExample FlinkStreamSqlJoinExample Flink SQL Join示例程序。 本工程示例调用flink-connector-kafka模块的接口,生产并消费数据。生成Table1和Table2,并使用Flink SQL对Table1和Table2进行联合查询,打印输出结果。 HBase hbase-examples hbase-example HBase数据读写操作的应用开发示例。 通过调用HBase接口可实现创建用户表、导入用户数据、增加用户信息、查询用户信息及为用户表创建二级索引等功能。 hbase-rest-example HBase Rest接口应用开发示例。 使用Rest接口实现查询HBase集群信息、获取表、操作NameSpace、操作表等功能。 hbase-thrift-example 访问HBase ThriftServer应用开发示例。 访问ThriftServer操作表、向表中写数据、从表中读数据。 hbase-zk-example HBase访问ZooKeeper应用开发示例。 在同一个客户端进程内同时访问MRS ZooKeeper和第三方的ZooKeeper,其中HBase客户端访问MRS ZooKeeper,客户应用访问第三方ZooKeeper。 HDFS 开启Kerberos认证集群的样例工程目录“hdfs-example-security”。 未开启Kerberos认证集群的样例工程目录为“hdfs-example-normal”。 HDFS文件操作的Java示例程序。 本工程主要给出了创建HDFS文件夹、写文件、追加文件内容、读文件和删除文件/文件夹等相关接口操作示例。 hdfs-c-example HDFS C语言开发代码样例。 本示例提供了基于C语言的HDFS文件系统连接、文件操作如创建文件、读写文件、追加文件、删除文件等。 Hive hive-jdbc-example Hive JDBC处理数据Java示例程序。 本工程使用JDBC接口连接Hive,在Hive中执行相关数据操作。使用JDBC接口实现创建表、加载数据、查询数据等功能,还可实现在同一个客户端进程内同时访问 FusionInsight ZooKeeper和第三方的ZooKeeper。 hive-jdbc-example-multizk hcatalog-example Hive HCatalog处理数据Java示例程序。 使用HCatalog接口实现通过Hive命令行方式对MRS Hive元数据进行数据定义和查询操作。 python3-examples 使用Python3连接Hive执行SQL样例。 可实现使用Python3对接Hive并提交数据分析任务。 Kafka kafka-examples Kafka流式数据的处理Java示例程序。 本工程基于Kafka Streams完成单词统计功能,通过读取输入Topic中的消息,统计每条消息中的单词个数,从输出Topic消费数据,然后将统计结果以Key-Value的形式输出。 Manager manager-examples FusionInsight Manager API接口调用示例。 本工程调用Manager API接口实现集群用户的创建、修改及删除等操作。 MapReduce 开启Kerberos认证集群的样例工程目录“mapreduce-example-security”。 未开启Kerberos认证集群的样例工程目录为“mapreduce-example-normal”。 MapReduce任务提交Java示例程序。 本工程提供了一个MapReduce统计数据的应用开发示例,实现数据分析、处理,并输出满足用户需要的数据信息。 另外以MapReduce访问HDFS、HBase、Hive为例,介绍如何编写MapReduce作业访问多个服务组件。帮助用户理解认证、配置加载等关键使用方式。 Oozie 开启Kerberos认证集群的样例工程目录“oozie-examples/ooziesecurity-examples”。 未开启Kerberos认证集群的样例工程目录为“oozie-examples/oozienormal-examples”。 OozieMapReduceExample Oozie提交MapReduce任务示例程序。 本示例演示了如何通过Java API提交MapReduce作业和查询作业状态,对网站的日志文件进行离线分析。 OozieSparkHBaseExample 使用Oozie调度Spark访问HBase的示例程序。 OozieSparkHiveExample 使用Oozie调度Spark访问Hive的示例程序。 Spark 开启Kerberos认证集群的样例工程目录“spark-examples/sparksecurity-examples”。 未开启Kerberos认证集群的样例工程目录为“spark-examples/sparknormal-examples”。 SparkHbasetoCarbonJavaExample Spark同步HBase数据到CarbonData的Java示例程序。 本示例工程中,应用将数据实时写入HBase,用于点查业务。数据每隔一段时间批量同步到CarbonData表中,用于分析型查询业务。 SparkHbasetoHbaseJavaExample Spark从HBase读取数据再写入HBase的Java/Scala/Python示例程序。 本示例工程中,Spark应用程序实现两个HBase表数据的分析汇总。 SparkHbasetoHbasePythonExample SparkHbasetoHbaseScalaExample SparkHivetoHbaseJavaExample Spark从Hive读取数据再写入到HBase的Java/Scala/Python示例程序。 本示例工程中,Spark应用程序实现分析处理Hive表中的数据,并将结果写入HBase表。 SparkHivetoHbasePythonExample SparkHivetoHbaseScalaExample SparkJavaExample Spark Core任务的Java/Python/Scala/R示例程序。 本工程应用程序实现从HDFS上读取文本数据并计算分析。 SparkRExample示例不支持未开启Kerberos认证的集群。 SparkPythonExample SparkScalaExample SparkRExample SparkLauncherJavaExample 使用Spark Launcher提交作业的Java/Scala示例程序。 本工程应用程序通过org.apache.spark.launcher.SparkLauncher类采用Java/Scala命令方式提交Spark应用。 SparkLauncherScalaExample SparkOnHbaseJavaExample Spark on HBase场景的Java/Scala/Python示例程序。 本工程应用程序以数据源的方式去使用HBase,将数据以Avro格式存储在HBase中,并从中读取数据以及对读取的数据进行过滤等操作。 SparkOnHbasePythonExample SparkOnHbaseScalaExample SparkOnHudiJavaExample Spark on Hudi场景的Java/Scala/Python示例程序。 本工程应用程序使用Spark操作Hudi执行插入数据、查询数据、更新数据、增量查询、特定时间点查询、删除数据等操作。 SparkOnHudiPythonExample SparkOnHudiScalaExample SparkOnMultiHbaseScalaExample Spark同时访问两个集群中的HBase的Scala示例程序。 本示例不支持未开启Kerberos认证的集群。 SparkSQLJavaExample Spark SQL任务的Java/Python/Scala示例程序。 本工程应用程序实现从HDFS上读取文本数据并计算分析。 SparkSQLPythonExample SparkSQLScalaExample SparkStreamingKafka010JavaExample Spark Streaming从Kafka接收数据并进行统计分析的Java/Scala示例程序。 本工程应用程序实时累加计算Kafka中的流数据,统计每个单词的记录总数。 SparkStreamingKafka010ScalaExample SparkStreamingtoHbaseJavaExample010 Spark Streaming读取Kafka数据并写入HBase的Java/Scala/Python示例程序。 本工程应用程序每5秒启动一次任务,读取Kafka中的数据并更新到指定的HBase表中。 SparkStreamingtoHbasePythonExample010 SparkStreamingtoHbaseScalaExample010 SparkStructuredStreamingJavaExample 在Spark应用中,通过使用StructuredStreaming调用Kafka接口来获取单词记录,然后把单词记录分类统计,得到每个单词记录数。 SparkStructuredStreamingPythonExample SparkStructuredStreamingScalaExample SparkThriftServerJavaExample 通过JDBC访问Spark SQL的Java/Scala示例程序。 本示例中,用户自定义JD BCS erver的客户端,使用JDBC连接来进行表的创建、数据加载、查询和删除。 SparkThriftServerScalaExample StructuredStreamingADScalaExample 使用Structured Streaming,从kafka中读取广告请求数据、广告展示数据、广告点击数据,实时获取广告有效展示统计数据和广告有效点击统计数据,将统计结果写入kafka中。 StructuredStreamingStateScalaExample 在Spark结构流应用中,跨批次统计每个session期间发生了多少次event以及本session的开始和结束timestamp;同时输出本批次被更新状态的session。
  • 代码样例 下面代码片段在com.huawei.storm.example.common包的“RandomSentenceSpout”类的“nextTuple”方法中,作用在于将收到的字符串拆分成单词。 /** * {@inheritDoc} */ @Override public void nextTuple() { Utils.sleep(100); String[] sentences = new String[] {"the cow jumped over the moon", "an apple a day keeps the doctor away", "four score and seven years ago", "snow white and the seven dwarfs", "i am at two with nature"}; String sentence = sentences[random.nextInt(sentences.length)]; collector.emit(new Values(sentence)); }
  • 操作步骤 准备依赖的Jar包和配置文件。 在Linux环境新建目录,例如“/opt/test”,并创建子目录“lib”和“src/main/resources/”。将样例工程中“lib”文件夹下的Jar包上传Linux环境的“lib”目录。将样例工程中“src/main/resources”文件夹下的配置文件上传到Linux环境的“src/main/resources”目录。 在IntelliJ IDEA工程中修改WordCountTopology.java类,使用remoteSubmit方式提交应用程序。并替换Jar文件地址。 使用remoteSubmit方式提交应用程序 public static void main(String[] args) throws Exception { TopologyBuilder builder = buildTopology(); /* * 任务的提交认为三种方式 * 1、命令行方式提交,这种需要将应用程序jar包复制到客户端机器上执行客户端命令提交 * 2、远程方式提交,这种需要将应用程序的jar包打包好之后在IntelliJ IDEA中运行main方法提交 * 3、本地提交 ,在本地执行应用程序,一般用来测试 * 命令行方式和远程方式安全和普通模式都支持 * 本地提交仅支持普通模式 * * 用户同时只能选择一种任务提交方式,默认命令行方式提交,如果是其他方式,请删除代码注释即可 */ submitTopology(builder, SubmitType.REMOTE); } 修改userJarFilePath为Linux环境指定路径“/opt/test/lib/example.jar”。 private static void remoteSubmit(TopologyBuilder builder) throws AlreadyAliveException, InvalidTopologyException, NotALeaderException, AuthorizationException, IOException { Config config = createConf(); String userJarFilePath = "/opt/test/lib/example.jar "; System.setProperty(STORM_SUBMIT_JAR_PROPERTY, userJarFilePath); //安全模式下的一些准备工作 if (isSecurityModel()) { securityPrepare(config); } config.setNumWorkers(1); StormSubmitter.submitTopologyWithProgressBar(TOPO LOG Y_NAME, config, builder.createTopology()); } 导出Jar包并上传到Linux环境。 参考打包Storm样例工程应用执行打包,并将jar包命名为“example.jar”。 将导出的Jar包复制到Linux环境的“/opt/test/lib”目录下。 切换到“/opt/test”,执行以下命令,运行Jar包。 java -classpath /opt/test/lib/*:/opt/test/src/main/resources com.huawei.storm.example.wordcount.WordCountTopology
  • 部署运行及结果查看 导出本地jar包,请参见打包Storm样例工程应用。 将1中导出的本地Jar包,4中获取的配置文件和5中获取的jar包合并统一打出完整的业务jar包,请参见打包Storm应用业务。 执行命令提交拓扑。 storm jar /opt/jartarget/source.jar com.huawei.storm.example.hbase.SimpleHBaseTopology hbase-test 因为示例中的HBaseBolt并没有建表功能,在提交之前确保HBase中存在相应的表,若不存在需要手动建表,HBase shell建表语句如下create 'WordCount', 'cf'。 拓扑提交成功后请自行登录HBase集群查看。
  • 操作步骤 将从IntelliJ IDEA打包出来的jar包放入指定文件夹(例如“D:\source”)。 在样例代码目录“src/storm-examples/storm-examples”下创建“lib”目录,将IntelliJ IDEA中导出的jar包复制到“lib”目录下,并解压。 若业务需要访问外部组件,其所依赖的配置文件请参考相关开发指引,获取到配置文件后将配置文件放在1中指定的目录下。 若业务需要访问外部组件,其所依赖的jar包请参考相关开发指引,获取到jar包后将jar包放在1中指定的目录下。 在IntelliJ IDEA样例工程的“tools”目录下找到打包工具:“storm-jartool.cmd”。 双击打包工具,输入要打包的jar包所在目录(“D:\source”)并回车,再输入打出包存放的目录(“D:\target”),在“D:\target”中,会生成“source.jar”文件。
  • 操作步骤 获取样例代码。 下载样例工程的Maven工程源码和配置文件,请参见获取代码样例工程。 将样例代码导入IDEA中。 获取配置文件。 从集群的客户端中获取文件。在“$SPARK_HOME/conf”中下载hive-site.xml与spark-defaults.conf文件到本地。 在集群的FusionInsight Manager页面下载所使用用户的认证文件到本地。 在HDFS中上传数据。 在Linux中新建文本文件data,将如下数据内容保存到data文件中。 Miranda,32 Karlie,23 Candice,27 在HDFS客户端,执行如下命令获取安全认证。 cd {客户端安装目录} kinit {用于认证的业务用户} 在Linux系统HDFS客户端使用命令hadoop fs -mkdir /data(hdfs dfs命令有同样的作用),创建对应目录。 在Linux系统HDFS客户端使用命令hadoop fs -put data /data,上传数据文件。 在样例代码中配置相关参数。 认证用户配置。 userPrincipal配置为所使用的用户。 userKeytabPath配置为下载的keytab文件的路径。 Krb5ConfPath配置为下载的krb5.conf文件的路径。 域名配置为DEFAULT_REALM,在KerberosUtil类中修改DEFAULT_REALM为集群的域名。 将securityConfig拼接的字符串中user.principal与user.keytab修改为相应的用户名与路径。注意这里keytab的路径需要使用“/”。 将加载数据的sql语句改为“LOAD DATA INPATH 'hdfs:/data/data' INTO TABLE CHILD”。 在程序运行时添加运行参数,分别为hive-site.xml与spark-defaults.conf文件的路径。 运行程序。
  • MapReduce REST API接口介绍 功能简介 通过HTTP REST API来查看更多MapReduce任务的信息。目前Mapreduce的REST接口可以查询已完成任务的状态信息。完整和详细的接口请直接参考官网上的描述以了解其使用: http://hadoop.apache.org/docs/r3.1.1/hadoop-mapreduce-client/hadoop-mapreduce-client-hs/HistoryServerRest.html 准备运行环境 在节点上安装客户端,例如安装到“/opt/client”目录。 进入客户端安装目录“/opt/client”,执行下列命令初始化环境变量。 source bigdata_env 操作步骤 获取MapReduce上已完成任务的具体信息 命令: curl -k -i --negotiate -u : "http://10.120.85.2:19888/ws/v1/history/mapreduce/jobs" 其中10.120.85.2为MapReduce的“JHS_FLOAT_IP”参数的参数值,19888为JobHistoryServer的端口号。 在Red Hat 6.x以及CentOS 6.x版本,使用curl命令访问JobHistoryServer会有兼容性问题,导致无法返回正确结果。 用户能看到历史任务的状态信息(任务ID,开始时间,结束时间,是否执行成功等信息) 运行结果 { "jobs":{ "job":[ { "submitTime":1525693184360, "startTime":1525693194840, "finishTime":1525693215540, "id":"job_1525686535456_0001", "name":"QuasiMonteCarlo", "queue":"default", "user":"mapred", "state":"SUCCEEDED", "mapsTotal":1, "mapsCompleted":1, "reducesTotal":1, "reducesCompleted":1 } ] } } 结果分析: 通过这个接口,可以查询当前集群中已完成的MapReduce任务,并且可以得到表1 表1 常用信息 参数 参数描述 submitTime 任务提交时间 startTime 任务开始执行时间 finishTime 任务执行完成时间 queue 任务队列 user 提交这个任务的用户 state 任务执行成功或失败 父主题: MapReduce接口介绍
  • 操作步骤 运行结果会有如下成功信息: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/mavenlocal/org/apache/logging/log4j/log4j-slf4j-impl/2.6.2/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/D:/mavenlocal/org/slf4j/slf4j-log4j12/1.7.30/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. ---- Begin executing sql: CREATE TABLE IF NOT EXISTS CHILD (NAME STRING, AGE INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ---- Result ---- Done executing sql: CREATE TABLE IF NOT EXISTS CHILD (NAME STRING, AGE INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ---- ---- Begin executing sql: LOAD DATA INPATH 'hdfs:/data/data' INTO TABLE CHILD ---- Result ---- Done executing sql: LOAD DATA INPATH 'hdfs:/data/data' INTO TABLE CHILD ---- ---- Begin executing sql: SELECT * FROM child ---- NAME AGE Miranda 32 Karlie 23 Candice 27 ---- Done executing sql: SELECT * FROM child ---- ---- Begin executing sql: DROP TABLE child ---- Result ---- Done executing sql: DROP TABLE child ---- Process finished with exit code 0
  • 部署运行及结果查看 导出本地jar包,请参见打包Storm样例工程应用。 将1导出的本地Jar包,4中获取的配置文件和5中获取的jar包合并统一打出完整的业务jar包,请参见打包Storm应用业务。 执行命令提交拓扑。 storm jar /opt/jartarget/source.jar com.huawei.storm.example.hdfs.SimpleHDFSTopology hdfs-test 拓扑提交成功后请登录HDFS集群查看。
  • 操作步骤 提交拓扑(以wordcount为例,其它拓扑请参照相关开发指引),进入Storm客户端“Storm/storm-1.2.1/bin”目录,将刚打出的source.jar提交(如果在Windows上进行的打包,则需要将Windows上的source.jar上传到Linux服务器,假定上传到“/opt/jartarget”目录),执行命令:storm jar /opt/jartarget/source.jar com.huawei.storm.example.wordcount.WordCountTopology 执行storm list命令,查看已经提交的应用程序,如果发现名称为word-count的应用程序,则说明任务提交成功。 如果业务设置为本地模式,且使用命令行方式提交时,请确保提交环境为普通模式环境,当前不支持安全环境下使用命令提交本地模式的业务。
  • 数据规划 在kafka中生成模拟数据(需要有Kafka权限用户)。 确保集群安装完成,包括安装HDFS、Yarn、Spark2x和Kafka服务。 将Kafka的Broker配置参数“allow.everyone.if.no.acl.found”的值修改为“true”。 创建Topic。 {zkQuorum}表示ZooKeeper集群信息,格式为IP:port。 $KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper {zkQuorum}/kafka --replication-factor 1 --partitions 1 --topic {Topic} 启动Kafka的Producer,向Kafka发送数据。 {ClassPath}表示工程jar包的存放路径,详细路径由用户指定,可参考在Linux环境中编包并运行Spark程序章节中导出jar包的操作步骤。 java -cp $SPARK_HOME/conf:$SPARK_HOME/jars/*:$SPARK_HOME/jars/streamingClient010/*:{ClassPath} com.huawei.bigdata.spark.examples.KafkaProducer {brokerlist} {topic} {number of events produce every 0.02s} 示例: java -cp /opt/client/Spark2x/spark/conf:/opt/StructuredStreamingState-1.0.jar:/opt/client/Spark2x/spark/jars/*:/opt/client/Spark2x/spark/jars/streamingClient010/* com.huawei.bigdata.spark.examples.KafkaProducer xxx.xxx.xxx.xxx:21005,xxx.xxx.xxx.xxx:21005,xxx.xxx.xxx.xxx:21005 mytopic 10
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全