云服务器内容精选

  • 前提条件 已创建包含Doris服务的集群,集群内各服务运行正常。 待连接Doris数据库的节点与 MRS 集群网络互通。 创建具有Doris管理权限的用户。 集群已启用Kerberos认证(安全模式) 在 FusionInsight Manager中创建一个人机用户,例如“dorisuser”,创建一个拥有“Doris管理员权限”的角色绑定给该用户。 使用新建的用户dorisuser重新登录FusionInsight Manager,修改该用户初始密码。 集群未启用Kerberos认证(普通模式) 使用admin用户连接Doris后,创建具有管理员权限的角色并绑定给用户。 已安装MySQL客户端,相关操作可参考使用MySQL客户端连接Doris。
  • 使用自定义列创建表 可通过指定各列及其数据类型来创建表。 命令示例: CREATE TABLE IF NOT EXISTS productdb.productSalesTable ( productNumber Int, productName String, storeCity String, storeProvince String, productCategory String, productBatch String, saleQuantity Int, revenue Int) STORED AS carbondata TBLPROPERTIES ( 'table_blocksize'='128'); 上述命令所创建的表的详细信息如下: 表1 表信息定义 参数 描述 productSalesTable 待创建的表的名称。该表用于加载数据进行分析。 表名由字母、数字、下划线组成。 productdb 数据库名称。该数据库将与其中的表保持逻辑连接以便于识别和管理。 数据库名称由字母、数字、下划线组成。 productName storeCity storeProvince procuctCategory productBatch saleQuantity revenue 表中的列,代表执行分析所需的业务实体。 列名(字段名)由字母、数字、下划线组成。 table_blocksize CarbonData表使用的数据文件的block大小,默认值为1024,最小值为1,最大值为2048,单位为MB。 如果“table_blocksize”值太小,数据加载时,生成过多的小数据文件,可能会影响HDFS的使用性能。 如果“table_blocksize”值太大,数据查询时,索引匹配的block数据量较大,某些block会包含较多的blocklet,导致读取并发度不高,从而降低查询性能。 一般情况下,建议根据数据量级别来选择大小。例如:GB级别用256,TB级别用512,PB级别用1024。 所有Integer类型度量均以BigInt类型进行处理与显示。 CarbonData遵循严格解析,因此任何不可解析的数据都会被保存为null。例如,在BigInt列中加载double值(3.14),将会保存为null。 在Create Table中使用的Short和Long数据类型在DESCRIBE命令中分别显示为Smallint和Bigint。 可以使用DESCRIBE格式化命令查看表数据大小和表索引大小。
  • 场景描述 了解 GaussDB (DWS)的基本功能和数据导入,对某公司与供应商的订单数据分析,分析维度如下: 分析某地区供应商为公司带来的收入,通过该统计信息可用于决策在给定的区域是否需要建立一个当地分配中心。 分析零件/供货商关系,可以获得能够以指定的贡献条件供应零件的供货商数量,通过该统计信息可用于决策在订单量大,任务紧急时,是否有充足的供货商。 分析小订单收入损失,通过查询得知如果没有小量订单,平均年收入将损失多少。筛选出比平均供货量的20%还低的小批量订单,如果这些订单不再对外供货,由此计算平均一年的损失。
  • 支持区域 当前已上传OBS数据的区域如表1所示。 表1 区域和OBS桶名 区域 OBS桶名 华北-北京一 dws-demo-cn-north-1 华北-北京二 dws-demo-cn-north-2 华北-北京四 dws-demo-cn-north-4 华北-乌兰察布一 dws-demo-cn-north-9 华东-上海一 dws-demo-cn-east-3 华东-上海二 dws-demo-cn-east-2 华南-广州 dws-demo-cn-south-1 华南-广州友好 dws-demo-cn-south-4 中国-香港 dws-demo-ap-southeast-1 亚太-新加坡 dws-demo-ap-southeast-3 亚太-曼谷 dws-demo-ap-southeast-2 拉美-圣地亚哥 dws-demo-la-south-2 非洲-约翰内斯堡 dws-demo-af-south-1 拉美-墨西哥城一 dws-demo-na-mexico-1 拉美-墨西哥城二 dws-demo-la-north-2 莫斯科二 dws-demo-ru-northwest-2 拉美-圣保罗一 dws-demo-sa-brazil-1
  • 操作描述 有Minor合并、Major合并和Custom合并三种类型。 Minor合并: 在Minor合并中,用户可指定合并数据加载的数量。如果设置了参数“carbon.enable.auto.load.merge”,每次数据加载都可触发Minor合并。如果任意segment均可合并,那么合并将于数据加载时并行进行。 Minor合并有两个级别。 Level 1:合并未合并的segment。 Level 2:合并已合并的segment,以形成更大的segment。 Major合并: 在Major合并中,许多segment可以合并为一个大的segment。用户将指定合并尺寸,将对未达到该尺寸的segment进行合并。Major合并通常在非高峰时段进行。 Custom合并: 在Custom合并中,用户可以指定几个segment的id合并为一个大的segment。所有指定的segment的id必须存在并且有效,否则合并将会失败。Custom合并通常在非高峰时段进行。 具体的命令操作,请参考ALTER TABLE COMPACTION。 表1 合并参数 参数 默认值 应用类型 描述 carbon.enable.auto.load.merge false Minor 数据加载时启用合并。 “true”:数据加载时自动触发segment合并。 “false”:数据加载时不触发segment合并。 carbon.compaction.level.threshold 4,3 Minor 对于Minor合并,该属性参数决定合并segment的数量。 例如,如果该参数设置为“2,3”,在Level 1,每2个segment触发一次Minor合并。在Level2,每3个Level 1合并的segment将被再次合并为新的segment。 合并策略根据实际的数据大小和可用资源决定。 有效值为0-100。 carbon.major.compaction.size 1024mb Major 通过配置该参数可配置Major合并。低于该阈值的segment之和将被合并。 例如,如果该阈值是1024MB,且有5个大小依次为300MB,400MB,500MB,200MB,100MB的segment用于Major合并,那么只有相加的总数小于阈值的segment会被合并,也就是300+400+200+100 = 1000MB的segment会被合并,而500MB的segment将会被跳过。 carbon.numberof.preserve.segments 0 Minor/Major 如果用户希望从被合并的segment中保留一定数量的segment,可通过该属性参数进行设置。 例如,“carbon.numberof.preserve.segments”=“2”,那么最新的2个segment将不会包含在合并中。 默认不保留任何segment。 carbon.allowed.compaction.days 0 Minor/Major 合并将合并在指定的配置天数中加载的segment。 例如,如果配置为“2”,那么只有在2天的时间框架中被加载的segment可以被合并。在2天以外被加载的segment将不被合并。 默认为禁用。 carbon.number.of.cores.while.compacting 2 Minor/Major 在合并过程中写入数据时所用的核数。配置的核数越大合并性能越好。如果CPU资源充足可以增加此值。 carbon.merge.index.in.segment true SEGMENT_INDEX 如果设置为true,则一个segment中所有Carbon索引文件(.carbonindex)将合并为单个Carbon索引合并文件(.carbonindexmerge)。 这增强了首次查询性能。
  • 操作场景 频繁的数据获取导致在存储目录中产生许多零碎的CarbonData文件。由于数据排序只在每次加载时进行,所以,索引也只在每次加载时执行。这意味着,对于每次加载都会产生一个索引,随着数据加载数量的增加,索引的数量也随之增加。由于每个索引只在一次加载时工作,索引的性能被降低。CarbonData提供加载压缩。压缩过程通过合并排序各segment中的数据,将多个segment合并为一个大的segment。
  • 响应示例 状态码: 200 成功 { "total" : 2, "count" : 2, "sqls" : [ { "sql" : { "id" : "o1n8BI8BDdIO3rwS4Rea", "sql_statement" : "create table test(name varchar(1000), age int)", "client_ip" : "fe80::f816:3eff:feca:22f5", "client_name" : "", "db_ip" : "fe80::f816:3eff:feca:22f5", "db_user" : "root", "query_type" : "CREATE TABLE", "operated_obj_info" : [ { "column_name" : "", "object_type" : "TABLE", "schema_name" : "test", "sql_type" : "CREATE TABLE", "sys_name" : "", "table_name" : "test" }, { "column_name" : "", "object_type" : "TABLE", "schema_name" : "test", "sql_type" : "CREATE", "sys_name" : "", "table_name" : "test" } ], "rule_name" : "全审计规则", "risk_level" : "", "start_time" : "2024-04-22 08:46:02", "sql_response" : "SUC CES S", "db_instance" : "" } }, { "sql" : { "id" : "pFn8BI8BDdIO3rwS4Rea", "sql_statement" : "create table test", "client_ip" : "fe80::f816:3eff:feca:22f5", "client_name" : "", "db_ip" : "fe80::f816:3eff:feca:22f5", "db_user" : "root", "query_type" : "CREATE", "operated_obj_info" : [ { "column_name" : "", "object_type" : "", "schema_name" : "test", "sql_type" : "CREATE", "sys_name" : "", "table_name" : "" } ], "rule_name" : "全审计规则", "risk_level" : "", "start_time" : "2024-04-22 08:46:02", "sql_response" : "FAILED", "db_instance" : "" } } ] } 状态码: 400 请求参数错误 { "error" : { "error_code" : "DBSS.XXXX", "error_msg" : "XXX" } } 状态码: 500 服务器内部错误 { "error" : { "error_code" : "DBSS.XXXX", "error_msg" : "XXX" } }
  • 请求示例 /v1/{project_id}/{instance_id}/audit/sqls { "time" : { "time_range" : "DAY", "start_time" : null, "end_time" : null }, "risk_levels" : null, "client_ip" : null, "client_name" : null, "db_ip" : null, "db_user" : null, "query_type" : null, "rule_name" : null, "sql_statement" : null, "sql_response" : null, "page" : 1, "size" : 50, "time_order" : "DESC" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用 IAM 服务查询用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 time 是 time object 查询时间范围 risk_levels 否 String 风险级别 HIGH MEDIUM LOW NO_RISK client_ip 否 String 客户端IP client_name 否 String 客户端名称 db_ip 否 String 数据库IP db_user 否 String 数据库用户 query_type 否 String 查询类型 LOG IN,CREATE_TABLE,CREATE_TABLESPACE,DROP_TABLE, DROP_TABLESPACE,DELETE,INSERT,INSERT_SELECT,SELECT,SELECT_FOR_UPDATE, UPDATE,CREATE_USER,DROP_USER,GRANT,OPERATE ALL rule_name 否 String 规则名称 sql_statement 否 String sql语句 sql_response 否 String 响应结果 SUCCESS FAILED page 否 Integer 页码 size 否 Integer 条数 time_order 否 String 时间顺序 DESC ASC 表4 time 参数 是否必选 参数类型 描述 time_range 否 String 时间范围。和start_time,end_time不能同时使用,同时传该参数优先级更高。 HALF_HOUR HOUR THREE_HOUR TWELVE_HOUR DAY WEEK MONTH start_time 否 String 开始时间,必须和end_time成对出现。格式必须为yyyy-MM-dd HH:mm:ss。UTC时间 end_time 否 String 结束时间,必须和start_time成对出现。格式必须为yyyy-MM-dd HH:mm:ss。UTC时间
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 total Integer 总数 count Integer 总数 sqls Array of sqls objects sql语句列表 表6 sqls 参数 参数类型 描述 sql sql object sql信息 表7 sql 参数 参数类型 描述 id String ID sql_statement String sql语句 client_ip String 客户端IP client_name String 客户端名称 db_ip String 数据库IP db_user String 数据库用户名 query_type String 查询类型LOGIN,CREATE_TABLE,CREATE_TABLESPACE,DROP_TABLE, DROP_TABLESPACE,DELETE,INSERT,INSERT_SELECT,SELECT,SELECT_FOR_UPDATE, UPDATE,CREATE_USER,DROP_USER,GRANT,OPERATE ALL operated_obj_info Array of operated_obj_info objects 操作对象列表 rule_name String 规则名称 risk_level String 风险级别 HIGH MEDIUM LOW NO_RISK start_time String 审计开始时间 sql_response String 响应结果 SUCCESS FAILED db_instance String 数据库实例 表8 operated_obj_info 参数 参数类型 描述 column_name String 列名 object_type String 操作对象类型 schema_name String schema名称 sql_type String sql类型 sys_name String 系统名称 table_name String 表名 状态码: 400 表9 响应Body参数 参数 参数类型 描述 error Object 错误信息返回体。 表10 ErrorDetail 参数 参数类型 描述 error_code String 错误请求返回的错误码。 error_msg String 错误请求返回的错误信息。 状态码: 403 表11 响应Body参数 参数 参数类型 描述 error Object 错误信息返回体。 表12 ErrorDetail 参数 参数类型 描述 error_code String 错误请求返回的错误码。 error_msg String 错误请求返回的错误信息。 状态码: 500 表13 响应Body参数 参数 参数类型 描述 error Object 错误信息返回体。 表14 ErrorDetail 参数 参数类型 描述 error_code String 错误请求返回的错误码。 error_msg String 错误请求返回的错误信息。
  • 步骤1:创建MRS集群 创建并购买一个包含有Flink组件的MRS集群,详情请参见购买自定义集群。 本文以购买的MRS 3.1.0版本的集群为例,集群未开启Kerberos认证。 在本示例中,由于要分析处理OBS文件系统中的数据,因此在集群的高级配置参数中要为MRS集群绑定IAM权限委托,使得集群内组件能够对接OBS并具有对应文件系统目录的操作权限。 您可以直接选择系统默认的“MRS_E CS _DEFAULT_AGENCY”,也可以自行创建其他具有OBS文件系统操作权限的自定义委托。 图3 设置MRS集群委托 集群购买成功后,在MRS集群的任一节点内,使用omm用户安装集群客户端,具体操作可参考安装并使用集群客户端。 例如客户端安装目录为“/opt/client”。
  • 方案架构 Flink是一个批处理和流处理结合的统一计算框架,其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。它的最大亮点是流处理,是业界最顶级的开源流处理引擎。 Flink最适合的应用场景是低时延的数据处理(Data Processing)场景:高并发pipeline处理数据,时延毫秒级,且兼具可靠性。 图1 Flink架构 在本示例中,使用MRS集群内置的Flink WordCount作业程序,来分析OBS文件系统中保存的源数据,以统计源数据中的单词出现次数,相关程序代码信息介绍可参考https://github.com/apache/flink/tree/master/flink-examples/flink-examples-batch/src/main/java/org/apache/flink/examples/java/wordcount。 当然您也可以获取MRS服务样例代码工程,参考Flink开发指南开发其他Flink流作业程序。
  • 步骤3:创建并运行Flink作业 方式1:在控制台界面在线提交作业。 登录MRS管理控制台,单击MRS集群名称,进入集群详情页面。 在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“单击同步”进行IAM用户同步。 单击“作业管理”,进入“作业管理”页签。 单击“添加”,添加一个Flink作业。 作业类型:Flink 作业名称:自定义,例如flink_obs_test。 执行程序路径:本示例使用Flink客户端的WordCount程序为例。 运行程序参数:使用默认值。 执行程序参数:设置应用程序的输入参数,“input”为待分析的测试数据,“output”为结果输出文件。 例如本示例中,设置为“--input obs://mrs-demo-data/flink/mrs_flink_test.txt --output obs://mrs-demo-data/flink/output”。 服务配置参数:使用默认值即可,如需手动配置作业相关参数,可参考运行Flink作业。 图4 添加Flink作业 确认作业配置信息后,单击“确定”,完成作业的新增,并等待运行完成。 方式2:通过集群客户端提交作业。 使用root用户登录集群客户端节点,进入客户端安装目录。 su - omm cd /opt/client source bigdata_env 执行以下命令验证集群是否可以访问OBS。 hdfs dfs -ls obs://mrs-demo-data/flink 提交Flink作业,指定源文件数据进行消费。 flink run -m yarn-cluster /opt/client/Flink/flink/examples/batch/WordCount.jar --input obs://mrs-demo-data/flink/mrs_flink_test.txt --output obs://mrs-demo/data/flink/output2 ... Cluster started: Yarn cluster with application id application_1654672374562_0011 Job has been submitted with JobID a89b561de5d0298cb2ba01fbc30338bc Program execution finished Job with JobID a89b561de5d0298cb2ba01fbc30338bc has finished. Job Runtime: 1200 ms
  • 流量命中率 选择需要查看的时间、 域名 及时间粒度,即可查看到指定时间跨度内的流量命中率统计详情。如图5所示。 流量命中率=命中缓存产生的流量/请求总流量,请求总流量为命中缓存产生的流量和请求回源产生的流量之和。 您可以单击“下载”,将统计详情导出到本地。 统计表中呈现的是所选域名在查询时间段内的流量命中率统计信息,将鼠标指针停留在趋势图上,滚动鼠标滚轮可针对某时间跨度范围内的趋势图时间横轴进行拉大或缩小整体占比。 图5 流量命中率统计信息
  • 步骤四:车辆分析 执行ANALYZE。 用于收集与数据库中普通表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC中。执行计划生成器会使用这些统计数据,以生成最有效的查询执行计划。 执行以下语句生成表统计信息: 1 ANALYZE; 查询数据表中的数据量。 执行如下语句,可以查看已加载的数据条数。 1 2 SET current_schema= traffic_data; SELECT count(*) FROM traffic_data.gcjl; 车辆精确查询。 执行以下语句,指定车牌号码和时间段查询车辆行驶路线。GaussDB(DWS)在应对点查时秒级响应。 1 2 3 4 5 6 SET current_schema= traffic_data; SELECT hphm, kkbh, gcsj FROM traffic_data.gcjl where hphm = 'YD38641' and gcsj between '2016-01-06' and '2016-01-07' order by gcsj desc; 车辆模糊查询。 执行以下语句,指定车牌号码和时间段查询车辆行驶路线,GaussDB(DWS) 在应对模糊查询时秒级响应。 1 2 3 4 5 6 7 SET current_schema= traffic_data; SELECT hphm, kkbh, gcsj FROM traffic_data.gcjl where hphm like 'YA23F%' and kkbh in('508', '1125', '2120') and gcsj between '2016-01-01' and '2016-01-07' order by hphm,gcsj desc;