跳到主要内容

JuiceFS

版本支持

Doris 4.0.2 起支持

JuiceFS 是一款开源的、高性能的云原生分布式文件系统,完全兼容 HDFS API。Doris 将 jfs:// 协议视为 HDFS 兼容协议,因此你可以使用与 HDFS 相同的方式访问存储在 JuiceFS 中的数据。

本文档用于介绍访问 JuiceFS 时所需的参数。这些参数适用于:

  • Catalog 属性。
  • Table Valued Function 属性。
  • Broker Load 属性。
  • Export 属性。
  • Outfile 属性。

前提条件

访问 JuiceFS 依赖 juicefs-hadoop 客户端 jar 包。从 Doris 4.0.2 起,构建系统会自动下载并打包该 jar 包,存放位置如下:

  • FE:fe/lib/juicefs/
  • BE:be/lib/java_extensions/juicefs/

如果手动部署,请从 Maven Central 下载 juicefs-hadoop-<version>.jar,并放置到上述目录中。

参数总览

由于 JuiceFS 兼容 HDFS,因此与 HDFS 共享相同的认证参数。此外,还需配置以下 JuiceFS 特有的参数:

属性名称描述是否必须
fs.defaultFS默认文件系统 URI,例如 jfs://cluster
fs.jfs.implHadoop FileSystem 实现类,必须设置为 io.juicefs.JuiceFileSystem
juicefs.<cluster>.metaJuiceFS 元数据引擎端点,例如 redis://127.0.0.1:6379/1mysql://user:pwd@(host:port)/db。其中 <cluster> 需替换为 fs.defaultFS URI 中的集群名称。

关于 HDFS 认证参数(Simple 或 Kerberos),请参考 HDFS 文档。

所有以 juicefs. 为前缀的属性会透传给底层 JuiceFS Hadoop 客户端。

配置示例

配合 Hive Metastore 创建 Catalog

CREATE CATALOG jfs_hive PROPERTIES (
'type' = 'hms',
'hive.metastore.uris' = 'thrift://<hms_host>:9083',
'fs.defaultFS' = 'jfs://cluster',
'fs.jfs.impl' = 'io.juicefs.JuiceFileSystem',
'juicefs.cluster.meta' = 'redis://127.0.0.1:6379/1',
'hadoop.username' = 'doris'
);

Broker Load

LOAD LABEL example_db.label1
(
DATA INFILE("jfs://cluster/path/to/data/*")
INTO TABLE `my_table`
)
WITH BROKER
(
"fs.defaultFS" = "jfs://cluster",
"fs.jfs.impl" = "io.juicefs.JuiceFileSystem",
"juicefs.cluster.meta" = "redis://127.0.0.1:6379/1",
"hadoop.username" = "doris"
);

Table Valued Function

SELECT * FROM TABLE(
"uri" = "jfs://cluster/path/to/file.parquet",
"format" = "parquet",
"fs.jfs.impl" = "io.juicefs.JuiceFileSystem",
"juicefs.cluster.meta" = "redis://127.0.0.1:6379/1"
);

使用建议

  • 确保 juicefs-hadoop jar 包部署在所有 FE 和 BE 节点上。
  • juicefs.<cluster>.meta 属性中的集群名称必须与 jfs:// URI 中的集群名称一致。例如,如果 fs.defaultFS = jfs://mycluster,则元数据属性应为 juicefs.mycluster.meta
  • JuiceFS 支持多种元数据引擎(Redis、MySQL、TiKV、SQLite 等),请根据规模和可用性需求选择。
  • HDFS 的 Kerberos 认证、HA Nameservice 配置以及 Hadoop 配置文件等,均与 JuiceFS 兼容。