云服务器内容精选

  • 开启冷热分离步骤 登录 表格存储服务 管理控制台。 控制台左上角,选择区域。 单击左侧“集群管理”,进入集群管理界面。 单击集群管理界面右上角的“购买集群”。 进入创建集群界面,在集群购买页面选择Doris数据库引擎并勾选是否开启冷热分离按钮,创建后的集群就开启了冷热分离特性。 创建集群可以参考创建Doris集群。 如果在创建集群的时候未开启冷热分离特性,可在集群详请页面或者集群列表的操作列开启冷热分离。 注意使用Doris集群不要长时间处于高负载(高CPU、高内存、高磁盘使用率等)状态,否则影响冷热分离的速率。如果业务需要可进行集群扩容,请参见扩容集群。
  • 前提条件 已创建包含Doris服务的集群,集群内各服务运行正常。 待连接Doris数据库的节点与 MRS 集群网络互通。 创建具有Doris管理权限的用户。 集群已启用Kerberos认证(安全模式) 在 FusionInsight Manager中创建一个人机用户,例如“dorisuser”,创建一个拥有“Doris管理员权限”的角色绑定给该用户。 使用新建的用户dorisuser重新登录FusionInsight Manager,修改该用户初始密码。 集群未启用Kerberos认证(普通模式) 使用admin用户连接Doris后,创建具有管理员权限的角色并绑定给用户。 已安装MySQL客户端,相关操作可参考使用MySQL客户端连接Doris。 已准备待导入至Doris的数据文件。
  • 背景 在数据分析的实际场景中,冷热数据面临着不同的查询频次及响应速度要求。而随着历史数据的不断增多,如果我们将所有数据存储在本地,将造成大量的资源浪费。冷热分离特性可将冷热数据分开存储,将冷热数据分别存储在成本不同的存储介质上。热数据提高时效数据的查询速度和响应能力,冷数据降低存储成本。我们还可以根据实际业务需求进行灵活的配置和调整,以满足不同场景的要求。冷热分离一般适用于以下需求场景: 数据存储周期长:面对历史数据的不断增加,存储成本也随之增加。 冷热数据访问频率及性能要求不同:热数据访问频率高且需要快速响应,而冷数据访问频率低且响应速度要求不高。
  • 原理介绍 创建表:CloudTable Doris通过文件系统在本地数据目录创建目录。 写数据:调用文件系统相关功能,生成文件到本地数据目录下。 合并数据:定期读取数据文件rowset,判断数据时间戳和时间线。如果当前时间减去写入时间小于TTL设置的值,则文件不移动。如果当前时间减去写入时间大于TTL设置的值,则会在系统后台执行并调用OBS SDK数据写入OBS,随后将本地文件删除。 查询数据:用户在表上进行对应的查询时,Doris会根据对应Partition使用的Policy信息找到对应的OBS并行文件系统的相关路径,并根据不同Tablet下的Rowset信息下载查询所需的数据到本地进行运算。
  • 数据模型的选择建议 因为数据模型在建表时就已经确定,且无法修改。所以,选择一个合适的数据模型非常重要。 Aggregate模型可以通过预聚合,极大地降低聚合查询时所需扫描的数据量和查询的计算量,适合有固定模式的报表类查询场景,但是该模型不适用于count(*)查询。同时因为固定了Value列上的聚合方式,在进行其他类型的聚合查询时,需要考虑语义正确性。 Unique模型针对需要唯一主键约束的场景,可以保证主键唯一性约束。但是无法利用ROLLUP等预聚合带来的查询优势。 对于聚合查询有较高性能需求的用户,推荐使用写时合并实现。 Unique模型仅支持整行更新,如果用户既需要唯一主键约束,又需要更新部分列(例如将多张源表导入到一张Doris表的场景),则可以考虑使用Aggregate模型,同时将非主键列的聚合类型设置为REPLACE_IF_NOT_NULL。 Duplicate适合任意维度的Ad-hoc查询。虽然无法利用预聚合的特性,但是不受聚合模型的约束,可以发挥列存模型的优势(只读取相关列,而不需要读取所有Key列)。
  • Aggregate模型 建Aggregate模型表语句示例如下: CREATE TABLE IF NOT EXISTS example_db.example_tbl ( `user_id` LARGEINT NOT NULL COMMENT "用户id", `date` DATE NOT NULL COMMENT "数据灌入日期时间", `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `gender` TINYINT COMMENT "用户性别", `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间", `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费", `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间", `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间" ) AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `gender`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" ); 当导入数据时,对于Key列相同的行会聚合成一行,而Value列会按照设置的AggregationType进行聚合。 AggregationType目前有以下四种聚合方式: SUM:求和,多行的Value进行累加。 REPLACE:替代,下一批数据中的Value会替换之前导入过的行中的Value。 MAX:保留最大值。 MIN:保留最小值。 表中的列按照是否设置了AggregationType,分为Key (维度列) 和Value(指标列)。例如,没有设置AggregationType的,如user_id、date、age等称为Key,而设置了AggregationType的称为Value。
  • Unique模型 读时合并 这类表没有聚合需求,只需保证主键(user_id和username)的唯一性。且Unique模型的读时合并实现完全可以用Aggregate模型中的REPLACE方式替代。建表示例如下: CREATE TABLE IF NOT EXISTS example_db.example_tbl ( `user_id` LARGEINT NOT NULL COMMENT "用户id", `username` VARCHAR(50) NOT NULL COMMENT "用户昵称", `city` VARCHAR(20) COMMENT "用户所在城市", `age` SMALLINT COMMENT "用户年龄", `gender` TINYINT COMMENT "用户性别", `phone` LARGEINT COMMENT "用户电话", `address` VARCHAR(500) COMMENT "用户地址", `register_time` DATETIME COMMENT "用户注册时间" ) UNIQUE KEY(`user_id`, `username`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" );
  • Duplicate模型 数据既没有主键,也没有聚合需求时,可以使用Duplicate数据模型建表。Duplicate模型数据完全按照导入文件中的数据进行存储,不会有任何聚合。即使两行数据完全相同,也都会保留。 而在建表语句中指定的DUPLICATE KEY,只是用来指明底层数据按照指定的列进行排序。 建Duplicate模型表语句如下: CREATE TABLE IF NOT EXISTS example_db.example_tbl ( `timestamp` DATETIME NOT NULL COMMENT "日志时间", `type` INT NOT NULL COMMENT "日志类型", `error_code` INT COMMENT "错误码", `error_msg` VARCHAR(1024) COMMENT "错误详细信息", `op_id` BIGINT COMMENT "负责人id", `op_time` DATETIME COMMENT "处理时间" ) DUPLICATE KEY(`timestamp`, `type`, `error_code`) DISTRIBUTED BY HASH(`type`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" );
  • 前提条件 已创建包含Doris服务的集群,集群内各服务运行正常。 待连接Doris数据库的节点与MRS集群网络互通。 创建具有Doris管理权限的用户。 集群已启用Kerberos认证(安全模式) 在FusionInsight Manager中创建一个人机用户,例如“dorisuser”,创建一个拥有“Doris管理员权限”的角色绑定给该用户。 使用新建的用户dorisuser重新登录FusionInsight Manager,修改该用户初始密码。 集群未启用Kerberos认证(普通模式) 使用admin用户连接Doris后,创建具有管理员权限的角色并绑定给用户。 已安装MySQL客户端,相关操作可参考使用MySQL客户端连接Doris。 如果Doris通过Broker Load跨集群导入数据,需要配置跨集群互信,相关操作可参考配置跨Manager集群互信。
  • 慢查询参数说明 表2 慢查询参数说明 参数名称 参数说明 查询id 内部生成的唯一ID。 查询语句 具体慢查询的SQL语句。 开始时间 执行慢查询SQL语句的开始时间。 结束时间 执行慢查询SQL语句的结束时间。 数据库 慢查询语句中表所在的数据库名称。 实例名称 仅在“正在进行的慢查询”页签显示,表示执行当前慢SQL查询任务的FE实例节点。 占用的内存空间 仅在“已经结束的查询”页签显示,执行慢SQL消耗的内存空间大小,单位是字节。 查询时长 慢查询SQL语句当前累计执行的时间,单位是秒。 用户 执行慢查询SQL语句的Doris用户。 客户端IP 提交该慢查询SQL语句的客户端IP。 状态 慢查询SQL语句的执行状态,包括: 正在运行:正在运行的慢查询SQL语句。 已取消:在“正在进行的慢查询”页签中单击慢查询SQL语句“操作”列的“终止”,即可结束对应慢查询SQL语句。 已结束:已经正常运行完成的慢查询SQL语句。 操作 仅在“正在进行的慢查询”页签显示,表示当前查询出来的慢SQL语句,可以单击“终止”结束该慢SQL语句查询。
  • 操作场景 Doris作为一个ROLAP模式的数据库,底层需依赖强大的关系型数据库引擎作为支撑。高并发、聚合查询等是常见的查询场景,但由于MRS Doris不支持慢查询管理,缺少运维监控能力,在实际问题定界过程中无法可视化地获取查询SQL的执行信息。因此需要新增Doris慢查询管理功能来提高Doris的运维监控能力。 需开启Doris慢查询功能才能在Manager界面可视化显示并管理Doris慢查询信息。默认情况下,为了减少慢查询对环境资源的影响,Doris慢查询功能是关闭的,可通过配置自定义参数“query_history_enable”开启该功能。 该功能仅适用于MRS 3.5.0及之后版本集群。
  • 创建Doris租户 登录FusionInsight Manager,单击“租户资源”。 在“租户资源管理”页面单击,打开添加租户的配置页面,参见表1为租户配置属性。 表1 租户参数介绍 参数名称 描述 名称 指定当前租户的名称,长度为3~50个字符,可包含数字、字母或下划线(_),但不支持创建仅包含数字的Doris租户名称。 根据业务需求规划租户的名称,不得与当前集群中已有的角色、HDFS目录或者Yarn队列重名。 租户类型 选择“叶子租户”。 说明: 创建Doris租户,租户类型只能选择“叶子租户”。 计算资源 只创建Doris相关租户时,不选择“Yarn”。 存储资源 只创建Doris相关租户时,不选择“HDFS”。 服务 单击“关联服务”,在关联服务配置以下参数并单击“确定”: “服务”:选择“Doris”。 “关联类型”:默认“共享”。 以下参数详细说明可参见表1。 “CPU配额权重”:租户占用CPU资源的相对权重,即相对占比,竞争时生效。 “内存限额占比”:租户最大占用内存资源的百分比,如该值设置为“10”,则当前租户在不同BE节点内存可用为:BE可用内存 * 10%。因为Doris存在默认租户normal,占用了90%,所以其他租户可设置上限为10%,若总和超过100%,Doris租户将创建失败。 “并发数”:租户最大可运行查询任务的并发数,超过并发数的查询会进入等待队列。 “队列长度”:租户最大等待执行的查询任务数。 “队列等待时长(毫秒)”:租户等待执行的查询任务的最大等待时长,单位为毫秒。 “开启内存软隔离”:默认关闭内存软隔离。如果开启内存软隔离,在资源充足时,可超额占用限额以外内存,在资源紧张时,才会释放多占用的内存。如果关闭内存软隔离,则该Workload Group为内存硬隔离,超过内存可用限额时,部分SQL将被取消或者拒绝执行。 描述 配置当前租户的描述信息。 单击“确定”,等待界面提示租户创建成功。 Doris租户创建完成后,可以在“租户资源管理”列表中查看并修改租户资源。 在FusionInsight Manager页面,选择“租户资源”,在租户列表中选中需要查看的Doris租户,查看租户概述和资源配额。 选择“资源”,单击“资源详情”后的,对租户资源进行修改。 修改完成后,单击“确定”,返回“资源”页面,展示修改后的资源详情。 在“概述”的“资源配额”是静态的,并不是实时刷新,只在加载时更新。 因为Doris租户代表的是Workload Group,是对组内任务在单个实例节点的计算资源限制,所以“资源配额”和“图表”都是对指标均值的监控,“图表”每30秒刷新一次。
  • SDK 服务通过MySQL协议与Doris建立连接,部分语言的SDK已经提供了高可用能力,例如MySQL JDBC可以使用自动重试机制,建立连接时通过如下配置设置数据源: jdbc:mysql:loadbalance://[host1][:port],[host2][:port][,[host3][:port]]...[/[database]][?propertyName1=propertyValue1[&propertyName2=propertyValue2]...] 详细内容可参考https://dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-j2ee-concepts-managing-load-balanced-connections.html。
  • 原因分析 Doris支持一个BE节点配置多个存储路径,并支持指定路径的存储介质属性,如SSD或HDD。通常情况下,每块盘配置一个存储路径即可。 如果“be.conf”中只配置了SSD的介质,而FE中参数“default_storage_medium”默认为HDD,因此建表时会发现没有HDD介质的存储而报错。Doris并不会自动感知存储路径所在磁盘的实际存储介质类型,需要用户在路径配置中显式的表示。“.HDD”和“.SSD”只是用于标识存储目录“相对”的“低速”和“高速”之分,而并不是标识实际的存储介质类型,所以如果BE节点上的存储路径没有介质区别,则无需填写后缀。
  • 基础概念 Internal Catalog Doris原有的Database和Table都将归属于Internal Catalog。Internal Catalog是内置的默认Catalog,用户不可修改或删除。 External Catalog 可以通过CREATE CATA LOG 命令创建一个External Catalog,创建后,可以通过SHOW CATALOGS命令查看已创建的Catalog。 切换Catalog 用户登录Doris后,默认进入Internal Catalog,因此默认的数据库使用和之前版本并无差别,可以直接使用SHOW DATABASES,USE DB等命令查看和切换数据库。 用户可以通过SWITCH命令切换Catalog,例如: SWITCH internal; SWITCH hive_catalog; 切换后,可以直接通过SHOW DATABASES,USE DB等命令查看和切换对应Catalog中的Database。Doris会自动同步Catalog中的Database和Table。用户可以像使用Internal Catalog一样,对External Catalog中的数据进行查看和访问。 当前,Doris只支持对External Catalog中的数据进行只读访问。 删除Catalog External Catalog中的Database和Table都是只读的,但是可以删除Catalog(Internal Catalog无法删除)。可以通过DROP CATALOG命令删除一个External Catalog。 该操作仅会删除Doris中该Catalog的映射信息,并不会修改或变更任何外部数据目录的内容。 Resource Resource是一组配置的集合。用户可以通过CREATE RESOURCE命令创建一个Resource,之后可以在创建Catalog时使用这个Resource。 一个Resource可以被多个Catalog使用,以复用其中的配置。