华为云用户手册

  • 创建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秒刷新一次。
  • 使用方法 在创建的Kafka Connector Source流表中,设置 'format' = 'drs-json'。 SQL示例如下: CREATE TABLE KafkaSource ( `user_id` VARCHAR, `user_name` VARCHAR, `age` INT ) WITH ( 'connector' = 'kafka', 'topic' = 'test_source', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'latest-offset', 'format' = 'drs-json', 'properties.sasl.kerberos.service.name' = 'kafka', 'properties.security.protocol' = 'SASL_PLAINTEXT', 'properties.kerberos.domain.name' = 'hadoop.系统 域名 ' ); CREATE TABLE printSink( `user_id` VARCHAR, `user_name` VARCHAR, `age` INT ) WITH ( 'connector' = 'print' ); Insert into printSink select * from KafkaSource;
  • 使用方法 在创建的Source流表中添加“subtask.scan.records-per-second.limit”参数,该参数表示每秒消费Kafka单分区记录数,因此Source端整体限流速率为:min( source parallelism * subtask.scan.records-per-second.limit,kafka partitions num * subtask.scan.records-per-second.limit) SQL示例如下: CREATE TABLE KafkaSource ( `user_id` VARCHAR, `user_name` VARCHAR, `age` INT ) WITH ( 'connector' = 'kafka', 'topic' = 'test_source', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'latest-offset', 'format' = 'csv', 'subtask.scan.records-per-second.limit' = '1000', 'properties.sasl.kerberos.service.name' = 'kafka', 'properties.security.protocol' = 'SASL_PLAINTEXT', 'properties.kerberos.domain.name' = 'hadoop.系统域名' ); CREATE TABLE KafkaSink( `user_id` VARCHAR, `user_name` VARCHAR, `age` INT ) WITH ( 'connector' = 'kafka', 'topic' = 'test_sink', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'scan.startup.mode' = 'latest-offset', 'format' = 'csv', 'properties.sasl.kerberos.service.name' = 'kafka', 'properties.security.protocol' = 'SASL_PLAINTEXT', 'properties.kerberos.domain.name' = 'hadoop.系统域名' ); Insert into KafkaSink select * from KafkaSource;
  • 使用约束 不支持Hudi表的脱敏。 不支持非SQL使用方法的脱敏。 不支持涉及直接读写HDFS的操作的脱敏。 不支持复杂类型array、map、struct的脱敏。 只支持spark-beeline(JDBC 连接)方式提交Spark作业。 脱敏策略传递时,若目标表已有脱敏策略且与源表有冲突,则目标表脱敏策略强制重置为Custom:“***”。 当前仅支持int、char、varchar、date、decimal、float、bigint、timestamp 、tinyint、smallint、double、string、binary数据类型的脱敏,其中int、date、decimal、float、bigint、timestamp 、tinyint、smallint、double类型配置脱敏策略后,spark-beeline查询结果存在与策略预期不一致的现象,但查询结果非原始值,如需要与策略结果保持一致,则推荐使用“Nullify”脱敏策略。 对于不支持的数据类型,如果配置了脱敏策略或输出列涉及脱敏传递,最终都按“Nullify”脱敏策略处理。
  • 使用约束 支持形如“select id, (select group_name from emp2 b where a.group_id=b.group_id) as banji from emp1 a”的关联子查询SQL语法。 支持形如“select id, (select distinct group_name from emp2 b where a.group_id=b.group_id) as banji from emp1 a”的关联子查询SQL语法。
  • 调优案例 某用户使用Hudi MOR表存储其设备的订单出借信息,可通过订单号查询订单详细信息,每天订单量相对稳定,部分节假日可能存在小高峰,该场景存在以下特点: 订单号作为唯一值,并且80%以上的查询场景使用订单号进行等值查询,SQL形如select * from table where order_id = 'id1'; 每天订单量稳定,可采用天作为分区键。 历史分区更新不频繁,主要数据更新在新分区。 调优建议: 使用Bucket索引建表(Spark-SQL),并且索引键为订单ID, 分区键为日期。 定期使用compaction合并日志,提高查询性能。 SQL示例: set hoodie.compact.inline=true; set hoodie.schedule.compact.only.inline=true; set hoodie.run.compact.only.inline=false; create table hudi_mor (order_id int, comb int, col1 string, col2 string, dt int) using hudi partitioned by(dt) options(type='mor', primaryKey='order_id', preCombineField='comb', hoodie.index.type = 'BUCKET', hoodie.bucket.index.num.buckets=100, hoodie.bucket.index.hash.field = 'order_id')
  • 参数说明 表1 MemArtsCC参数说明 参数 参数说明 默认值 access_token_enable Aceess token认证的开关。 开启后,SDK通过worker读取缓存需要经过token校验。SDK首次向worker发送读请求时,worker会做一次kerberos认证,生成一个密钥,保存在本地和Zookeeper,然后用这个密钥生成一个token,返回给SDK,SDK向worker发送读请求时,会将该token传入,和密钥进行校验,校验通过才允许读取缓存。 安全集群为true,普通集群为false cache_cap_max_availabe_rate 每块盘的最大可用容量比率。 设置范围为0.01~1.0,间隔为0.01。本参数决定使用MemArtsCC磁盘最大容量百分比,默认值是30%,比如3TB的磁盘,MemArtsCC最大可使用的缓存空间为900GB,缓存超过900GB,MemArtsCC动态淘汰缓存。 0.3 cache_reserved_space 每块盘需要动态预留的空间。 cache_reserved_space决定磁盘预留空间,默认值为512MB,建议设置为磁盘容量的10%以上。比如3TB的磁盘,cache_reserved_space设置为300GB,cache_cap_max_available_rate设置为30%,如果磁盘空间小于300GB,尽管MemArtsCC的缓存没有达到最大可使用容量900GB,MemArtsCC也会动态淘汰缓存。 512MB auto_isolate_broken_disk 自动隔离故障磁盘开关。 true broken_disk_list 故障磁盘列表。 -
  • Join-To-Live Flink双流Join需要将数据存储在状态后端,目前普遍使用Rocksdb作为状态后端。在TTL过大或无法确定TTL或数据流量增加的场景下,大流量会导致状态数据增加,增加存储压力,从而导致作业稳定性下降,或TTL过期可能出现数据关联不准确。 对于数据关联次数确定的业务,可以使用JTL(Join-To-Live)特性减少状态后端压力,JTL指根据关联次数确定数据是否过期,其可以通过如下两种方式配置: 仅支持Flink Regular Joins中的inner join语句。 不支持与作业级TTL、表级TTL、小表广播特性同时使用。 使用JTL特性的表需要指定主键,否则可能导致结果不准确。 方式一:可通过SQL Hint使用 eliminate-state.left.threshold:表示左边关联次数的阈值,超过阈值后,该条数据就会过期。 eliminate-state.right.threshold:表示右边关联次数的阈值,超过阈值后,该条数据就会过期。 示例一: SELECT * FROM t1 JOIN /*+ OPTIONS('eliminate-state.right.threshold'='1', 'eliminate-state.left.threshold'='2') */ t2 ON a1 = a2 示例二: SELECT a1, a2, a3 from t1 join /*+ OPTIONS('eliminate-state.left.threshold'='1', 'eliminate-state.right.threshold'='2') */ t2 on a1 = a2 join /*+ OPTIONS('eliminate-state.left.threshold'='3', 'eliminate-state.right.threshold'='4') */ t3 on a2 = a3 方式二:通过在“客户端安装路径/Flink/flink/conf/flink-conf.yaml”全局配置使用 table.exec.join.eliminate-state.left.threshold table.exec.join.eliminate-state.right.threshold 父主题: Flink企业级能力增强
  • 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。
  • 操作步骤 以root用户登录待安装MySQL客户端的节点。 执行以下命令查看MySQL客户端依赖库ncurses-libs的版本: rpm -qa | grep ncurses 从https://downloads.mysql.com/archives/community/下载MySQL客户端对应的软件包,建议安装8.x版本,以Red Hat发行版本为例: 如果2的依赖库是6.x建议下载对应OS Version为Red Hat 8的MySQL软件包。 如果2的依赖库是5.x建议下载对应OS Version为Red Hat 7的MySQL软件包。 例如需安装的MySQL 8.0.22客户端需下载如下四个软件包: 将下载的软件包上传到待安装MySQL客户端的节点上。 在上传的文件所在目录执行以下命令,安装MySQL客户端及对应的依赖包: rpm -ivh mysql-community-client-8.0.22-1.el8.x86_64.rpm --nodeps --force rpm -ivh mysql-community-client-plugins-8.0.22-1.el8.x86_64.rpm --nodeps --force rpm -ivh mysql-community-common-8.0.22-1.el8.x86_64.rpm --nodeps --force rpm -ivh mysql-community-libs-8.0.22-1.el8.x86_64.rpm --nodeps --force 执行以下命令查看MySQL客户端的版本: mysql --version MySQL客户端安装成功后,即可访问Doris,详细操作请参见快速使用Doris。
  • 问题 Spark客户端设置fs.obs.hdfs.trash.version=1不生效,drop table后文件在回收站的存放路径不改变。 通常,默认情况: 当fs.obs.hdfs.trash.version=2时,回收站路径为:/user/.Trash/${userName}/Current 当fs.obs.hdfs.trash.version=1时,回收站路径为:/user/${userName}/.Trash/Current
  • 处理步骤 如果运行任务的BE节点故障,需查看具体的故障原因再进行解决。 如果RPC源端有大量未发送的数据超过了阈值,可设置如下参数: brpc_socket_max_unwritten_bytes:用于设置未发送的数据量的阈值,默认为1GB。如果未发送数据量超过该值,则会报OVERCROWDED错,可适当调大该值。 tablet_writer_ignore_eovercrowded:是否忽略数据导入过程中出现的OVERCROWDED错误,默认值为“false”。该参数主要用于避免导入失败,以提高导入的稳定性。 max_body_size:用于设置RPC的包大小阈值 ,默认为3GB。如果查询中带有超大 String 类型,或者bitmap类型数据时,可以通过修改该参数规避。
  • 操作场景 当HBase业务突然出现峰值,短时间内大量请求发送到一个RegionServer/HMaster时,超过其可接受的范围,就会造成过载。过载会导致应用侧读写性能下降,HBase服务侧频繁GC,严重时会导致服务实例重启等。 当前HBase具有防过载能力,可以实现拒绝超大请求、保护内部请求、记录不合理请求等功能,减少过载场景下对HBase服务的影响,保障服务稳定性。 该章节仅适用于 MRS 3.3.0及之后版本。
  • 大批量Region上下线过载场景调优 当集群规模较大,Region数过多时,同时重启多个RegionServer,当涉及需要重新上线的Region数过多时(10w+),可能会导致HMaster过载,Region上线慢。 可在Manager界面的HBase配置中调整表4中的参数,提升HMaster处理高优先级请求的能力,减少HMaster过载。 表4 大批量Region上下线过载相关参数调优 实例名称 参数名称 参数描述 调整策略 HMaster hbase.regionserver.metahandler.count HMaster处理高优先级请求的Handler数量。 调大此Handler值,不建议超过1000。 hbase.ipc.server.metacallqueue.read.ratio 高优先级请求队列中读队列的比例,会影响meta读/写Handler的数量。 建议保持默认设置,默认值为“0.5”。 RegionServer hbase.regionserver.msginterval RegionServer与HMaster进行消息传输的时间间隔。 调大此参数可以减轻HMaster压力,建议设置为15s。
  • 前提条件 集群已安装CDL、Hudi服务且运行正常。 Opengauss数据库需要开启预写日志功能,操作步骤请参考Opengauss数据库开启预写日志功能。 在FusionInsight Manager中创建一个人机用户,例如“cdluser”,加入用户组cdladmin、hadoop、kafka、supergroup,主组选择“cdladmin”组,关联角色“System_administrator”。
  • 回答 spark.sql.hive.convertInsertingPartitionedTable开关控制了Hive和Datasource表的插入写操作逻辑,使用Hive表时逻辑不会自动格式化时间戳,使用Datasource表时会自动格式化时间戳。 如果写入的分区字段是a='2016-8-1 11:45:5'会自动格式化成a='2016-08-01 11:45:05',此时查询使用a='2016-8-1 11:45:5'会报错。 正确查询方式如下: spark.sql.hive.convertInsertingPartitionedTable=true时使用datasource表逻辑,使用如下方式即可以正常查询: desc formatted test_hive_orc_snappy_internal_table partition(a='2016-08-01 11:45:05');
  • 操作步骤 使用MySQL客户端连接Doris数据库时,在命令中新增“--enable-cleartext-plugin”,命令如下: mysql --enable-cleartext-plugin -u数据库登录用户 -p数据库登录用户密码 -P数据库连接端口 -hDoris FE实例IP地址 在安装了MySQL客户端的节点执行以下命令启用mysql_clear_password插件,再重新连接Doris即可。 export LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN=1
  • 基于索引查询HBase表数据 在具有索引的用户表中,可以使用SingleColumnValueFilter来查询数据。当查询条件可以命中索引时,查询速度远快于原表查询。 索引的命中规则如下: 多个AND条件查询 当用于查询的列至少包含索引的一个列时,使用索引会提高查询性能。 例如,为C1、C2和C3创建组合索引。 该索引在以下情况下生效: Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol1) 该索引在下列情况下不生效: Filter_Condition(IndexCol2)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol2) Filter_Condition(IndexCol3) 当在查询中使用“索引列”和“非索引列”进行过滤时,使用索引可提高查询性能。当非索引列命中覆盖列时,查询性能最优;如果有需经常查询的非索引列,建议定义为覆盖列。例如: Filter_Condition(IndexCol1)AND Filter_Condition(NonIndexCol1) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(NonIndexCol1) 当多个列用于查询时,只能为组合索引中的最后一列指定值范围,而其他列只能设置为指定值。 例如,为C1、C2和C3创建组合索引。在范围查询中,只能为C3设置数值范围,过滤条件为“C1 = XXX,C2 = XXX,C3 = 数值范围”。 多个OR条件查询 例如,为C1、C2和C3创建组合索引。 仅对索引列首个字段进行过滤时(支持范围过滤),使用索引可提高查询性能。 Filter_Condition(IndexCol1)OR Filter_Condition(IndexCol1)OR Filter_Condition(IndexCol1) 对非索引和非索引列进行过滤时,无法命中索引,查询性能不会提高。 Filter_Condition(IndexCol1)OR Filter_Condition(NonIndexCol1) 组合查询时,最外层包含OR条件时无法命中索引,查询性能不会提高。 Filter_Condition(IndexCol1)OR Filter_Condition(NonIndexCol1) (Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2))OR(Filter_Condition(NonIndexCol1)) 减少OR条件使用,尤其是OR条件+范围条件,命中索引的情况下也会造成大范围查询,速度较慢。
  • HBase全局二级索引API介绍说明 使用全局索引的API都在类“org.apache.hadoop.hbase.hindex.global.GlobalIndexAdmin”中,相关接口介绍如下: 操作 接口 描述 添加索引 addIndices() 将索引添加到没有数据的表中。调用此接口会将用户指定的索引添加到表中,但会跳过生成索引数据。该接口的使用场景为用户想要在具有大量预先存在用户数据的表上批量添加索引,然后使用GlobalTableIndexer工具来构建索引数据。 addIndicesWithData() 将索引添加到有数据的表中。此方法将用户指定的索引添加到表中,并会对已经存在的用户数据创建对应的索引数据,也可先调用该方法生成索引再在存入用户数据的同时生成索引数据。当数据表中存在大量数据时,不建议使用此接口。 删除索引 dropIndices() 仅删除索引,索引元数据与索引数据均会被删除,在此操作之后,索引不能用于scan/filter操作。 索引状态修改 alterGlobalIndicesUnusable() 禁用用户指定的索引,使其不再可用于scan/filter操作。 alterGlobalIndicesActive() 启用用户指定的索引,使其可用于scan/filter操作。 alterGlobalIndicesInactive() 禁用用户指定的索引,且放弃生成索引数据,不再可用于scan/filter操作,通常用于索引修复流程。 查看已创建的索引 listIndices() 可用于列出给定表中的所有索引。 父主题: HBase常见问题
  • 检查全局二级索引数据一致性 在HBase客户端执行以下命令可检查数据一致性,如果不一致,将重新构建索引数据。一致性检查结果会保存到“{数据表所在的NameSpace}:GSI_INCONSISTENCY_TABLE”表中。 hbase org.apache.hadoop.hbase.hindex.global.tools.GlobalHIndexConsistencyTool -dt table1 -n idx3 -src BOTH -r 相关参数介绍如下: -dt,--data-table:要进行一致性检查的数据表名称。 -n,--index-name:要进行一致性检查的索引名称。 -src,--source:检查模式选择,默认为“BOTH”,支持以下模式: INDEX_TABLE_SOURCE:索引表作为源表。 DATA_TABLE_SOURCE:数据表作为源表。 BOTH:索引表和数据表均作为源表。 -r,--repair:索引数据修复选项,添加此参数,表示检查后进行修复。 -sc,--scan-caching(可选) :一致性检查/修复的MapReduce任务中scan caching大小。
  • 索引状态介绍 索引状态反映了索引当前的使用情况,全局二级索引支持以下五种状态: ACTIVE:索引正常,可以正常读写。 UNUSABLE:索引被禁用,索引数据会正常写入,查询时无法使用这个索引。 INACTIVE:索引异常,索引数据与数据表不一致,跳过生成该索引的索引数据,查询数据时无法使用该索引。 BUILDING:索引数据正常批量生成,索引数据生成工具执行结束会自动转换到ACTIVE状态,此状态下可以正常读写。 DROPPING:索引正在被删除,跳过生成该索引的索引数据,查询数据时无法使用该索引。 基于工具的索引状态修改,支持图1所示的状态转换。 图1 索引状态转换图
  • 删除HBase全局二级索引 在HBase客户端执行以下命令可删除某个索引: hbase org.apache.hadoop.hbase.hindex.global.mapreduce.GlobalTableIndexer -Dtablename.to.index='table' -Dindexnames.to.drop='idx1#idx2' 相关参数介绍如下: tablename.to.index:表示需删除的索引所在的表名称。 indexnames.to.drop:表示需要删除的索引名称,可以同时指定多个,用#号分隔。
  • 处理步骤 登录安装了MySQL的节点,连接Doris数据库。 调用BE的check_tablet_segment_lost请求自动修复丢失的副本。 curl -X POST http://192.168.67.78:29986/api/check_tablet_segment_lost?repair=true ( 192.168.67.78为异常的BE节点IP地址,29986为BE的HTTP Server的服务端口,可在Manager的Doris配置界面搜索“webserver_port”查看。 执行以下命令,获取DetailCmd。 show tablet tabletId 执行DetailCmd,当异常节点的副本已经被移除时,再次进行业务查询正常即可。
  • 原因分析 Doris支持一个BE节点配置多个存储路径,并支持指定路径的存储介质属性,如SSD或HDD。通常情况下,每块盘配置一个存储路径即可。 如果“be.conf”中只配置了SSD的介质,而FE中参数“default_storage_medium”默认为HDD,因此建表时会发现没有HDD介质的存储而报错。Doris并不会自动感知存储路径所在磁盘的实际存储介质类型,需要用户在路径配置中显式的表示。“.HDD”和“.SSD”只是用于标识存储目录“相对”的“低速”和“高速”之分,而并不是标识实际的存储介质类型,所以如果BE节点上的存储路径没有介质区别,则无需填写后缀。
  • 前提条件 已创建包含Doris服务的集群,集群内各服务运行正常。 待连接Doris数据库的节点与MRS集群网络互通。 创建具有Doris管理权限的用户。 集群已启用Kerberos认证(安全模式) 在FusionInsight Manager中创建一个人机用户,例如“dorisuser”,创建一个拥有“Doris管理员权限”的角色绑定给该用户。 使用新建的用户dorisuser重新登录FusionInsight Manager,修改该用户初始密码。 集群未启用Kerberos认证(普通模式) 使用admin用户连接Doris后,创建具有管理员权限的角色并绑定给用户。 已安装MySQL客户端,相关操作可参考使用MySQL客户端连接Doris。 已安装Flink客户端。
  • 前提条件 已创建包含Doris服务的集群,集群内各服务运行正常。 待连接Doris数据库的节点与MRS集群网络互通。 创建具有Doris管理权限的用户。 集群已启用Kerberos认证(安全模式) 在FusionInsight Manager中创建一个人机用户,例如“dorisuser”,创建一个拥有“Doris管理员权限”的角色绑定给该用户。 使用新建的用户dorisuser重新登录FusionInsight Manager,修改该用户初始密码。 集群未启用Kerberos认证(普通模式) 使用admin用户连接Doris后,创建具有管理员权限的角色并绑定给用户。 已安装MySQL客户端,相关操作可参考使用MySQL客户端连接Doris。 已安装Spark客户端。
  • 基础概念 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使用,以复用其中的配置。
  • 前提条件 已创建包含Doris服务的集群,集群内各服务运行正常。 待连接Doris数据库的节点与MRS集群网络互通。 已安装MySQL客户端,相关操作可参考使用MySQL客户端连接Doris章节。 创建具有Doris管理权限的用户。 集群已启用Kerberos认证(安全模式) 在FusionInsight Manager中创建一个人机用户,例如“dorisuser”,创建一个拥有“Doris管理员权限”的角色绑定给该用户。 使用新建的用户dorisuser重新登录FusionInsight Manager,修改该用户初始密码。 集群未启用Kerberos认证(普通模式) 使用admin用户连接Doris后,创建具有管理员权限的角色并绑定给用户。 已参考手动备份Doris数据完成备份需要恢复的Doris表或分区数据。
  • 数据恢复原理介绍 Doris数据恢复操作需指定一个远端仓库中已存在的备份数据,再将备份数据恢复到本地集群中。当提交Restore请求后,系统内部会做如下操作: 在本地创建对应的元数据 系统会在本地集群中创建恢复对应的表分区等结构。创建完成后,该表可见,但是不可访问。 本地snapshot 将在本地集群中创建的表做一个快照,是一个空快照(刚创建的表没有数据),用于在Backend上产生对应的快照目录,接收从远端仓库下载的快照文件。 下载快照 远端仓库中的快照文件,会被下载到对应的生成的快照目录中,由各个Backend并发完成。 生效快照 快照下载完成后,要将各个快照映射为当前本地表的元数据。然后重新加载这些快照,使之生效,完成最终的恢复作业。
  • 数据备份原理介绍 备份操作是将指定表或分区的数据,直接以Doris存储的文件的形式,上传到远端仓库中进行存储。当用户提交Backup请求后,系统内部会做如下操作: 快照及快照上传 备份都是对快照进行操作,快照阶段会对指定的表或分区数据文件进行快照。快照只是对当前数据文件产生一个硬链,耗时较少。快照后,对表进行的更改、导入等操作都不再影响备份的结果。快照完成后,系统会开始对这些快照文件进行逐一上传,由各个Backend并发完成。 元数据准备及上传 数据文件快照上传完成后,Frontend会首先将对应元数据写成本地文件,然后通过Broker将本地元数据文件上传到远端仓库,完成备份作业操作。 如果备份的表是动态分区表,备份之后会自动禁用动态分区属性,在执行数据恢复操作前需手动将该表的动态分区属性启用,命令为: ALTER TABLE tbl1 SET ("dynamic_partition.enable"="true") 数据备份操作不会保留表的colocate_with属性。
共100000条