HDFS扩展属性

简介:

原文:http://hadoop.apache.org/docs/r2.6.4/hadoop-project-dist/hadoop-hdfs/ExtendedAttributes.html

概述

扩展属性(简写为xattrs)是一个文件系统的特性,它允许用户程序用一个文件或目录关联额外的元数据。不同于系统级的inode元数据比如权限或修改时间,扩展属性不会被系统解释,它是用来被应用程序解读并存储inode额外信息的。扩展属性用来存储比如一个文本文档的编码信息。

HDFS扩展属性

HDFS的扩展属性是依照Linux的扩展属性来建模的(参见Linux帮助手册attr(5)和相关文档)。一个扩展属性就是一个名值对,包含一个字符串名字和一个二进制值。扩展属性名必须依照一个特定的命名空间前缀命名。比如,一个叫做myXattr的属性名必须声明为user.myXattr,这说明在user的命名空间下。多个扩展属性可以关联同一个inode。

命名空间和权限

HDFS包含5个合理的命名空间:user, trusted, system, security, 和 raw。每个命名空间拥有不同的访问限制。

user命名空间是被客户端应用程序使用的命名空间。在user命名空间访问扩展属性被对应的文件权限来控制访问。

trusted命名空间只对HDFS的超级用户有效。

system命名空间是保留给HDFS内部使用的。该命名空间不能通过用户级别的方法访问到,只被用来实现HDFS内部的feature。

security命名空间也是保留给HDFS内部使用的。该命名空间不能通过用户级别的方法访问。security的一个特定的使用时扩展属性security.hdfs.unreadable.by.superuser。这个属性只能设置到文件上,它可以禁止超级用户来读取文件内容。超级用户可以读取和修改文件的元数据,比如owner,权限等。这个扩展属性可以被任何拥有普松文件系统权限的用户设置和访问。该属性是write-once的,一旦被设置将不能被删除。该属性不允许设置值。

raw命名空间是内部系统保留的命名空间,但是有时会暴露给外部。除非一个在/.reserved/raw目录下的文件被getXAttr/getXAttrs调用,否则raw命名空间像其他系统级命名空间一样不被外部用户访问。这些属性只能被超级用户访问。一个raw命名空间扩展属性使用的案例就是distcp。加密区域的元数据存储在raw.*的扩展属性里,只要管理员使用/.reserved/raw路径作为源或者目标,在加密域中的加密文件会被透明的复制。

与扩展属性交互

Hadoop shell支持扩展属性的交互,通过hadoop fs -getfattr名令和hadoop fs -setfattr命令。这些明星类似Linux的 getfattr(1) 和 setfattr(1)。

getfattr

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

显示一个文件或者目录的扩展属性名和值。

参数 描述
-R 递归显示所有目录和文件的扩展属性。
-n name Dump指定名字的扩展属性值。
-d Dump指定路径的所有扩展属性值。
-e <encoding> 查询属性值后对其encode。合法的编码包括:"text", "hex", 和 "base64"。被编码的字符串会被双引号包围,被编码为16进制和base64的会有个前缀0x和0s。
<path> 文件或者目录。

setfattr

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

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

参数 描述
-n name 扩展属性名
-v value 扩展属性值。有三种不同的编码方法。如果参数被包围在双引号内,则值是普通字符串类型。如果以0x或者0X开头,那么值是16进制数字。如果以0s或者0S开头,则值是base64编码的串。
-x name 删除扩展属性。
<path> 文件或者目录。

配置选项

HDFS支持在配置之外使用扩展属性。因为扩展属性会增加inode的磁盘和内存空间的消耗,管理员可能会限制每个inode的扩展属性数量和大小。

  • dfs.namenode.xattrs.enabled
    在NameNode上是否支持扩展尚需经。默认情况扩展属性是enable的。
  • dfs.namenode.fs-limits.max-xattrs-per-inode
    每个inode支持的最大扩展属性数。默认值是32。
  • dfs.namenode.fs-limits.max-xattr-size
    一个扩展属性的名和值的组合最大字节数。默认情况,上限是16384字节。
目录
相关文章
|
机器学习/深度学习 存储 分布式计算
HDFS 高可用和高扩展机制分析|青训营笔记
文章主要讲解:1.HDFS 元数据服务的高可用;2.HDFS 数据存储高可用;3.HDFS 元数据服务的高扩展性;4.HDFS 数据存储的高扩展性
210 0
HDFS 高可用和高扩展机制分析|青训营笔记
|
存储 机器学习/深度学习 消息中间件
HDFS高可用与高扩展机制
HDFS高可用与高扩展机制
309 0
HDFS高可用与高扩展机制
|
6天前
|
存储 分布式计算 Hadoop
Hadoop Distributed File System (HDFS): 概念、功能点及实战
【6月更文挑战第12天】Hadoop Distributed File System (HDFS) 是 Hadoop 生态系统中的核心组件之一。它设计用于在大规模集群环境中存储和管理海量数据,提供高吞吐量的数据访问和容错能力。
41 4
|
1月前
|
存储 分布式计算 运维
Hadoop的HDFS的特点高吞吐量
【5月更文挑战第11天】Hadoop的HDFS的特点高吞吐量
26 4
|
4天前
|
存储 分布式计算 Hadoop
Hadoop生态系统详解:HDFS与MapReduce编程
Apache Hadoop是大数据处理的关键,其核心包括HDFS(分布式文件系统)和MapReduce(并行计算框架)。HDFS为大数据存储提供高容错性和高吞吐量,采用主从结构,通过数据复制保证可靠性。MapReduce将任务分解为Map和Reduce阶段,适合大规模数据集的处理。通过代码示例展示了如何使用MapReduce实现Word Count功能。HDFS和MapReduce的结合,加上YARN的资源管理,构成处理和分析大数据的强大力量。了解和掌握这些基础对于有效管理大数据至关重要。【6月更文挑战第12天】
|
5天前
|
存储 分布式计算 安全
|
12天前
|
存储 分布式计算 资源调度
|
12天前
|
存储 分布式计算 NoSQL
|
20天前
|
存储 分布式计算 Hadoop
|
20天前
|
存储 分布式计算 Hadoop
Hadoop节点HDFS数据块的作用
【5月更文挑战第19天】
26 3