Alluxio
ProductsLanguageHome
AI-3.5 (stable)
AI-3.5 (stable)
  • 概览
  • 部署Alluxio
    • 资源需求和兼容性
    • 在Kubernetes上安装Alluxio
    • 监控和指标
    • Alluxio 集群操作
    • 系统健康检查和快速恢复
    • 采集集群信息
  • 架构
    • Alluxio 命名空间和底层文件系统命名空间
    • I/O弹性
    • worker管理与一致性哈希
  • 底层存储系统
    • Amazon AWS S3
    • HDFS
    • 阿里云 OSS
    • 腾讯 COS
    • 火山引擎 TOS
    • 谷歌云 GCS
  • Client APIs
    • 基于 FSSpec 的Alluxio Python Filesystem API
    • 基于 FUSE 的 POSIX API
      • Client 写回
    • S3 API
  • 缓存操作
    • 缓存预加载
    • 缓存过滤
    • 缓存驱逐
      • TTL (有效时间)规则
      • 优先级规则
      • 通过命令行释放缓存空间
  • 资源管理
    • 基于目录的集群配额
    • UFS 带宽限制
  • 性能优化
    • 通过副本提高读取吞吐量
    • 读取大文件
    • 元数据列表
    • 数据预拉取
    • 写入临时文件
  • 安全
    • TLS 支持
  • 性能基准测试
    • Fio 测试概览
    • MLPerf Storage 基准测试
    • COSBench 性能基准测试
  • 参考
    • 用户命令行接口
    • 指标
    • S3 API 的使用
    • 第三方授权
  • 版本发布说明
Powered by GitBook
On this page
  • 先决条件
  • 基本设置
  • 高级设置
  • 指定HDFS配置位置
  • HDFS NameNode 高可用模式
  • 用户/权限 映射
  • 连接到安全的HDFS
  • 使用特定版本挂载HDFS
  • Hadoop 本地库
  • [实验性] HDFS 回收站功能
  1. 底层存储系统

HDFS

Last updated 3 months ago

此指南描述了配置 作为 Alluxio 的底层存储系统的说明。 HDFS,即 Hadoop 分布式文件系统,是 Hadoop 应用程序使用的主要分布式存储系统,为 Hadoop 生态系统中的大数据处理提供可靠和可扩展的存储。 有关 HDFS 的更多信息,请阅读其

先决条件

为了准备使用 HDFS 与 Alluxio:

<HDFS_NAMENODE>

处理客户端连接到集群的NameNode的IP地址。NameNode是Apache Hadoop HDFS架构中的主节点,负责维护和管理DataNode(从节点)上存在的数据块。

<HDFS_PORT>

NameNode接受客户端连接的端口号。

<HADOOP_VERSION>

Hadoop版本

基本设置

使用 来增加一个新的挂载点, 指定Alluxio路径在其上创建挂载,指定HDFS的路径作为UFS URI。 密钥和配置选项也可以通过指定 --option 标志作为挂载命令的一部分来指定,如所述。

一个将 hdfs://<HDFS_NAMENODE>:<HDFS_PORT> 挂载到 /hdfs 的示例命令:

bin/alluxio mount add --path /hdfs/ --ufs-uri hdfs://<HDFS_NAMENODE>:<HDFS_PORT> \
  --option alluxio.underfs.version=<HADOOP_VERSION>

例如,如果您在本地使用默认端口运行HDFS的NameNode,并将HDFS根目录映射到Alluxio,则底层存储地址可以是 hdfs://localhost:8020; 如果只有HDFS目录 /alluxio/data 映射到Alluxio,则地址可以是 hdfs://localhost:8020/alluxio/data。

要找出HDFS正在运行的位置,请使用 hdfs getconf -confKey fs.defaultFS 命令获取HDFS正在监听的默认主机名和端口号。

此外,您可能需要将 alluxio.underfs.version 属性指定为您的HDFS版本。 请参阅。

高级设置

指定HDFS配置位置

当HDFS具有非默认配置时,您需要配置Alluxio服务器以使用正确的配置文件访问HDFS。 请注意,一旦设置了这个,使用Alluxio客户端的应用程序不需要任何特殊的配置。

有两种可行的方法:

  • 从您的Hadoop安装中将 hdfs-site.xml 和 core-site.xml 复制或创建符号链接到 ${ALLUXIO_HOME}/conf。 确保这在运行Alluxio的所有服务器上都设置好了。

  • 或者,您可以在 conf/alluxio-site.propertie s中设置属性 alluxio.underfs.hdfs.configuration 指向您的 hdfs-site.xml 和 core-site.xml。 确保这个配置在运行Alluxio的所有服务器上都设置好了。

alluxio.underfs.hdfs.configuration=/path/to/hdfs/conf/core-site.xml:/path/to/hdfs/conf/hdfs-site.xml

HDFS NameNode 高可用模式

$ bin/alluxio mount add --path /hdfs/ --ufs-uri hdfs://nameservice/

用户/权限 映射

为了确保在 HDFS 中文件/目录的权限信息(包括用户、组和模式)与 Alluxio 一致 (例如,在 Alluxio 中由用户 Foo 创建的文件在持久化到 HDFS 时也会以用户 Foo 作为所有者), 启动 Alluxio 主节点和工作节点的用户需要满足以下条件之一:

上述设置的用户仅是启动 Alluxio coordinator进程和worker进程的身份。 一旦启动了 Alluxio 服务器,就不需要再使用此用户运行 Alluxio 客户端应用程序。

连接到安全的HDFS

此外,需要安全配置使 Alluxio 能够与 HDFS 集群通信。 在 alluxio-site.properties 中设置以下 Alluxio 属性:

alluxio.security.kerberos.server.keytab.file=<YOUR_HDFS_KEYTAB_FILE_PATH>
alluxio.security.kerberos.server.principal=hdfs/<_HOST>@<REALM>
alluxio.security.kerberos.client.keytab.file=<YOUR_HDFS_KEYTAB_FILE_PATH>
alluxio.security.kerberos.client.principal=hdfs/<_HOST>@<REALM>

如果连接到安全的 HDFS,请在所有 Alluxio 节点上运行 kinit。 使用之前在 alluxio-site.properties 中配置的 principal hdfs 和 keytab。 已知的限制是,Kerberos TGT 可能在最大续订寿命后过期。 您可以通过定期续订 TGT 来解决此问题。 否则,在启动 Alluxio 服务时可能会看到 No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)。 另一个选项是设置 alluxio.hadoop.kerberos.keytab.login.autorenewal=true,以便自动刷新 TGT。

用户还可以使用 alluxio.hadoop.security.krb5.conf 来指定 krb5.conf 文件位置, 并使用 alluxio.hadoop.security.authentication 来指定身份验证方法。

自定义 Kerberos Realm/KDC

默认情况下,Alluxio 将使用机器级别的 Kerberos 配置来确定 Kerberos realm和 KDC。 您可以通过设置 JVM 属性 java.security.krb5.realm 和 java.security.krb5.kdc 来覆盖这些默认值。

要设置这些属性,在 conf/alluxio-env.sh 中设置 ALLUXIO_JAVA_OPTS。

ALLUXIO_JAVA_OPTS+=" -Djava.security.krb5.realm=<YOUR_KERBEROS_REALM> -Djava.security.krb5.kdc=<YOUR_KERBEROS_KDC_ADDRESS>"

使用特定版本挂载HDFS

用户可以以多种方式将指定版本的 HDFS 集群挂载为 Alluxio 命名空间的底层存储。 在挂载具有特定版本的 HDFS 之前,请确保已构建了具有该特定版本的 HDFS 的客户端。 您可以通过转到 Alluxio 目录下的 lib 目录来检查此客户端是否存在。

设置Alluxio配置文件

当将 Alluxio 根目录的底层存储挂载到特定的 HDFS 版本时,可以将以下行添加到Alluxio配置文件(conf/alluxio-site.properties)中:

alluxio.underfs.version=3.3

支持的HDFS版本

Alluxio 支持以下版本的 HDFS 作为挂载选项 alluxio.underfs.version 的有效参数:

  • Apache Hadoop: 2.10, 3.3

如果所需版本不可用,请联系您的 Alluxio 客户经理(邮箱:sales@alluxio.com)。

Hadoop 本地库

ALLUXIO_JAVA_OPTS+=" -Djava.library.path=<local_path_containing_hadoop_native_library> "

确保重新启动 Alluxio 服务以使更改生效。

[实验性] HDFS 回收站功能

HDFS 默认支持回收站功能。 当删除 HDFS 文件时,它将被移动到回收站目录,后续被实际删除。 用户可以通过设置来启用 HDFS 回收站功能 alluxio.underfs.hdfs.trash.enabled=true。

如果启用了该功能,当用户删除一个通过 Alluxio 存储在 HDFS 中的文件时, Alluxio 将尝试将其移动到 HDFS 回收站目录,而不是直接从 HDFS 中删除它。 请注意,必须在 core-site.xml 中配置 HDFS 以启用回收站功能。 如果在 HDFS 中未启用回收站功能,则 Alluxio 将直接删除文件,而不考虑此配置。

要将 Alluxio 配置为与 HDFS NameNode 在高可用模式下配合工作,首先需要配置 Alluxio 服务器以。

此外,将底层存储地址设置为 hdfs://nameservice/(nameservice 是已在 hdfs-site.xml 中配置的 。 要将 HDFS 子目录挂载到 Alluxio 而不是整个 HDFS 命名空间,请将底层存储地址更改为类似 hdfs://nameservice/alluxio/data 的内容。

是 。 也就是说,使用启动 HDFS NameNode 进程的相同用户也启动 Alluxio coordinator进程和worker进程。

是 的成员。 编辑 HDFS 配置文件 hdfs-site.xml,检查配置属性 dfs.permissions.superusergroup 的值。 如果该属性设置了一个组(例如,"hdfs"),则将用于启动 Alluxio 进程的用户(例如,"alluxio")添加到此组("hdfs"); 如果未设置此属性,则将一个组添加到此属性中,其中您正在运行 Alluxio 的用户是这个新添加的组的成员。

如果您的 HDFS 集群启用了 Kerberos,首先配置 Alluxio 服务以。

Hadoop 自带一个本地库,与其 Java 实现相比,该库提供了更好的性能和额外的功能。 例如,当使用本地库时,HDFS 客户端可以使用本地校验和函数,这比默认的 Java 实现更高效。 要将 Hadoop 本地库与 Alluxio HDFS 底层文件系统一起使用,首先在 Alluxio 节点上安装本地库。 一旦在机器上安装了 Hadoop 本地库,请通过在 conf/alluxio-env.sh 中添加以下行来更新 Alluxio 启动 Java 参数:

HDFS nameservice
HDFS 超级用户
HDFS 超级用户组
按照此页面上的说明
使用正确的配置文件访问 HDFS
使用正确的配置文件访问 HDFS
HDFS
文档
使用特定版本挂载HDFS
挂载表操作
配置挂载点