Apache Doris 入门教程29:文件管理器

本文介绍了Doris中的文件管理器,包括文件的概念、权限、创建、查看和删除操作,以及BDBJE和SmallFileMgr在文件管理中的角色。还讨论了实现细节、使用限制和相关配置选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件管理器

Doris 中的一些功能需要使用一些用户自定义的文件。比如用于访问外部数据源的公钥、密钥文件、证书文件等等。文件管理器提供这样一个功能,能够让用户预先上传这些文件并保存在 Doris 系统中,然后可以在其他命令中引用或访问。

名词解释

  • BDBJE:Oracle Berkeley DB Java Edition。FE 中用于持久化元数据的分布式嵌入式数据库。
  • SmallFileMgr:文件管理器。负责创建并维护用户的文件。

基本概念

文件是指用户创建并保存在 Doris 中的文件。

一个文件由 数据库名称(database)分类(catalog) 和 文件名(file_name) 共同定位。同时每个文件也有一个全局唯一的 id(file_id),作为系统内的标识。

文件的创建和删除只能由拥有 admin 权限的用户进行操作。一个文件隶属于一个数据库。对某一数据库拥有访问权限(查询、导入、修改等等)的用户都可以使用该数据库下创建的文件。

具体操作

文件管理主要有三个命令:CREATE FILESHOW FILE 和 DROP FILE,分别为创建、查看和删除文件。这三个命令的具体语法可以通过连接到 Doris 后,执行 HELP cmd; 的方式查看帮助。

CREATE FILE

该语句用于创建并上传一个文件到 Doris 集群,具体操作可查看 CREATE FILE 。

Examples:

1. 创建文件 ca.pem ,分类为 kafka

    CREATE FILE "ca.pem"
    PROPERTIES
    (
        "url" = "https://test.bj.bcebos.com/kafka-key/ca.pem",
        "catalog" = "kafka"
    );

2. 创建文件 client.key,分类为 my_catalog

    CREATE FILE "client.key"
    IN my_database
    PROPERTIES
    (
        "url" = "https://test.bj.bcebos.com/kafka-key/client.key",
        "catalog" = "my_catalog",
        "md5" = "b5bb901bf10f99205b39a46ac3557dd9"
    );

SHOW FILE

该语句可以查看已经创建成功的文件,具体操作可查看 SHOW FILE

Examples:

1. 查看数据库 my_database 中已上传的文件

    SHOW FILE FROM my_database;

DROP FILE

该语句可以查看可以删除一个已经创建的文件,具体操作可查看 DROP FILE

Examples:

1. 删除文件 ca.pem

    DROP FILE "ca.pem" properties("catalog" = "kafka");

实现细节

创建和删除文件

当用户执行 CREATE FILE 命令后,FE 会从给定的 URL 下载文件。并将文件的内容以 Base64 编码的形式直接保存在 FE 的内存中。同时会将文件内容以及文件相关的元信息持久化在 BDBJE 中。所有被创建的文件,其元信息和文件内容都会常驻于 FE 的内存中。如果 FE 宕机重启,也会从 BDBJE 中加载元信息和文件内容到内存中。当文件被删除时,会直接从 FE 内存中删除相关信息,同时也从 BDBJE 中删除持久化的信息。

文件的使用

如果是 FE 端需要使用创建的文件,则 SmallFileMgr 会直接将 FE 内存中的数据保存为本地文件,存储在指定的目录中,并返回本地的文件路径供使用。

如果是 BE 端需要使用创建的文件,BE 会通过 FE 的 http 接口 /api/get_small_file 将文件内容下载到 BE 上指定的目录中,供使用。同时,BE 也会在内存中记录当前已经下载过的文件的信息。当 BE 请求一个文件时,会先查看本地文件是否存在并校验。如果校验通过,则直接返回本地文件路径。如果校验失败,则会删除本地文件,重新从 FE 下载。当 BE 重启时,会预先加载本地的文件到内存中。

使用限制

因为文件元信息和内容都存储于 FE 的内存中。所以默认仅支持上传大小在 1MB 以内的文件。并且总文件数量限制为 100 个。可以通过下一小节介绍的配置项进行修改。

相关配置

  1. FE 配置

    • small_file_dir:用于存放上传文件的路径,默认为 FE 运行目录的 small_files/ 目录下。
    • max_small_file_size_bytes:单个文件大小限制,单位为字节。默认为 1MB。大于该配置的文件创建将会被拒绝。
    • max_small_file_number:一个 Doris 集群支持的总文件数量。默认为 100。当创建的文件数超过这个值后,后续的创建将会被拒绝。

    如果需要上传更多文件或提高单个文件的大小限制,可以通过 ADMIN SET CONFIG 命令修改 max_small_file_size_bytes 和 max_small_file_number 参数。但文件数量和大小的增加,会导致 FE 内存使用量的增加。

  2. BE 配置

    • small_file_dir:用于存放从 FE 下载的文件的路径,默认为 BE 运行目录的 lib/small_files/ 目录下。

更多帮助

关于文件管理器使用的更多详细语法及最佳实践,请参阅 CREATE FILE 、DROP FILE 和 SHOW FILE 命令手册,你也可以在 MySql 客户端命令行下输入 HELP CREATE FILE 、HELP DROP FILEHELP SHOW FILE 获取更多帮助信息。

### 关于 Apache Doris 的介绍 Apache Doris 是一个现代化的分布式 SQL 数据库,专为实时分析而设计。该数据库支持多维在线分析处理(OLAP),能够快速执行复杂的查询操作并返回结果。其架构旨在提供高吞吐量的同时保持低延迟特性,在大规模数据集上的表现尤为突出[^1]。 #### 主要特点 - **高性能**:通过向量化执行引擎以及先进的索引技术来加速读取性能; - **易用性**:兼容 MySQL 协议,允许用户利用现有的 BI 工具轻松连接至系统; - **灵活性**:不仅适合传统的报表应用,也适用于交互式探索和即席查询等场景; - **扩展性强**:水平伸缩能力使得集群可以根据业务需求动态调整规模; ### 使用教程概览 为了帮助初次接触此系统的开发者更好地理解和掌握如何部署与管理 Apache Doris 实例,下面给出了一套简化版的操作指南: #### 准备工作环境 确保目标机器已安装 Docker 及相关依赖项之后,可以从官方镜像拉取最新版本的软件包,并启动容器实例[^2]: ```bash docker pull apachedoris/doris:latest docker run -d --name doris_fe -p 8030:8030 -e DORIS Fe.META_DIR=/var/lib/doris/meta apachedoris/doris frontend ``` 上述命令创建了一个名为 `doris_fe` 的前端节点服务进程,监听本地端口 8030 提供 Web UI 访问接口。 #### 初始化配置文件 进入刚刚建立好的容器内部修改必要的参数设置以适应特定的工作负载模式: ```bash docker exec -it doris_fe bash cd /path/to/conf/ vi fe.conf ``` 编辑完成后保存更改退出编辑器即可生效新的设定值。 #### 创建表结构定义语句 接下来编写用于描述待导入关系型表格元信息的 SQL 脚本片段如下所示: ```sql CREATE TABLE IF NOT EXISTS sales ( order_id BIGINT, product_name STRING, quantity INT, price DECIMAL(9, 2), sale_date DATE ) ENGINE=OLAP DUPLICATE KEY(order_id) DISTRIBUTED BY HASH(order_id) BUCKETS 10; ``` 这段代码声明了一个简单的销售记录集合模型,其中包含了订单编号、商品名称等多个字段属性。 #### 导入外部数据源 当完成前面几步准备工作以后就可以着手准备实际的数据加载流程了。这里假设有一个 CSV 文件位于主机目录下等待被批量插入到刚才新建的目标表内: ```bash LOAD LABEL example_db.label_1 ( DATA INFILE ("file:///host/path/sales.csv") INTO TABLE sales COLUMNS TERMINATED BY "," (order_id, product_name, quantity, price, sale_date) ); ``` 以上就是有关 Apache Doris 基础入门的一些指导说明,希望能够为广大用户提供有价值的参考资料和支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunjian286

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值