云服务器内容精选

  • 数据清洗说明 在做日志接入创建日志空间时可以配置算子清洗策略完成日志数据清洗,如图2所示,算子清洗功能及使用样例请参见算子清洗功能介绍。 图2 算子清洗 清洗规则:选择“算子清洗”。 日志样例:使用典型日志,用来做清洗验证。 解析脚本:配置解析脚本,将日志样例清洗为字段显示。解析脚本中不支持使用中划线,支持使用下划线。 清洗字段:配置解析脚本后单击“配置解析脚本”,自动生成清洗自动,查看字段是否符合预期。
  • 解决方案 本章节介绍如何通过AppStage运维中心完成对业务实时数据的接入、处理、开发与应用。 图1 数据开发与应用流程 数据接入 AppStage运维中心支持接入虚拟机日志和容器日志,您可以根据日志类型选择日志接入方式。 虚拟机日志接入:通过日志配置下发任务部署filebeat,并根据日志采集配置设置,通过filebeat采集虚拟机上的业务日志。 容器日志接入:安装daemonset插件,通过daemonset实现容器日志接入。 (可选)如果需要将原始日志转化为JSON格式,可以在日志接入时选择算子清洗方式对日志数据做清洗,数据清洗如数据清洗说明所示。 数据导流 接入的日志数据存在于对应的Topic中,需要创建导流任务,将数据存储在对应的数据库中才能进行日志检索、日志数据的管理和后续开发。 (可选)数据汇聚:当日志量较大且不需要关注原始日志时可以对实时日志进行日志汇聚。 数据开发 可以使用存入数据库中的数据进行报表开发、实时监控或者异常告警等应用,可以直接写SQL,但是不同数据源写SQL的方式有差异,且有一定难度,AppStage支持使用运维数仓的方式,会自动根据不同数据源生成对应的SQL。 创建逻辑主体:使用运维数仓时首先需要创建逻辑主体。 创建指标:逻辑主体创建成功后,需要创建数据指标。 (可选)创建视图:为需要计算的指标创建查询视图,也可以在查询视图的基础上创建持久化视图或长期存储视图。 数据应用 使用报表对业务进行实时监控:使用运维数仓中的指标或视图创建业务报表,实时监控业务数据。 通过日志检索进行问题定位:日志接入并创建导流任务后,可以对已接入的日志进行检索,定位业务异常问题。 数据异常告警:支持通过异常检测上报告警和配置虚拟机异常告警,根据业务需要进行配置。
  • 背景信息 随着业务数量增多,业务的数据开发需求也逐渐增多, 数据开发人员不能快速支撑业务的开发需求,了解业务的人员设计和开发业务的数据资产可以使数据发挥最大价值,因此需要业务人员来主导业务的 数据治理 开发工作。 数据治理的核心就是管理好业务的数据资产,随着业务特性和业务复杂度快速增长,面临的不再是无数据的时代,面临的问题是如何在数据世界中获取到准确且有价值的信息,例如同一个指标在不同的应用场景,哪个才是准确的?这么多数据我的业务监控是否都覆盖了?以及是否有无价值和未合理使用的数据等,因此如何有效管理数据资产成了当前重点关注的问题。
  • 更多操作 您还可以对 CSS 进行以下操作。 表2 CS S管理 操作名称 操作步骤 导入 在CSS页面单击“导入”。 上传文件。 查看导入进度 在CSS页面单击“查看导入进度”。 导出 在CSS页面列表中,勾选需要导出的CSS索引。 单击列表上方的“导出”。 编辑Tags 在CSS页面单击“编辑Tags”。 在“编辑Tags”页面单击“新建Tags”。 输入Tags并单击“保存”。 单击“确定”。 关联Tags 编辑并新建Tags后,在CSS页面列表中,单击待关联Tags索引所在行的“关联Tags”。 选择已新建的Tags。 单击“确定”。 查看索引状态 在CSS页面列表中,单击待查看状态的CSS索引所在行的“索引状态”。 编辑索引 在CSS页面列表中,单击待编辑CSS索引所在行的“编辑”。 删除索引 在CSS页面列表中,单击待删除CSS索引所在行的“删除”。 查看操作历史 在CSS页面列表中,单击待查看操作历史的CSS索引所在行的“操作历史”。 查看历史版本信息 在CSS页面列表中,单击待查看历史版本信息的CSS索引所在行的“历史版本信息”。 (可选)可单击历史版本所在行的“对比当前版本”,查看版本差异。
  • 数据开发的主要功能 表1 数据开发的主要功能 支持的功能 说明 数据管理 支持管理DWS、 DLI MRS Hive等多种 数据仓库 。 支持可视化和DDL方式管理数据库表。 脚本开发 提供在线脚本编辑器,支持多人协作进行SQL、Shell、Python脚本在线代码开发和调测。 支持使用变量和函数。 作业开发 提供图形化设计器,支持拖拉拽方式快速构建数据处理工作流。 预设数据集成、SQL、Shell等多种任务类型,通过任务间依赖完成复杂数据分析处理。 支持导入和导出作业。 资源管理 支持统一管理在脚本开发和作业开发使用到的file、jar、archive类型的资源。 作业调度 支持单次调度、周期调度和事件驱动调度,周期调度支持分钟、小时、天、周、月多种调度周期。调度周期配置为小时,系统支持按间隔小时和离散小时配置调度周期。 运维监控 支持对作业进行运行、暂停、恢复、终止等多种操作。 支持查看作业和其内各任务节点的运行详情。 支持配置多种方式报警,作业和任务发生错误时可及时通知相关人,保证业务正常运行。
  • 数据开发中的对象 数据连接:定义访问数据实体存储(计算)空间所需信息的集合,包括连接类型、名称和登录信息等。 解决方案:解决方案为用户提供便捷的、系统的方式管理作业,更好地实现业务需求和目标。每个解决方案可以包含一个或多个业务相关的作业,一个作业可以被多个解决方案复用。 作业:作业由一个或多个节点组成,执行作业可以完成对数据的一系列操作。 脚本:脚本(Script)是一种批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。 节点:定义对数据执行的操作。 资源:用户可以上传自定义的代码或文本文件作为资源,以便在节点运行时调用。 表达式:数据开发作业中的节点参数可以使用表达式语言(Expression Language,简称EL),根据运行环境动态生成参数值。数据开发EL表达式包含简单的算术和逻辑计算,引用内嵌对象,包括作业对象和一些工具类对象。 环境变量:环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所使用到的信息。 补数据:手工触发周期方式调度的作业任务,生成某时间段内的实例。
  • 配置方法(Kafka Client) 登录 DataArts Studio 控制台,找到所需要的DataArts Studio实例,单击实例卡片上的“进入控制台”,进入概览页面。 单击第一个工作空间A的“数据开发”,系统跳转至数据开发页面,新建数据开发作业job1。分别选择Dummy节点和Kafka Client节点,选中连线图标并拖动,编排如图7所示的作业。 Dummy节点不执行任何操作,本例选择Dummy节点仅为演示操作,实际使用中您可以用其他作业节点替代。 Kafka Client节点用于发送消息。您需要选择Kafka连接和Topic名称,并将发送数据配置为EL表达式job1,#{DateUtil.getDay(Job.startTime)}。则当本作业执行完成后,将使用Kafka Client发送一条字符串消息:job1,作业执行日期。例如2月15日作业job1执行,实际的消息则为:job1,15。 作业调度等其他作业参数无需配置,保持默认即可。 图7 job1作业Kafka Client节点配置 在另一个工作空间B,新建数据开发作业job_agent。分别选择Dummy节点和Subjob节点,选中连线图标并拖动,编排图8所示的作业。 图8 job_agent作业调度配置 Dummy节点不执行任何操作,本例选择Dummy节点用于设置Dummy节点到Subjob节点之间连线的IF条件。 Subjob节点用于将需要后续执行的作业job2作为子作业引用执行。实际使用中您可以引用已有作业,也可以使用其他作业节点替代Subjob节点。 作业的调度方式设置为“事件驱动调度”,连接名称和Topic选择为工作空间B中的Kafka连接和Topic,需要与工作空间A中job1作业中Kafka Client节点所选择的Kafka连接和Topic相对应,用于通过Kafka消息触发作业运行。 IF判断条件设置,用于校验Kafka Client节点发送的消息是否符合预期,符合才会继续执行Subjob节点,否则跳过。 右键单击连线,选择“设置条件”,在弹出的“编辑参数表达式”文本框中输入IF判断条件,失败策略保持默认即可。IF判断条件为通过EL表达式语法填写三元表达式,当三元表达式结果为true的时候,才会执行连线后面的节点,否则后续节点将被跳过。 #{StringUtil.equals(StringUtil.split(Job.eventData,',')[1],'21')} 该IF判断条件表示,仅当从Kafka通道获取的消息逗号后的部分为“21”时,即每月21日时,才执行后续的作业节点。 如果您需要匹配多条消息记录,可以添加多个Dummy节点并分别添加到Subjob节点的IF条件,然后将数据开发组件配置项中的“多IF策略”设置为“逻辑或”即可。 图9 编辑参数表达式 测试运行作业job_agent,在工作空间A的作业job1未运行的情况下,前往实例监控中查看执行结果是否符合预期。 由于作业job1未运行即未发送消息,则job_agent作业中的Subjob节点被跳过,证明IF条件判断生效。 图10 Subjob节点被跳过 启动调度job_agent。然后测试运行工作空间A作业job1,待job1实例运行成功后,前往工作空间B实例监控中查看作业运行结果是否符合预期。 job_agent被触发运行。 如果当天日期和IF条件中的日期匹配,则job_agent作业中的Subjob节点成功运行、子作业job2也执行完成。否则Subjob节点被跳过。 图11 Subjob节点成功运行
  • 方案说明 DataArts Studio数据开发模块支持以事件触发的方式运行作业,因此通过DIS或者MRS Kafka作为作业依赖纽带,可以跨空间实现作业调度。 如下图,工作空间A中的job1运行完成后,可以使用DIS Client或Kafka Client发送消息触发中继作业job_agent;job_agent配置事件触发调度,根据DIS Client或Kafka Client发送的消息触发运行后,判断消息是否符合预期,符合则触发job2作业运行,否则不再触发job2运行。 图1 调度方案
  • 配置方法(DIS Client) 登录DataArts Studio控制台,找到所需要的DataArts Studio实例,单击实例卡片上的“进入控制台”,进入概览页面。 单击第一个工作空间A的“数据开发”,系统跳转至数据开发页面,新建数据开发作业job1。分别选择Dummy节点和DIS Client节点,选中连线图标并拖动,编排如图2所示的作业。 Dummy节点不执行任何操作,本例选择Dummy节点仅为演示操作,实际使用中您可以用其他作业节点替代。 DIS Client节点用于发送消息。您需要选择DIS所属Region和通道,并将发送数据配置为EL表达式job1,#{DateUtil.getDay(Job.startTime)}。则当本作业执行完成后,将使用DIS Client发送一条字符串消息:job1,作业执行日期。例如2月15日作业job1执行,实际的消息则为:job1,15。 作业调度等其他作业参数无需配置,保持默认即可。 图2 job1作业DIS Client节点配置 在另一个工作空间B,新建数据开发作业job_agent。分别选择Dummy节点和Subjob节点,选中连线图标并拖动,编排图3所示的作业。 图3 job_agent作业调度配置 Dummy节点不执行任何操作,本例选择Dummy节点用于设置Dummy节点到Subjob节点之间连线的IF条件。 Subjob节点用于将需要后续执行的作业job2作为子作业引用执行。实际使用中您可以引用已有作业,也可以使用其他作业节点替代Subjob节点。 作业的调度方式设置为“事件驱动调度”,DIS通道名称选择为工作空间A中job1作业中DIS Client节点所选择的通道,用于通过DIS消息触发作业运行。 IF判断条件设置,用于校验DIS Client节点发送的消息是否符合预期,符合才会继续执行Subjob节点,否则跳过。 右键单击连线,选择“设置条件”,在弹出的“编辑参数表达式”文本框中输入IF判断条件,失败策略保持默认即可。IF判断条件为通过EL表达式语法填写三元表达式,当三元表达式结果为true的时候,才会执行连线后面的节点,否则后续节点将被跳过。 #{StringUtil.equals(StringUtil.split(Job.eventData,',')[1],'21')} 该IF判断条件表示,仅当从DIS通道获取的消息逗号后的部分为“21”时,即每月21日时,才执行后续的作业节点。 如果您需要匹配多条消息记录,可以添加多个Dummy节点并分别添加到Subjob节点的IF条件,然后将数据开发组件配置项中的“多IF策略”设置为“逻辑或”即可。 图4 编辑参数表达式 测试运行作业job_agent,在工作空间A的作业job1未运行的情况下,前往实例监控中查看执行结果是否符合预期。 由于作业job1未运行即未发送消息,则job_agent作业中的Subjob节点被跳过,证明IF条件判断生效。 图5 Subjob节点被跳过 启动调度job_agent。然后测试运行工作空间A作业job1,待job1实例运行成功后,前往工作空间B实例监控中查看作业运行结果是否符合预期。 job_agent被触发运行。 如果当天日期和IF条件中的日期匹配,则job_agent作业中的Subjob节点成功运行、子作业job2也执行完成。否则Subjob节点被跳过。 图6 Subjob节点成功运行
  • 数据湖 准备 在本示例中,选择 数据湖探索 (DLI)服务作为数据湖。为确保DataArts Studio与DLI网络互通,在创建DLI队列时区域和企业项目应与DataArts Studio实例保持一致。 当前由于DLI的“default”队列默认Spark组件版本较低,可能会出现无法支持建表语句执行的报错,这种情况下建议您选择自建队列运行业务。如需“default”队列支持建表语句执行,可联系DLI服务客服或技术支持人员协助解决。 DLI的“default”队列为共享队列,仅用于用户体验,用户间可能会出现抢占资源的情况,不能保证每次都可以得到资源执行相关操作。当遇到执行时间较长或无法执行的情况,建议您在业务低峰期再次重试,或选择自建队列运行业务。 开通DLI服务后,您需要在管理中心创建DLI连接,然后通过数据开发组件新建数据库,再执行SQL来创建OBS外表。操作步骤如下: 参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。 在DataArts Studio控制台首页,选择对应工作空间的“管理中心”模块,进入管理中心页面。 在“数据连接”页面,单击“创建数据连接”按钮。 图1 数据连接 创建一个到DLI的连接,数据连接类型选择“数据湖探索(DLI)”,数据连接名称设置为“dli”。 完成设置后,单击“测试”,测试成功后单击“确定”,完成DLI数据连接的创建。 图2 创建数据连接 DLI连接创建完成后,跳转到数据开发页面。 图3 跳转到数据开发页面 参见图4,在DLI连接上右键单击,创建一个数据库用于存放数据表,数据库名称为“BI”。 图4 创建数据库 创建一个DLI SQL脚本,以通过DLI SQL语句来创建数据表。 图5 新建脚本 在新建脚本弹出的SQL编辑器中输入如下SQL语句,并单击“运行”来创建数据表。其中,user、product、comment、action为OBS外表,使用指定OBS路径中的CSV文件来填充数据,用于存放原始数据;top_like_product和top_bad_comment_product为DLI表,用于存放分析结果。 create table user( user_id int, age int, sexuality int, rank int, register_time string ) USING csv OPTIONS (path "obs://fast-demo/user_data"); create table product( product_id int, a1 int, a2 int, a3 int, category int, brand int ) USING csv OPTIONS (path "obs://fast-demo/product_data"); create table comment( deadline string, product_id int, comment_num int, has_bad_comment int, bad_comment_rate float ) USING csv OPTIONS (path "obs://fast-demo/comment_data"); create table action( user_id int, product_id int, time string, model_id string, type string ) USING csv OPTIONS (path "obs://fast-demo/action_data"); create table top_like_product(brand int, like_count int); create table top_bad_comment_product(product_id int, comment_num int, bad_comment_rate float); 图6 创建数据表 关键参数说明: 数据连接:步骤3中创建的DLI数据连接。 数据库:步骤5中创建的数据库。 资源队列:可使用提供的默认资源队列“default”。 当前由于DLI的“default”队列默认Spark组件版本较低,可能会出现无法支持建表语句执行的报错,这种情况下建议您选择自建队列运行业务。如需“default”队列支持建表语句执行,可联系DLI服务客服或技术支持人员协助解决。 DLI的“default”队列为共享队列,仅用于用户体验,用户间可能会出现抢占资源的情况,不能保证每次都可以得到资源执行相关操作。当遇到执行时间较长或无法执行的情况,建议您在业务低峰期再次重试,或选择自建队列运行业务。 脚本运行成功后,可以通过如下脚本检查数据表是否创建成功。 SHOW TABLES; 确认数据表创建成功后,该脚本后续无需使用,可直接关闭。
  • 更多操作 您还可以对Spark任务进行以下操作。 表2 Spark任务管理 操作名称 操作步骤 编辑Tags 在Spark页面单击“编辑Tags”。 在“编辑Tags”页面单击“新建Tags”。 输入Tags并单击“保存”。 单击“确定”。 关联Tags 编辑并新建Tags后,在Spark任务列表中,单击待关联Tags的Spark任务所在行的“关联Tags”。 选择已新建的Tags。 单击“确定”。 编辑Spark任务 在Spark任务列表中,单击待编辑Spark任务所在行的“编辑”。 删除Spark任务 在Spark任务列表中,单击待删除Spark任务所在行的“删除”。 启动Spark任务 在Spark任务列表中,单击待启动Spark任务所在行的“启动”。 批量启动Spark任务 在Spark任务列表中,勾选待启动Spark任务。 单击列表上方的“批量启动”。 停止Spark任务 在Spark任务列表中,单击待停止Spark任务所在行的“停止”。 批量停止Spark任务 在Spark任务列表中,勾选待停止Spark任务。 单击列表上方的“批量启动”。 部署更新Spark任务 在Spark任务列表中,单击待更新部署Spark任务所在行的“部署更新”。 从资源中心部署文件 在Spark任务列表中,单击待部署Spark任务所在行的“从资源中心部署文件”。 查看日志 在Spark任务列表中,单击待查看日志Spark任务所在行的“查看日志”。 查看操作历史 在Spark任务列表中,单击待查看操作历史的Spark任务所在行的“操作历史”。 查看历史版本信息 在Spark任务列表中,单击待查看历史版本信息的Spark任务所在行的“历史版本信息”。 (可选)可单击历史版本所在行的“对比当前版本”,查看版本差异。
  • 分析10大用户关注最多的产品 在DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。 创建一个DLI SQL脚本,以通过DLI SQL语句来创建数据表。 图1 新建脚本 在新建脚本弹出的SQL编辑器中输入如下SQL语句,单击“运行”,从OBS原始数据表中计算出10大用户关注最多的产品,将结果存放到top_like_product表。 INSERT OVERWRITE table top_like_product SELECT product.brand as brand, COUNT(product.brand) as like_count FROM action JOIN product ON (action.product_id = product.product_id) WHERE action.type = 'like' group by brand ORDER BY like_count desc LIMIT 10 图2 脚本(分析10大用户关注最多的产品) 关键参数说明: 数据连接:步骤3中创建的DLI数据连接。 数据库:步骤5中创建的数据库。 资源队列:可使用提供的默认资源队列“default”。 当前由于DLI的“default”队列默认Spark组件版本较低,可能会出现无法支持建表语句执行的报错,这种情况下建议您选择自建队列运行业务。如需“default”队列支持建表语句执行,可联系DLI服务客服或技术支持人员协助解决。 DLI的“default”队列为共享队列,仅用于用户体验,用户间可能会出现抢占资源的情况,不能保证每次都可以得到资源执行相关操作。当遇到执行时间较长或无法执行的情况,建议您在业务低峰期再次重试,或选择自建队列运行业务。 脚本调试无误后,单击“保存”保存该脚本,脚本名称为“top_like_product”。单击“提交”,提交脚本版本。在后续开发并调度作业会引用该脚本。 脚本保存完成且运行成功后,您可通过如下SQL语句查看top_like_product表数据。您还可以参考图3,下载或转储表数据。 SELECT * FROM top_like_product 图3 查看top_like_product表数据
  • 解决方法 用python3解释器,在主机上做一个软连接,如下图所示。 图2 主机上做软连接 在文件中设置标准编码方式。 # -*- coding: utf-8 -*-;或者设置主机的编码格式:在python安装目录的Lib\site-packages文件夹下新建一个sitecustomize.py文件,在文件中写入如下内容。 # encoding=utf8 #import sys #reload(sys) #sys.setdefaultencoding('utf8') 重启python,通过sys.getdefaultencoding()查看默认编码,这时为'utf8'。
  • 创建提取任务 在Druid页面列表中,单击待编辑任务的Druid数据源所在行的“编辑任务”,进入该数据源提取任务页面。 单击“创建任务”,进入“创建任务”页面。 配置任务参数,参数说明如表2所示。配置完成后,单击“确定”。 表2 配置任务参数说明 参数名称 参数说明 名称 Druid提取任务名,默认与数据源同名,无需手动填写。 描述 输入描述信息。 调度集成 定时执行Druid提取任务的调度集群。 Kafka Topic 选择需要消费数据的kafka topic。 使用最早offset消费 首次提交的任务设置为false,补数据时配置为true。 任务数 需要多少个并发进程同时读取该druid任务所对应的kafka topic,任务数(默认为2)应该小于topic分区数,并且能被topic分区数所整除,这样每个druid的子任务可以读取相同的数据量,达到负载均衡的效果。 指标列表 该指标列表由创建数据源时选择的指标决定,如果指标与对应的kafka字段名一致,会自动填充,如果不一致,需手动添加映射。 任务配置完成后,在Druid页面列表中,单击已编辑的任务的Druid数据源所在行的“启动”,启动导流任务。 在数据源生命周期内,Druid集群会持续提取Kafka数据到Druid数据源中。
  • 更多操作 您还可以对Druid进行以下操作。 表3 Druid管理 操作名称 操作步骤 导入 在Druid页面单击“导入”。 上传文件。 查看导入进度 在Druid页面单击“查看导入进度”。 导出 在Druid页面列表中,勾选需要导出的Druid数据源。 单击列表上方的“导出”。 编辑Tags 在Druid页面单击“编辑Tags”。 在“编辑Tags”页面单击“新建Tags”。 输入Tags并单击“保存”。 单击“确定”。 关联Tags 在Druid页面列表中,单击待关联Tags数据源所在行的“关联Tags”。 选择已新建的Tags。 单击“确定”。 说明: 关联Tags之前须先编辑并新建Tags。 编辑数据源 在Druid页面列表中,单击待编辑Druid数据源所在行的“编辑”。 删除数据源 在Druid页面列表中,单击待删除Druid数据源所在行的“删除”。 查看操作历史 在Druid页面列表中,单击待查看操作历史的Druid数据源所在行的“操作历史”。 查看历史版本信息 在Druid页面列表中,单击待查看历史版本信息的Druid数据源所在行的“历史版本信息”。 (可选)可单击历史版本所在行的“对比当前版本”,查看版本差异。