跳转到主要内容

配置 Apache Druid 以使用 Kerberos 认证的 Apache Hadoop 作为深度存储

设置

以下是需要复制到 Druid 配置文件夹中的配置文件

  1. hdfs-site.xml
  2. core-site.xml

HDFS 文件夹与权限

  1. 为 Druid 深度存储选择任意文件夹名称,例如 'druid'

  2. 在 HDFS 的所需父目录下创建该文件夹。例如:hdfs dfs -mkdir /druidhdfs dfs -mkdir /apps/druid

  3. 为 Druid 进程分配适当的权限,以便其能够访问该文件夹。这将确保 Druid 能够在 HDFS 中创建必要的子文件夹(如 data 和 indexing_log)。例如,如果 Druid 进程以 'root' 用户身份运行,则执行:

    hdfs dfs -chown root:root /apps/druid

    或者

    hdfs dfs -chmod 777 /apps/druid

Druid 会在这个新创建的文件夹下自动创建必要的子文件夹以存储数据和索引。

Druid 设置

编辑 conf/druid/_common/common.runtime.properties 文件,加入 HDFS 相关属性。所使用的存储路径与上述示例中的路径一致。

common.runtime.properties

# Deep storage
#
# For HDFS:
druid.storage.type=hdfs
druid.storage.storageDirectory=/druid/segments
# OR
# druid.storage.storageDirectory=/apps/druid/segments

注意:请注释掉文件中有关本地存储 (Local storage) 和 S3 存储 (S3 Storage) 的参数

同时将 hdfs-storage 核心扩展添加到 conf/druid/_common/common.runtime.properties

#
# Extensions
#

druid.extensions.directory=dist/druid/extensions
druid.extensions.loadList=["mysql-metadata-storage", "druid-hdfs-storage", "druid-kerberos"]

Kerberos 设置

创建一个具有 Druid 数据访问权限的无头 (headless) keytab。

编辑 conf/druid/_common/common.runtime.properties 并添加以下属性

druid.hadoop.security.kerberos.principal
druid.hadoop.security.kerberos.keytab

例如

druid.hadoop.security.kerberos.principal=hdfs-test@EXAMPLE.IO
druid.hadoop.security.kerberos.keytab=/etc/security/keytabs/hdfs.headless.keytab

重启 Druid 服务

完成上述更改后,重启 Druid。这将确保 Druid 能够与启用了 Kerberos 的 Hadoop 正常工作。