Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

总览

扩展属性(缩写为xattrs)是文件系统功能,允许用户应用程序将其他元数据与文件或目录相关联。与诸如文件权限或修改时间之类的系统级inode元数据不同,扩展属性不会由系统解释,而是由应用程序用来存储有关inode的其他信息。例如,可以使用扩展属性来指定纯文本文档的字符编码。

HDFS扩展属性

HDFS中的扩展属性是按照Linux中的扩展属性建模的(请参阅Linux手册页attr(5))。扩展属性是名称-值对,具有字符串名称和二进制值。Xattrs名称还必须以名称空间作为前缀。例如,一个名为XATTR myXattr用户命名空间将被指定为user.myXattr。多个xattrs可以与单个inode关联。

命名空间和权限

在HDFS中,有五个有效的名称空间:usertrustsystemsecurityraw。这些名称空间均具有不同的访问限制。

用户命名空间是通常会通过客户端应用程序使用的命名空间。对用户名称空间中扩展属性的访问由相应的文件权限控制。

信任的命名空间只对HDFS超级用户。

系统命名空间保留供内部使用HDFS。该名称空间无法通过用户空间方法访问,并且保留用于实现内部HDFS功能。

安全命名空间保留供内部使用HDFS。通常无法通过用户空间方法访问此名称空间。安全性的一种特殊用法是security.hdfs.unread.by.superuser扩展属性。该xattr只能在文件上设置,这将阻止超级用户读取文件的内容。超级用户仍然可以读取和修改文件元数据,例如所有者,权限等。假定普通的文件系统权限,任何用户都可以设置和访问此xattr。该xattr也是一次写入的,一旦设置就无法删除。该xattr不允许设置值。

原始名称空间被保留用于有时需要暴露内部系统属性。与系统名称空间属性一样,它们对用户不可见,除非在/.reserved/raw HDFS目录层次结构中的文件或目录上调用getXAttr / getXAttrs时。这些属性只能由超级用户访问。其中的一个例子原料使用的命名空间扩展的属性是DistCp使用效用。加密区域元数据存储在raw。*扩展属性中,只要管理员使用/.reserved/raw 源和目标中的路径名,加密区域中的加密文件被透明地复制。

与扩展属性交互

Hadoop Shell支持通过hadoop fs -getfattrhadoop fs -setfattr与扩展属性进行交互。这些命令是在Linux getfattr(1)setfattr(1)命令之后设置样式的。

getfattr

hadoop fs -getfattr [-R] -n名称| -d [-e en] <路径 >

显示文件或目录的扩展属性名称和值(如果有)。

-R 递归列出所有文件和目录的属性。
-n名称 转储命名的扩展属性值。
-d 转储与路径名关联的所有扩展属性值。
-e <编码> 检索值后对其进行编码。有效的编码为“文本”,“十六进制”和“ base64”。编码为文本字符串的值括在双引号(“)中,编码为十六进制和base64的值分别以0x和0s为前缀。
<路径> 文件或目录。

setfattr

hadoop fs -setfattr -n名称[-v值] | -x名称<路径 >

设置文件或目录的扩展属性名称和值。

-n名称 扩展属性名称。
-v值 扩展属性值。该值有三种不同的编码方法。如果参数用双引号引起来,则该值为引号内的字符串。如果参数以0x或0X为前缀,则将其视为十六进制数。如果参数以0s或0S开头,则将其作为base64编码。
-x名称 删除扩展属性。
<路径> 文件或目录。

配置选项

HDFS开箱即用地支持扩展属性,而无需其他配置。管理员可能会对限制每个inode的xattr数量和xattrs大小的选项感兴趣,因为xattrs会增加inode的磁盘空间和内存空间消耗。

  • dfs.namenode.xattrs.enabled

    是否在NameNode上启用对扩展属性的支持。默认情况下,启用扩展属性。

  • dfs.namenode.fs-limits.max-xattrs-每个inode

    每个索引节点的最大扩展属性数。默认情况下,此限制为32。

  • dfs.namenode.fs-limits.max-xattr-size

    扩展属性的名称和值的最大组合大小(以字节为单位)。默认情况下,此限制为16384字节。