首页 > 其他分享 >doris:远程存储

doris:远程存储

时间:2025-01-15 11:57:48浏览次数:3  
标签:存储 s3 POLICY policy my 远程 doris

概述

远程存储支持将冷数据放到外部存储(例如对象存储,HDFS)上。

注意

远程存储的数据只有一个副本,数据可靠性依赖远程存储的数据可靠性,您需要保证远程存储有ec(擦除码)或者多副本技术确保数据可靠性。

使用方法

冷数据保存到 S3 兼容存储

第一步: 创建 S3 Resource。

CREATE RESOURCE "remote_s3"
PROPERTIES
(
    "type" = "s3",
    "s3.endpoint" = "bj.s3.com",
    "s3.region" = "bj",
    "s3.bucket" = "test-bucket",
    "s3.root.path" = "path/to/root",
    "s3.access_key" = "bbb",
    "s3.secret_key" = "aaaa",
    "s3.connection.maximum" = "50",
    "s3.connection.request.timeout" = "3000",
    "s3.connection.timeout" = "1000"
);

提示

创建 S3 RESOURCE 的时候,会进行 S3 远端的链接校验,以保证 RESOURCE 创建的正确。

第二步: 创建 STORAGE POLICY。

之后创建 STORAGE POLICY,关联上文创建的 RESOURCE:

CREATE STORAGE POLICY test_policy
PROPERTIES(
    "storage_resource" = "remote_s3",
    "cooldown_ttl" = "1d"
);

第三步: 建表时使用 STORAGE POLICY。

CREATE TABLE IF NOT EXISTS create_table_use_created_policy 
(
    k1 BIGINT,
    k2 LARGEINT,
    v1 VARCHAR(2048)
)
UNIQUE KEY(k1)
DISTRIBUTED BY HASH (k1) BUCKETS 3
PROPERTIES(
    "enable_unique_key_merge_on_write" = "false",
    "storage_policy" = "test_policy"
);

注意

UNIQUE 表如果设置了 "enable_unique_key_merge_on_write" = "true" 的话,无法使用此功能。

冷数据保存到 HDFS

第一步: 创建 HDFS RESOURCE:

CREATE RESOURCE "remote_hdfs" PROPERTIES (
        "type"="hdfs",
        "fs.defaultFS"="fs_host:default_fs_port",
        "hadoop.username"="hive",
        "hadoop.password"="hive",
        "dfs.nameservices" = "my_ha",
        "dfs.ha.namenodes.my_ha" = "my_namenode1, my_namenode2",
        "dfs.namenode.rpc-address.my_ha.my_namenode1" = "nn1_host:rpc_port",
        "dfs.namenode.rpc-address.my_ha.my_namenode2" = "nn2_host:rpc_port",
        "dfs.client.failover.proxy.provider.my_ha" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
    );

第二步: 创建 STORAGE POLICY。

CREATE STORAGE POLICY test_policy PROPERTIES (
    "storage_resource" = "remote_hdfs",
    "cooldown_ttl" = "300"
)

第三步: 使用 STORAGE POLICY 创建表。

CREATE TABLE IF NOT EXISTS create_table_use_created_policy (
    k1 BIGINT,
    k2 LARGEINT,
    v1 VARCHAR(2048)
)
UNIQUE KEY(k1)
DISTRIBUTED BY HASH (k1) BUCKETS 3
PROPERTIES(
"enable_unique_key_merge_on_write" = "false",
"storage_policy" = "test_policy"
);

注意

UNIQUE 表如果设置了 "enable_unique_key_merge_on_write" = "true" 的话,无法使用此功能。

存量表冷却到远程存储

除了新建表支持设置远程存储外,Doris还支持对一个已存在的表或者 PARTITION,设置远程存储。

对一个已存在的表,设置远程存储,将创建好的STORAGE POLICY与表关联:

ALTER TABLE create_table_not_have_policy set ("storage_policy" = "test_policy");

对一个已存在的PARTITION,设置远程存储,将创建好的STORAGE POLICY与PARTITON关联:

ALTER TABLE create_table_partition MODIFY PARTITION (*) SET("storage_policy"="test_policy");

提示

注意,如果用户在建表时给整张 Table 和部分 Partition 指定了不同的 Storage Policy,Partition 设置的 Storage policy 会被无视,整张表的所有 Partition 都会使用 table 的 Policy. 如果您需要让某个 Partition 的 Policy 和别的不同,则可以使用上文中对一个已存在的 Partition,关联 Storage policy 的方式修改。

具体可以参考 Docs 目录下RESOURCE、 POLICY、 CREATE TABLE、 ALTER TABLE等文档。

配置 compaction

  • BE 参数cold_data_compaction_thread_num可以设置执行远程存储的 Compaction 的并发,默认是 2。

  • BE 参数cold_data_compaction_interval_sec可以设置执行远程存储的 Compaction 的时间间隔,默认是 1800,单位:秒,即半个小时。

限制

  • 使用了远程存储的表不支持备份。

  • 不支持修改远程存储的位置信息,比如 endpoint、bucket、path。

  • Unique 模型表在开启 Merge-on-Write 特性时,不支持设置远程存储。

  • Storage policy 支持创建、修改和删除,删除前需要先保证没有表引用此 Storage policy。

冷数据空间

查看

方式一:通过 show proc '/backends'可以查看到每个 BE 上传到对象的大小,RemoteUsedCapacity 项,此方式略有延迟。

方式二:通过 show tablets from tableName 可以查看到表的每个 tablet 占用的对象大小,RemoteDataSize 项。

垃圾回收

远程存储上可能会有如下情况产生垃圾数据:

  1. 上传 rowset 失败但是有部分 segment 上传成功。

  2. 上传的 rowset 没有在多副本达成一致。

  3. Compaction 完成后,参与 compaction 的 rowset。

垃圾数据并不会立即清理掉。BE 参数remove_unused_remote_files_interval_sec可以设置远程存储的垃圾回收的时间间隔,默认是 21600,单位:秒,即 6 个小时。

查询与性能优化

为了优化查询的性能和对象存储资源节省,引入了本地 Cache。在第一次查询远程存储的数据时,Doris 会将远程存储的数据加载到 BE 的本地磁盘做缓存,Cache 有以下特性:

  • Cache 实际存储于 BE 本地磁盘,不占用内存空间。

  • Cache 是通过 LRU 管理的,不支持 TTL。

具体配置请参考(../../lakehouse/filecache)。

常见问题

  1. ERROR 1105 (HY000): errCode = 2, detailMessage = Failed to create repository: connect to s3 failed: Unable to marshall request to JSON: host must not be null.

S3 SDK 默认使用 virtual-hosted style 方式。但某些对象存储系统 (如:minio) 可能没开启或没支持 virtual-hosted style 方式的访问,此时我们可以添加 use_path_style 参数来强制使用 path style 方式:

CREATE RESOURCE "remote_s3"
PROPERTIES
(
    "type" = "s3",
    "s3.endpoint" = "bj.s3.com",
    "s3.region" = "bj",
    "s3.bucket" = "test-bucket",
    "s3.root.path" = "path/to/root",
    "s3.access_key" = "bbb",
    "s3.secret_key" = "aaaa",
    "s3.connection.maximum" = "50",
    "s3.connection.request.timeout" = "3000",
    "s3.connection.timeout" = "1000",
    "use_path_style" = "true"
);

标签:存储,s3,POLICY,policy,my,远程,doris
From: https://blog.csdn.net/qq_36070104/article/details/145157595

相关文章

  • 如何利用可视化工具提高远程设计团队的工作效率
    一、远程设计团队面临的主要挑战远程办公虽然提供了灵活性,但也使得设计团队面临了若干挑战。以下是远程设计团队常见的几大问题:1.时区差异带来的挑战设计团队的成员通常分布在不同的时区,这种地理上的分散性直接影响到团队协作的效率。举例来说,当一个位于美国的设计师完成了设......
  • MySQL(高级特性篇) 07 章——InnoDB数据存储结构
    一、数据库的存储结构:页索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切地说是存储在页结构中。另一方面,索引是在存储引擎中实现的,MySQL服务器上的存储引擎负责对表中数据的读取和写入工作。不同存储引擎中存放的格式一般是不同的,甚至有的......
  • 宝塔面板安全问题及远程端口设置
    当您遇到宝塔面板安全问题及远程端口设置时,确保服务器的安全性和稳定性至关重要。以下是如何处理这些问题的详细步骤和建议:确认远程端口设置:您提到已经将远程端口修改为33079,这是一个很好的做法,因为非标准端口可以增加额外的安全层。请确保该端口在服务器内部防火墙和云服务商......
  • 远程连接不上服务器,密码正确却无法登录
    关于您提到的远程连接不上服务器的问题,尽管您确认密码正确,但仍无法登录。我们将为您提供详细的解决方案,帮助您排查并解决这个问题。分析问题原因网络连接问题:您的本地网络环境可能存在故障,导致无法与服务器建立稳定的TCP连接。例如,路由器配置错误、防火墙阻止了特定端口的流......
  • 远程桌面无法复制粘贴传输文件解决办法
    第一步:打开远程桌面连接Windows+R键,打开运行,输入mstsc回车,打开远程桌面连接对话框。  第二步:在对话框的左下角找到“显示选项”  第三步:找到“本地资源”这一栏,点开它,找到粘贴板,勾选中。  检查服务器第一步:打开远程服务器,在服务器的任务栏空白处点击鼠标右键,选......
  • 跟我一起学 Python 数据处理(三十八):数据案例实战与存储要点解析
    跟我一起学Python数据处理(三十八):数据案例实战与存储要点解析在数据处理的学习之旅中,我们致力于与各位共同成长,探索数据的奥秘。上两篇博客分别介绍了多种数据来源和获取方法,今天我们将通过实际案例进一步深化理解,并着重探讨数据存储方面的关键知识。一、案例深度剖析(一......
  • doris&clickhouse&spark的元数据解析
    1.元数据的核心作用-数据目录管理-权限管理-分片信息-版本控制-资源调度2.基本组成部分-表结构定义-分区信息-统计信息-依赖关系-访问控制3.各系统的特点Doris:-FE管理的表定义、分区等-分布式事务相关元数据ClickHouse:-ZK存储的集群......
  • k8s OpenLocal存储
    参考项目https://github.com/alibaba/open-localv0.7.1NodeLocalStorage定义NodeLocalStoragecr表示每个k8s节点本地存储资源信息。controller创建后由节点上agent更新status,从而维护存储信息。apiVersion:csi.aliyun.com/v1alpha1kind:NodeLocalStoragespec:nodeName......
  • debian或Ubuntu中开启ssh允许root远程ssh登录的方法
    引言在Debian或Ubuntu系统中,默认情况下是禁止root用户通过SSH远程登录的。这是出于安全考虑,因为root用户拥有系统的最高权限,直接通过SSH登录存在较高的安全风险。然而,在某些情况下,您可能需要启用root用户的远程SSH访问。以下是详细的步骤,教您如何在Debian或Ubuntu系统中安全地启......
  • C:\Users\Administrator\Local Settings\temp 是 Windows 操作系统中的一个临时文
    C:\Users\Administrator\LocalSettings\temp是Windows操作系统中的一个临时文件夹,通常用于存储操作系统和应用程序在运行时生成的临时数据。具体来说,temp文件夹用于存放临时文件,例如:安装文件:一些程序在安装过程中会将临时文件放在这里。缓存文件:一些程序可能会将数据缓存......