华为云用户手册

  • 解决方案 本章节介绍如何通过AppStage运维中心完成对业务实时数据的接入、处理、开发与应用。 图1 数据开发与应用流程 数据接入 AppStage运维中心支持接入虚拟机日志和容器日志,您可以根据日志类型选择日志接入方式。 虚拟机日志接入:通过日志配置下发任务部署filebeat,并根据日志采集配置设置,通过filebeat采集虚拟机上的业务日志。 容器日志接入:安装daemonset插件,通过daemonset实现容器日志接入。 数据处理 数据清洗:采集日志时,可以使用清洗算子的方式得到JSON格式数据 数据汇聚:当日志量较大且不需要关注原始日志时可以对实时日志进行日志汇聚。 数据开发 可以使用存入数据库中的数据进行报表开发、实时监控或者异常告警等应用,可以直接写SQL,但是不同数据源写SQL的方式有差异,且有一定难度,AppStage支持使用运维数仓的方式,会自动根据不同数据源生成对应的SQL。 创建逻辑主体:使用运维数仓时首先需要创建逻辑主体。 创建指标:逻辑主体创建成功后,需要创建数据指标。 创建视图:为需要计算的指标创建查询视图,也可以在查询视图的基础上创建持久化视图或长期存储视图。 数据应用 使用报表对业务进行实时监控:使用运维数仓中的指标或视图创建业务报表,实时监控业务数据。 通过日志检索进行问题定位:对已接入的实时日志进行检索定位业务异常问题。 数据异常告警:支持通过异常检测上报告警和配置虚拟机异常告警,根据业务需要进行配置。
  • 背景信息 随着业务数量增多,业务的数据开发需求也逐渐增多, 数据开发人员不能快速支撑业务的开发需求,了解业务的人员设计和开发业务的数据资产可以使数据发挥最大价值,因此需要业务人员来主导业务的数据治理开发工作。 数据治理的核心就是管理好业务的数据资产,随着业务特性和业务复杂度快速增长,面临的不再是无数据的时代,面临的问题是如何在数据世界中获取到准确且有价值的信息,例如同一个指标在不同的应用场景,哪个才是准确的?这么多数据我的业务监控是否都覆盖了?以及是否有无价值和未合理使用的数据等,因此如何有效管理数据资产成了当前重点关注的问题。
  • 步骤二:创建团队 在开发中心进行服务开发前,需要组织管理员创建一个团队,将团队关联需要开发的服务。一个团队只能归属一个部门,可以关联一个或多个服务。 在开发中心工作台首页下方的“我的团队”区域,单击右侧“创建团队”。 在“创建团队”页面,设置团队相关参数,参数配置请参见表1。 表1 创建团队参数说明 参数名称 参数说明 团队名称 必填项,团队的命名。 团队归属部门 必填项,选择系统中已提前创建的部门,部门的创建方法请参见部门管理。 关联服务 必填项,选择系统中已提前创建的服务,服务创建方法请参见服务管理。 团队LOGO 必填项,单击系统默认图片上的“点击修改”,可选择本地图片自定义LOGO图片。 团队简介(可选) 非必填项,团队空间的功能描述或其他备注信息。 单击“创建”。 在“我的团队”区域可查看到创建的团队的卡片。
  • 步骤一:添加开发中心用户 开发中心的用户数根据购买规格有相应的用户数量限制,组织管理员通过用户的添加或删除来合理管理开发中心的使用人员。 在开发中心工作台首页右上角单击“用户管理”。 在“用户管理”页面,单击右上角“添加用户”。 在“添加用户”页面的“可选用户”区域框中勾选一个或多个用户名,单击,选中的用户显示现在“已选用户”区域框。 单击“确定”,新添加的用户显示在用户列表中。 在用户列表中,可查看已添加的用户账号名、添加人及添加时间等信息。
  • 步骤四:创建日志配置下发任务 在“虚拟机日志接入”页面,选择左侧导航栏的“任务管理”。 单击页面右上角的“新建任务”。 配置任务参数,参数说明如表5所示,配置完成后,单击“确定”。 表5 日志配置下发任务参数说明 参数名称 参数说明 日志项目 选择已创建的日志项目。 任务名称 自定义任务名称。 任务类型 选择任务类型。 配置类型 选择日志采集配置类型。 配置列表 选择需要下发的配置。 用户名称 选择已规划并拥有日志读取权限的业务账号。 选择主机 选择需要下发配置的主机。 已选主机 显示已选主机。 在任务列表中查看已创建的任务,单击任务所在行“操作”列的“执行”。 执行完成后,状态为成功即表示日志配置内容已下发成功,即会按照配置将日志接入AppStage。
  • 步骤三:创建日志采集配置 在“虚拟机日志接入”页面,选择左侧导航栏的“日志采集配置”。 单击“创建日志采集配置”。 配置日志采集参数,配置完成后,单击“确定”。 新创建的采集配置默认为草稿状态,展示在“草稿”页签下,当配置被微服务使用后,状态会更新为“已下发”,并展示到“已下发”页签下。 表4 日志采集配置参数说明 参数名称 参数说明 日志项目 选择已创建的日志项目,相同服务的不同日志使用同一个日志项目 日志空间 选择已创建的日志空间。选择日志空间时日志提取规则会展示日志空间定义的日志格式,采集的日志须满足对应格式。 配置名称 自定义日志采集配置名称。 配置类型 选择日志采集配置类型,建议选择“FILEBEAT”。 日志类型 输入采集日志类型。 日志路径 填写实际日志路径,可使用通配符进行匹配。 说明: 接入容器日志需要根据通配符匹配完成。 注意避免同一台主机上下发的多个采集任务重复采集相同的日志文件,会导致filebeat进程异常。 日志TPS TPS表示单实例每秒日志条数,请准确填写,用于推荐资源自动计算。 如果采集路径是单个日志,则按照单个日志单台机器(pod)的TPS值填写,且按照高峰期计算。 如果采集路径配置了通配符,则将采集的日志TPS累加,累加计算高峰期单台机器(pod)的TPS,建议按近期业务增长预期填写。 日志模式 选择日志采集模式,是单行模式还是多行模式。 是否支持软连接 当填写的日志路径为链接路径时,需要开启支持软连接。 首行正则表达式 日志模式选择多行模式时,需要输入首行正则表达式。 日志提取规则 根据填写的配置参数会自动生成提取规则。
  • 步骤二:创建日志空间 在“虚拟机日志接入”页面,选择左侧导航栏的“日志空间”。 单击“申请实时日志空间”。 根据界面提示填写日志空间参数。 配置实时日志空间信息,参数说明如表2所示,配置完成后,单击“下一步”。 表2 实时日志空间信息参数说明 参数名称 参数说明 空间名称 自定义日志空间名称,建议包含日志类型语义。 空间描述 输入日志空间描述,非必填项。 日志类型 选择需接入的日志类型。 日志大小 预计一天的日志量,默认为1GB。 开启日志检索 如果需要使用日志检索功能,可以打开该开关。 检索空间类型 选择ClickHouse。 原索引名称(ClickHouse) 可选择现有的ClickHouse,如果不填会自动生成。 TTL 日志索引的生命周期,即可以检索的日志时间范围。 配置实时日志字段信息,参数说明如表3所示,配置完成后,单击“下一步”。 表3 实时日志字段信息参数说明 参数名称 参数说明 自定义字段 必须接入的日志字段已默认勾选,可以勾选其他需要接入的日志字段,包括通用字段、容器字段和虚机字段。 新增自定义环境变量 如需添加自定义环境变量,请选择环境变量名,然后单击“添加”。虚机暂无可选自定义环境变量。 清洗规则 选择日志清洗规则。 请优先使用算子清洗模式采样,原始日志采样清洗只适用于单纯采样,不需要清洗的场景。 日志样例 输入日志样例。 解析脚本 配置解析脚本,将日志样例清洗为字段显示。 说明: 配置解析脚本时字段命名不支持使用中划线“-”,支持使用下划线“_”。 清洗字段 配置解析脚本后单击“配置解析脚本”,自动生成清洗字段,查看字段是否符合预期。 开启汇聚 选择是否开启日志汇集,如果日志量较大且不需要关注原始日志时可以进行日志汇集。 开启后需要配置汇集相关参数。 汇聚粒度 开启汇聚后,需要设置汇集粒度。支持分钟级和秒级数据汇聚。选择分钟级,每一分钟会生成一个统计点,选择秒级,每一秒会生成一个统计点。 汇聚时间戳 仅支持时间戳格式字段timestamp,获取当前计算的日志的时间。 时间戳格式 选择时间戳格式。支持秒、毫秒、纳秒级时间戳,获取当前计算的日志的时间格式。 汇聚维度 结合业务场景需要,选择日志是以哪些日志字段进行日志汇聚,支持多选。 汇聚度量 设置对日志字段以COUNT、SUM、MAX、MIN进行度量。 原始字段是日志中的字段,用来获取原始值;度量字段是用户自定义字段名,计算后,度量的值会赋值给该字段。 输出原始日志 选择是否需要输出原始日志。如果打开输出原始日志,原始日志也会上报。 日志字段确认,确认日志字段配置是否达到预期,达到预期后可单击“下一步”。 其中字段来源COMMON表示通用字段、CONTAINER表示容器字段、VM表示虚机字段。 申请日志空间共享,如果需要其他自有服务共用这个空间进行日志下发和日志检索,可以添加共享服务。配置完成后,单击“保存”。
  • 使用SSH协议在Git Bash客户端克隆代码 本节内容指导如何使用Git Bash客户端克隆代码托管服务的仓库到本地环境中。 下载并安装Git Bash客户端。 设置SSH密钥。 获取仓库地址。 在仓库主页中,单击“克隆/下载”按钮,获取SSH地址,通过这个地址,可以在本地计算机连接代码托管仓库。 如果您未配置SSH密钥,你可单击上图中“SSH密钥管理”链接进行配置,详情请参考SSH密钥。 您可在代码托管服务仓库列表中“仓库地址”下获取SSH地址。 打开Git Bash客户端。 在本地计算机上新建一个文件夹用于存放代码仓库,在空白处单击鼠标右键,打开Git Bash客户端。 克隆仓库时会自动初始化,无需执行init命令。 输入如下命令,克隆代码托管仓库。 git clone 仓库地址 命令中“仓库地址”即3中获取的SSH地址。 如果您是第一次克隆仓库,会询问您是否信任远程仓库,输入“yes”即可。 执行成功后,您会看到多出一个与您在代码托管服务新建的仓库同名的文件夹,并且其中有一个隐藏的.git文件夹,则说明克隆仓库成功。 此时您位于仓库上层目录,执行如下命令,进入仓库目录。 cd 仓库名称 进入仓库目录,可以看到此时Git默认为您定位到master分支。 客户端在git clone代码仓库时失败的原因排查: 确保您的网络可以访问代码托管服务。 请在git客户端使用如下测试命令验证网络连通性(其中“**********.com”为代码仓库地址)。 ssh -vT git@**********.com 如果返回内容含有“Could not resolve hostname **********.com: Name or service not known”,则您的网络被限制,无法访问代码托管服务,请求助您本地所属网络管理员。 请检查建立的SSH密钥配对关系,必要时重新生成密钥并到代码托管控制台进行配置。 只有开启IP白名单的机器才可以在Git客户端克隆。
  • 使用SSH协议在TortoiseGit客户端克隆代码 本节内容指导如何使用TortoiseGit客户端克隆代码托管服务的仓库到本地环境中。 下载并安装TortoiseGit客户端。 获取仓库地址。 在仓库主页中,单击“克隆/下载”按钮,获取SSH地址,通过这个地址,可以在本地计算机连接代码托管仓库。 您可在代码托管服务仓库列表中“仓库地址”下获取SSH地址。 进入您的本地仓库目录下,右键选择“Git克隆”菜单选项,如下图所示。 在弹出的窗口中将上述复制的SSH地址粘贴到URL输入框中,勾选“加载Putty密钥”并选择私钥文件,最后单击“确定”,如下图所示。 单击“确定”之后即开始克隆仓库,如果您是第一次克隆TortoiseGit客户端会询问您是否信任远程仓库,单击“是”即可。 克隆用时受仓库大小影响,克隆的动作如下图所示。
  • 步骤二:下载代码 下载代码是AppStage集成代码托管CodeArts Repo服务的能力,基于Git的代码托管服务,支持将仓库文件下载到本地进行文件的操作。该操作需要具备开发人员角色权限,权限申请方法请参见申请权限。 在开发中心左侧导航栏,选择“代码仓管理”。首次将仓库克隆/下载到本地的方式主要分为以下三种: 使用SSH协议克隆代码托管仓库到本地。 使用HTTPS协议克隆代码托管仓库到本地。 从浏览器下载代码包。
  • 步骤五:安装daemonset插件 在“容器日志接入”页面,选择左侧导航栏的“集群插件管理”。 在集群列表中单击待安装插件的集群所在行“操作”列的“安装插件”。 在“插件安装”页面配置安装参数,具体内容如下所示,配置完成后,单击“确定”。 输入日志挂载路径:主机日志hostpath挂载目录,需要设置为单独的文件路径,不能设置为类似于/root、/home等包含有其他文件的目录,并且一个集群只能设置一个挂载路径。 选择主机:选择待安装插件的主机,默认全部勾选进行安装,可以去掉勾选不需要安装插件的主机,且当主机状态为“Active”时才可以正常安装插件。 选择日志配置组:选择日志配置组,安装插件并下发配置。
  • 步骤二:创建日志空间 在“容器日志接入”页面,选择左侧导航栏的“日志空间”。 单击“申请实时日志空间”。 根据界面提示填写日志空间参数。 配置实时日志空间信息,参数说明如表2所示,配置完成后,单击“下一步”。 表2 实时日志空间信息参数说明 参数名称 参数说明 空间名称 自定义日志空间名称,建议包含日志类型语义。 空间描述 输入日志空间描述,非必填项。 日志类型 选择需接入的日志类型。 日志大小 预计一天的日志量,默认为1GB。 开启日志检索 如果需要使用日志检索功能,可以打开该开关。 检索空间类型 选择ClickHouse。 原索引名称(ClickHouse) 可选择现有的ClickHouse,如果不填会自动生成。 TTL 日志索引的生命周期,即可以检索的日志时间范围。 配置实时日志字段信息,参数说明如表3所示,配置完成后,单击“下一步”。 表3 实时日志字段信息参数说明 参数名称 参数说明 自定义字段 必须接入的日志字段已默认勾选,可以勾选其他需要接入的日志字段,包括通用字段、容器字段和虚机字段。 新增自定义环境变量 如需添加自定义环境变量,请选择环境变量名,然后单击“添加”。虚机暂无可选自定义环境变量。 清洗规则 选择日志清洗规则。 请优先使用算子清洗模式采样,原始日志采样清洗只适用于单纯采样,不需要清洗的场景。 日志样例 输入日志样例。 解析脚本 配置解析脚本,将日志样例清洗为字段显示。 解析脚本中不支持使用中划线“-”,支持使用下划线“_”。 清洗字段 配置解析脚本后单击“配置解析脚本”,自动生成清洗字段,查看字段是否符合预期。 开启汇聚 选择是否开启日志汇集,如果日志量较大且不需要关注原始日志时可以进行日志汇集。 开启后需要配置汇集相关参数。 汇聚粒度 开启汇聚后,需要设置汇集粒度。支持分钟级和秒级数据汇聚。选择分钟级,每一分钟会生成一个统计点,选择秒级,每一秒会生成一个统计点。 汇聚时间戳 仅支持时间戳格式字段timestamp,获取当前计算的日志的时间。 时间戳格式 选择时间戳格式。支持秒、毫秒、纳秒级时间戳,获取当前计算的日志的时间格式。 汇聚维度 结合业务场景需要,选择日志是以哪些日志字段进行日志汇聚,支持多选。 汇聚度量 设置对日志字段以COUNT、SUM、MAX、MIN进行度量。 原始字段是日志中的字段,用来获取原始值;度量字段是用户自定义字段名,计算后,度量的值会赋值给该字段。 输出原始日志 选择是否需要输出原始日志。如果打开输出原始日志,原始日志也会上报。 日志字段确认,确认日志字段配置是否达到预期,已达到预期,单击“下一步”。 其中字段来源COMMON表示通用字段、CONTAINER表示容器字段、VM表示虚机字段。 申请日志空间共享,如果需要其他自有服务共用这个空间进行日志下发和日志检索,可以添加共享服务。配置完成后,单击“保存”。
  • 步骤三:创建日志采集配置 在“容器日志接入”页面,选择左侧导航栏的“日志采集配置”。 单击“创建日志采集配置”。 配置日志采集参数,配置完成后,单击“确定”。 新创建的采集配置默认为草稿状态,展示在“草稿”页签下,当配置被微服务使用后,状态会更新为“已下发”,并展示到“已下发”页签下。 表4 日志采集配置参数说明 参数名称 参数说明 日志项目 选择已创建的日志项目,相同服务的不同日志使用同一个日志项目 日志空间 选择已创建的日志空间。选择日志空间时日志提取规则会展示日志空间定义的日志格式,采集的日志须满足对应格式。 配置名称 自定义日志采集配置名称。 配置类型 选择日志采集配置类型,建议选择“FILEBEAT”。 日志类型 输入采集日志类型。 日志路径 填写实际日志路径,可使用通配符进行匹配。 说明: 注意避免同一台主机上下发的多个采集任务重复采集相同的日志文件,会导致filebeat进程异常。 日志TPS TPS表示单实例每秒日志条数,请准确填写,用于推荐资源自动计算。 日志模式 选择日志采集模式,是单行模式还是多行模式。 是否支持软连接 当填写的日志路径为链接路径时,需要开启支持软连接。 首行正则表达式 日志模式选择多行模式时,需要输入首行正则表达式。 日志提取规则 根据填写的配置参数会自动生成提取规则。
  • 步骤四:创建日志配置组 在“容器日志接入”页面,选择左侧导航栏的“日志配置组”。 单击“创建日志配置组”。 设置日志配置组参数,参数说明如表5所示,配置完成后,单击“确定”。 表5 日志配置组参数说明 参数名称 参数说明 日志配置组名称 自定义日志配置组名称。 安装方式 选择安装方式,推荐使用“DEAMONSET”。 命名空间 当安装方式为“DEAMONSET”时,需要配置服务日志命名空间,即服务日志在主机上的挂载目录,可以自定义,推荐使用服务英文名称(在租户管理页面查看)。 日志项目 选择已创建的日志项目。 配置类型 选择配置类型,即创建日志采集配置时选择的配置类型,根据配置类型会过滤采集配置列表中的数据。 采集配置列表 选择需要下发的配置。
  • 解决方案 本文将以Spring Cloud Demo项目为例,带您体验使用AppStage的开发中心、运维中心及运行时引擎进行工程创建、代码开发、打包发布、部署上线的全过程。 图1 应用上云流程 工程创建 创建产品/服务/微服务信息:企业资源接入AppStage前,需要先将企业产品/服务/微服务信息录入AppStage系统中,信息录入成功后,AppStage将同步产品/服务/微服务信息至AppStage的开发中心、运维中心等各个中心。 添加开发中心用户:开发中心的用户数根据购买规格有相应的用户数量限制,组织管理员通过用户的添加或删除来合理管理开发中心的使用人员。 创建团队:在开发中心进行服务开发前,需要组织管理员先创建一个团队,将团队关联需要开发的服务。 配置服务信息:将团队关联服务后,还需将团队关联的服务关联CodeArts项目,后续的服务开发管理过程中才能正常使用CodeArts服务的代码托管、流水线、编译构建功能。 添加团队成员:在团队多用户协作开发过程中,不同角色成员执行各自权限和责任事项,因此需要在团队中添加协作开发的各角色成员(项目经理、开发人员、测试人员等),实现统一有序的成员信息管理。 创建版本:为服务创建版本,进而在版本管理活动中进行流水线和发布流程等有序开发和特定发布过程管理。 代码开发 创建代码仓库:开发人员进行代码开发前,需要先创建代码仓库用于托管代码。本实践中使用代码托管 CodeArts Repo服务提供的模板创建,适用于本地没有仓库,希望按模板初始化一个仓库的场景。 下载代码到本地:开发人员进行代码文件的操作前,需要使用Git Bash客户端和TortoiseGit客户端下载代码仓库文件到本地环境中。 开发业务代码和编写IaC脚本:开发人员在本地开发业务代码以及IaC部署脚本。 提交代码到代码仓库:开发人员在本地完成业务代码和IaC脚本后,需要提交代码文件至代码仓库。 打包发布 创建/配置/执行流水线:通过流水线配置代码打包发布的编译构建自动化任务(包括添加业务包构建、IaC自动部署包构建任务),对这些自动化任务进行自定义编排后,一次配置后即可一键自动化触发调度执行,最终生成代码构建产物。 发布流水线构建的包到运维中心:版本开发及编译构建完成,且发布准入检查项均通过后,将版本软件包发布到运维中心的软件仓库。 部署上线 安装部署软件包:完成环境准备,并将发布在运维中心的软件包进行安装部署。 业务验证:软件包部署完成后,验证是否部署成功。
  • 背景信息 Spring Cloud为微服务开发提供了一套完整的解决方案,大幅简化了分布式系统中基础设施如服务发现与注册、配置管理、负载均衡、数据监控以及分布式调用链等的开发工作。通过Spring Cloud提供的简易框架,开发者能够基于Spring Boot轻松实现微服务项目的构建。 然而,除了开发阶段的便捷性外,我们还需要关注应用的部署、运维和监控等方面,以确保微服务应用在生产环境中的稳定性和性能。应用平台(AppStage)是基于平台工程理念打造的下一代应用全生命周期管理平台,帮助客户快速高效地实现应用全生命周期管理,为应用构建、运维和运营等生命周期管理活动提供自助式服务能力。 原生Spring Cloud应用仅需引入AppStage组件依赖并进行简单配置,即可轻松接入AppStage。接入后,用户即可体验到平台所提供的丰富功能,如服务注册与发现、智能运维、应用监控、服务治理、应用运营等。
  • 操作步骤 安全模式下,请先进行安全认证,参见准备Linux客户端环境。 提交拓扑。以wordcount为例,其它拓扑请参照相关开发指引。进入Storm客户端目录“storm-0.10.0/bin”,执行命令:storm jar /opt/jartarget/storm-examples-1.0.jar com.huawei.storm.example.wordcount.WordCountTopology。 执行storm list命令,查看已经提交的应用程序,如果发现名称为word-count的应用程序,则说明任务提交成功。 如果业务设置为本地模式,且使用命令行方式提交时,请确保提交环境为普通模式环境,当前不支持安全环境下使用命令提交本地模式的业务。
  • 问题 Flink内核升级到1.3.0之后,当kafka调用带有非static的KafkaPartitioner类对象为参数的FlinkKafkaProducer010去构造函数时,运行时会报错。 报错内容如下: org.apache.flink.api.common.InvalidProgramException: The implementation of the FlinkKafkaPartitioner is not serializable. The object probably contains or references non serializable fields.
  • 回答 可通过如下两种方式处理: 在代码的SparkConf初始化之前执行以下两行代码: System.setProperty("spark.serializer", "org.apache.spark.serializer.KryoSerializer"); System.setProperty("spark.kryo.registrator", "com.huawei.bigdata.spark.examples.MyRegistrator"); 在SparkConf对象使用set方法设置,代码如下: val conf = new SparkConf().setAppName("HbaseTest"); conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer"); conf.set("spark.kryo.registrator", "com.huawei.bigdata.spark.examples.MyRegistrator");
  • 样例代码 -- 从本地文件系统/opt/hive_examples_data/目录下将employee_info.txt加载进employees_info表中. LOAD DATA LOCAL INPATH '/opt/hive_examples_data/employee_info.txt' OVERWRITE INTO TABLE employees_info; -- 从HDFS上/user/hive_examples_data/employee_info.txt加载进employees_info表中. LOAD DATA INPATH '/user/hive_examples_data/employee_info.txt' OVERWRITE INTO TABLE employees_info; 加载数据的实质是将数据拷贝到HDFS上指定表的目录下。 “LOAD DATA LOCAL INPATH”命令可以完成从本地文件系统加载文件到Hive的需求,但是当指定“LOCAL”时,这里的路径指的是当前连接的“HiveServer”的本地文件系统的路径,同时由于当前的“HiveServer”是集群式部署的,客户端在连接时是随机连接所有“HiveServer”中的一个,需要注意当前连接的“HiveServer”的本地文件系统中是否存在需要加载的文件。在无法确定当前连接的是哪一个“HiveServer”的情况下建议在所有的“HiveServer”对应路径下放置相应文件,并注意文件的权限是否正确。
  • Savepoints相关问题解决方案 用户必须为job中的所有算子均分配ID吗? 严格的说,用户只给有状态的算子分配IDs即可,因为在savepoint中仅包括有状态的算子的状态,没有状态的算子并不包含在savepoint中。 在实际应用中,强烈建议用户给所有的算子均分配ID,因为有些Flink的内置算子,如window算子是有状态的。具体哪个算子是有状态的,哪个算子是无状态的,不是十分明显。如果用户十分确定某个算子是无状态的,该算子可以不调用uid()方法分配ID。 如果用户在升级作业时新添加一个有状态的算子有什么影响? 当用户在作业中新添加一个有状态的算子时,由于该算子是新添加的,无保存的旧状态,因此无状态恢复,从0开始运行。 如果用户在升级作业时从作业中删除一个有状态的算子有什么影响? 默认情况下,savepoint会尝试将所有保存的状态恢复。如果用户使用的savepoint中包含已经删除算子的状态,恢复将会失败。 用户可以通过--allowNonRestoredState(简写为-n)参数跳过恢复已经删除的算子的状态: $ bin/flink run -s savepointPath -n [runArgs] 如果用户重新编排有状态的算子的顺序有什么影响? 如果用户已经给这些算子分配IDs,那么这些状态会正常恢复。 如果用户没有给这些算子分配IDs, 这些算子将会按新的顺序自动分配新的ID,这将导致状态恢复失败。 如果用户在作业中删除或添加或更改无状态算子的顺序有什么影响? 如果用户已经给有状态的算子分配ID,那么无状态的算子并不会影响从savepoint进行状态恢复。 如果用户没有分配IDs,有状态算子的IDs由于顺序变化可能会被分配新的IDs,这将导致状态恢复失败。 如果用户在状态恢复时改变了算子的并发度会有什么影响? 如果Flink版本高于1.2.0且不使用已经废弃的状态API,如checkpointed,用户可以从savepoint中进行状态恢复。否则,无法恢复。 父主题: Flink应用开发常见问题
  • 功能简介 HBase通过org.apache.hadoop.hbase.client.Admin对象的createTable方法来创建表,并指定表名、列族名。创建表有两种方式,建议采用预分Region建表方式: 快速建表,即创建表后整张表只有一个Region,随着数据量的增加会自动分裂成多个Region。 预分Region建表,即创建表时预先分配多个Region,此种方法建表可以提高写入大量数据初期的数据写入速度。 表的列名以及列族名不能包含特殊字符,可以由字母、数字以及下划线组成。
  • 代码样例 以下代码片段在com.huawei.bigdata.hbase.examples包的“HBaseExample”类的testCreateTable方法中 public void testCreateTable() { LOG.info("Entering testCreateTable: " + tableName); // Set the column family name to info. byte [] fam = Bytes.toBytes("info"); ColumnFamilyDescriptor familyDescriptor = ColumnFamilyDescriptorBuilder.newBuilder(fam) // Set data encoding methods. HBase provides DIFF,FAST_DIFF,PREFIX // HBase 2.0 removed `PREFIX_TREE` Data Block Encoding from column families. .setDataBlockEncoding(DataBlockEncoding.FAST_DIFF) // Set compression methods, HBase provides two default compression // methods:GZ and SNAPPY // GZ has the highest compression rate,but low compression and // decompression effeciency,fit for cold data // SNAPPY has low compression rate, but high compression and // decompression effeciency,fit for hot data. // it is advised to use SANPPY .setCompressionType(Compression.Algorithm.SNAPPY) .build(); TableDescriptor htd = TableDescriptorBuilder.newBuilder(tableName).setColumnFamily(familyDescriptor).build(); Admin admin = null; try { // Instantiate an Admin object. admin = conn.getAdmin(); if (!admin.tableExists(tableName)) { LOG.info("Creating table..."); admin.createTable(htd); LOG.info(admin.getClusterMetrics()); LOG.info(admin.listNamespaceDescriptors()); LOG.info("Table created successfully."); } else { LOG.warn("table already exists"); } } catch (IOException e) { LOG.error("Create table failed.", e); } finally { if (admin != null) { try { // Close the Admin object. admin.close(); } catch (IOException e) { LOG.error("Failed to close admin ", e); } } } LOG.info("Exiting testCreateTable."); }
  • 扫描OpenTSDB的指标数据 tsdb命令可以使用“tsdb query”命令批量查询导入的指标数据,例如执行tsdb query 0 1h-ago sum sys.cpu.user host=web01命令。 Start run net.opentsdb.tools.CliQuery, args: 0 1h-ago sum sys.cpu.user host=web01 sys.cpu.user 1356998400000 41 {host=web01, cpu=0} sys.cpu.user 1356998401000 42 {host=web01, cpu=0} sys.cpu.user 1356998402000 44 {host=web01, cpu=0} sys.cpu.user 1356998403000 47 {host=web01, cpu=0} sys.cpu.user 1356998404000 42 {host=web01, cpu=0} sys.cpu.user 1356998405000 42 {host=web01, cpu=0}
  • 在Linux中调测Phoenix样例 在linux环境中调测Phoenix样例,需有与集群环境网络相通的ECS,详情请参见准备本地应用开发环境。 修改样例。将样例代码TestMain中“enablePhoenix”值改为“true”,开启调用Phoenix样例程序接口。 /** * Phoenix Example * if you would like to operate hbase by SQL, please enable it, * and you can refrence the url ("https://support.huaweicloud.com/devg-mrs/mrs_06_0041.html"). * step: * 1.login * 2.operate hbase by phoenix. */ boolean enablePhoenix = false; if (enablePhoenix) { PhoenixExample phoenixExample; try { phoenixExample = new PhoenixExample(conf); phoenixExample.testSQL(); } catch (Exception e) { LOG.error("Failed to run Phoenix Example, because ", e); } } 执行mvn package生成jar包,在工程目录target目录下获取,比如:hbase-examples-mrs-2.0.jar,将获取的包上传到/opt/client/Hbase/hbase/lib目录下。 执行Jar包。 在Linux客户端下执行Jar包的时候,需要用安装用户切换到客户端目录: cd $BIGDATA_CLIENT_HOME/HBase/hbase “$BIGDATA_CLIENT_HOME”指的是客户端安装目录。 然后执行: source $BIGDATA_CLIENT_HOME/bigdata_env 将HBase Phoenix API接口介绍解压后获取其中的phoenix-hbase和phoenix-core包和“htrace-core-3.1.0-incubating.jar”包拷贝到“/opt/client/HBase/hbase/lib”下。 将2中生成的Jar包和从3.2.2-准备开发用户中获取的krb5.conf和user.keytab文件拷贝上传至客户端运行环境的Hbase/hbase/conf目录下,例如“/opt/client/HBase/hbase/conf”。然后在“/opt/client/HBase/hbase/conf”目录下创建hbaseclient.properties文件,文件中user.name对应新建的用户hbaseuser,userKeytabName和krb5ConfName值对应从3.2.2-准备开发用户中获取的认证相关文件名称,如下(未开启Kerberos认证集群可跳过此步): user.name=hbaseuser userKeytabName=user.keytab krb5ConfName=krb5.conf 执行jar包程序。 hbase com.huawei.bigdata.hbase.examples.TestMain /opt/client/HBase/hbase/conf 其中,com.huawei.bigdata.hbase.examples.TestMain为举例,具体以实际样例代码为准。 “/opt/client/HBase/hbase/conf”对应于上述中user.keytab、krb5.conf等文件路径。 若运行报“Message stream modified (41)”的错误,这可能与JDK的版本有关系,可以尝试修改运行样例代码的JDK为8u_242以下版本或删除“krb5.conf”配置文件的“renew_lifetime = 0m”配置项。 phoenix应用程序运行完成后,可直接通过运行结果查看应用程序运行情况。 2020-03-14 16:20:40,192 INFO [main] client.HBaseAdmin: Operation: CREATE, Table Name: default:TEST, procId: 923 completed 2020-03-14 16:20:40,806 INFO [main] examples.PhoenixExample: 1 2020-03-14 16:20:40,807 INFO [main] examples.PhoenixExample: John 2020-03-14 16:20:40,807 INFO [main] examples.PhoenixExample: 100000 2020-03-14 16:20:40,807 INFO [main] examples.PhoenixExample: 1980-01-01 2020-03-14 16:20:40,830 INFO [main] client.HBaseAdmin: Started disable of TEST 2020-03-14 16:20:41,574 INFO [main] client.HBaseAdmin: Operation: DISABLE, Table Name: default:TEST, procId: 925 completed 2020-03-14 16:20:41,831 INFO [main] client.HBaseAdmin: Operation: DELETE, Table Name: default:TEST, procId: 927 completed
  • 代码样例 下面代码片段在com.huawei.storm.example.common.RandomSentenceSpout类中,作用在于将收到的字符串拆分成单词。 /** * {@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)); }
  • MapReduce应用开发简介 Hadoop MapReduce是一个使用简易的并行计算软件框架,基于它写出来的应用程序能够运行在由上千个服务器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。 一个MapReduce作业(application/job)通常会把输入的数据集切分为若干独立的数据块,由map任务(task)以完全并行的方式来处理。框架会对map的输出先进行排序,然后把结果输入给reduce任务,最后返回给客户端。通常作业的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和监控,以及重新执行已经失败的任务。 MapReduce主要特点如下: 大规模并行计算 适用于大型数据集 高容错性和高可靠性 合理的资源调度 父主题: MapReduce应用开发概述
  • 代码样例 如下是实例化FileSystem的代码片段,详细代码请参考com.huawei.bigdata.hdfs.examples中的HdfsMain类。 /** * * Add configuration file if the application run on the linux ,then need make * the path of the core-site.xml and hdfs-site.xml to in the linux client file * */ private void confLoad() throws IOException { conf = new Configuration(); // conf file conf.addResource(new Path(PATH_TO_HDFS_SITE_XML)); conf.addResource(new Path(PATH_TO_CORE_SITE_XML)); conf.set("fs.obs.access.key","*** Provide your Access Key ***"); conf.set("fs.obs.secret.key","*** Provide your Secret Key ***"); } /** * build HDFS instance */ private void instanceBuild() throws IOException { // get filesystem // fSystem = FileSystem.get(conf); fSystem = FileSystem.get(URI.create("obs://[BuketName]"),conf); }
  • HDFS应用开发流程介绍 开发流程中各阶段的说明如图1和表1所示。 图1 HDFS应用程序开发流程 表1 HDFS应用开发的流程说明 阶段 说明 参考文档 了解基本概念 在开始开发应用前,需要了解HDFS的基本概念。 HDFS应用开发常用概念 准备开发环境 使用Eclipse工具,请根据指导完成开发环境配置。 准备Eclipse与JDK 准备运行环境 HDFS的运行环境即HDFS客户端,请根据指导完成客户端的安装和配置。 准备HDFS应用运行环境 下载并导入样例工程 HDFS提供了不同场景下的样例程序,可以导入样例工程进行程序学习。 导入并配置HDFS样例工程 根据场景开发工程 提供样例工程,帮助用户快速了解HDFS各部件的编程接口。 HDFS样例程序开发思路 编译并运行程序 指导用户将开发好的程序编译并提交运行。 Linux:在Linux环境中调测HDFS应用 查看程序运行结果 程序运行结果会写在用户指定的路径下。用户还可以通过UI查看应用运行情况。 Linux:查看HDFS应用调测结果 父主题: HDFS应用开发概述
  • Alluxio开发环境简介 在进行应用开发时,要准备的本地开发环境如表1所示。同时需要准备运行调测的Linux环境,用于验证应用程序运行是否正常。 表1 开发环境 准备项 说明 操作系统 开发环境:Windows系统,推荐Windows7以上版本。 运行环境:Linux系统。 安装JDK和Maven 开发环境的基本配置:Java JDK 8或以上、Maven 3.3.9或以上 安装和配置Eclipse或IntelliJ IDEA 用于开发Alluxio应用程序的工具。 网络 确保客户端与Alluxio服务主机在网络上互通。 父主题: 准备Alluxio应用开发环境
共100000条