配置 Apache Druid 以使用 Kerberos 认证的 Apache Hadoop 作为深度存储
设置
以下是需要复制到 Druid 配置文件夹中的配置文件
- hdfs-site.xml
- core-site.xml
HDFS 文件夹与权限
-
为 Druid 深度存储选择任意文件夹名称,例如 'druid'
-
在 HDFS 的所需父目录下创建该文件夹。例如:
hdfs dfs -mkdir /druid或hdfs dfs -mkdir /apps/druid -
为 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 正常工作。