HDFS中的扩展属性(Extended Attributes in HDFS)

Posted 程序猿码码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS中的扩展属性(Extended Attributes in HDFS)相关的知识,希望对你有一定的参考价值。

Apache Hadoop 2.9.0

请查看原文:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/ExtendedAttributes.html

(如果转发,请标明出处)

 

概述

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

HDFS扩展属性

HDFS中的扩展属性是根据Linux的扩展属性建模的(请查看Linux 手册中的attr(5))。一个扩展属性就是一个name-value pairnamestring类型,value是二进制值。Xattrs names必须以命名空间为前缀,例如,在user命名空间中,一个xattrnamemyXattr ,那么name最终会是user.myXattr。多个xattrs 可以关联到一个inode上。

命名空间和权限

HDFS中,有5个有效的命名空间:user, trustedsystemsecurity,  raw。每个命名空间都有不同的使用限制。

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

② trusted 命名空间只有HDFS超级用户可用。

③ system命名是HDFS内部保留使用的,此命名空间无法通过userspace 方法访问,并保留用于实现HDFS内部功能。

④ security 命名空间也是HDFS内部保留使用。此命名空间通常无法通过userspace方法访问。security 的一个特殊用途是security.hdfs.unreadable.by.superuser 扩展属性,此xattr只能在文件上设置,它将阻止超级用户读取文件的内容,但是超级用户依然能够读取或者修改文件的元数据,例如所有者,权限等等。假定有正常的文件系统权限,任何用户都可以设置和访问xattrxattr也是一次写入,设置后无法删除,同时xattr不允许设置value

⑤ raw 命名空间保留给有时需要公开的内部系统属性。与system 命名空间属性类似,它们对用户不可见,除非在HDFS /.reserved/raw目录层次结构上的文件或者目录上调用getXAttr/getXAttrs。这些属性只能被超级用户访问。distcp 是一个使用raw命名空间扩展属性的例子。加密区元数据存储在raw.*的扩展属性中,只要管理员在源和目标中使用/.reserved/raw目录名,加密区域中的加密文件是透明复制的。

扩展属性交互

Hadoop shell通过 hadoop fs -getfattr hadoop fs -setfattr来支持和扩展属性交互。这些命令是根据Linux getfatter ( 1 )setfatter ( 1 )命令设置样式的。

getfattr

hadoop fs -getfattr [-R] -n name | -d [-e en] <path>

显示一个文件或者目录的扩展属性namesvalues

-R

递归列出所有文件和目录的属性

-n name

显示name的扩展属性值

-d

显示所有目录名字相关的扩展属性值

-e <encoding>

检索值后编码。有效的编码是“text”, “hex”, and “base64”Values被编码到一个用双引号括起来 (")的文本字符串,编码为十六进制和base64的值分别以0x0s作为前缀。

<path>

文件或目录

 

setfattr

hadoop fs -setfattr -n name [-v value] | -x name <path>

为一个文件或者目录设置扩展属性的namevalue

-n name

扩展属性名

-v value

扩展属性值,目前有三种不同的编码方式. 如果参数用双引号括起来,则该值是引号内的字符串。如果参数的前缀为0X0X,则该参数将被视为十六进制数。如果引数以00开头,则视为base64编码。

-x name

删除扩展属性

<path>

文件或目录

 

配置选项

HDFS支持开箱即用的扩展属性,无需额外配置管理员可能需要关心限制每个信息节点的xattr数量和xattr大小的选项,因为xattr会增加inode磁盘上和内存中空间消耗

① dfs.namenode.xattrs.enabled

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

② dfs.namenode.fs-limits.max-xattrs-per-inode

每个inode上的最大扩展属性个数。默认,是32

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

扩展属性的namevalue组合的最大大小(以字节为单位),默认是16384 字节。

 

 

------------------- 全文完 ----------------------------

 

 

 

 

 

 

 

 

 

 

 

 


以上是关于HDFS中的扩展属性(Extended Attributes in HDFS)的主要内容,如果未能解决你的问题,请参考以下文章

关于OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2个人理解心得

用 TensorFlow Extended 实现可扩展快速且高效的 BERT 部署

用 TensorFlow Extended 实现可扩展快速且高效的 BERT 部署

jQuery风格在PHP中的扩展

自动驾驶 9-4: 改进的 EKF - 错误状态扩展卡尔曼滤波器 An Improved EKF - The Error State Extended Kalman Filter

自动驾驶 9-4: 改进的 EKF - 错误状态扩展卡尔曼滤波器 An Improved EKF - The Error State Extended Kalman Filter