Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

文件惯例

等距 用于命令,HTTP请求和响应以及代码块。
<等距> 用户输入的值。
[等距] 可选值。如果未指定该值,则使用默认值。
斜体字 重要的短语和单词。

介绍

HTTP REST API支持HDFS 的完整FileSystem / FileContext接口。下一部分显示了这些操作以及相应的FileSystem / FileContext方法。该科HTTP查询参数字典指定参数细节,诸如设定值和有效值。

运作方式

文件系统URI与HTTP URL

WebHDFS的文件系统方案为“ webhdfs:// ”。WebHDFS文件系统URI具有以下格式。

  webhdfs:// <主机>:<HTTP_PORT> / <PATH>

上面的WebHDFS URI对应于下面的HDFS URI。

  hdfs:// <主机>:<RPC_PORT> / <PATH>

在REST API中,在路径中插入前缀“ / webhdfs / v1 ”,并在末尾附加查询。因此,相应的HTTP URL具有以下格式。

  http:// <主机>:<HTTP_PORT> / webhdfs / v1 / <PATH>?op = ...

请注意,如果WebHDFS用SSL保护,则该方案应为“ swebhdfs:// ”。

  swebhdfs:// <主机>:<HTTP_PORT> / <PATH>

另请参阅:SWebHDFS的SSL配置

HDFS配置选项

以下是WebHDFS的HDFS配置选项。

物业名称 描述
dfs.web.authentication.kerberos.principal Hadoop-Auth在HTTP端点中使用的HTTP Kerberos主体。根据Kerberos HTTP SPNEGO规范,HTTP Kerberos主体必须以“ HTTP /”开头。值“ *”将使用在密钥表中找到的所有HTTP主体。
dfs.web.authentication.kerberos.keytab Kerberos密钥表文件,其中包含HTTP端点中Hadoop-Auth使用的HTTP Kerberos主体的凭据。
dfs.webhdfs.socket.connect-timeout 失败之前等待建立连接的时间。指定为持续时间,即数值后跟一个单位符号,例如2m,持续2分钟。默认值为60秒。
dfs.webhdfs.socket.read-timeout 失败之前等待数据到达的时间。默认值为60秒。

认证方式

如果关闭安全性,则已认证的用户是user.name查询参数中指定的用户名。如果未设置user.name参数,则服务器可以将经过身份验证的用户设置为默认的Web用户(如果有),或者返回错误响应。

启用安全性后,将通过Hadoop委托令牌或Kerberos SPNEGO执行身份验证。如果在委托查询参数中设置了令牌,则经过身份验证的用户就是令牌中编码的用户。如果未设置委托参数,则通过Kerberos SPNEGO对用户进行身份验证。

以下是使用curl命令工具的示例。

  1. 关闭安全性时的身份验证:

    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?[user.name = <USER>&] op = ...”
    
  2. 启用安全性后,使用Kerberos SPNEGO进行身份验证:

    curl -i --negotiate -u:“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = ...”
    
  3. 启用安全性后,使用Hadoop委托令牌进行身份验证:

    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?delegation = <TOKEN>&op = ...”
    

另请参阅:Hadoop HTTP Web控制台的身份验证

此外,WebHDFS在客户端支持OAuth2。Namenode和Datanode当前不支持使用OAuth2的客户端,但是其他实现WebHDFS REST接口的后端可能支持。

默认情况下,WebHDFS支持两种类型的OAuth2代码授予(用户提供的刷新和访问令牌或用户提供的凭据),并提供了一种可插拔的机制,用于根据OAuth2 RFC实现其他OAuth2身份验证或自定义身份验证。使用提供的任何一种代码授予机制时,WebHDFS客户端将根据需要刷新访问令牌。

仅应为未与Kerberos SPENGO一起运行的客户端启用OAuth2。

OAuth2代码授予机制 描述 实施代码授权的dfs.webhdfs.oauth2.access.token.provider的
授权码授予 用户提供初始访问令牌和刷新令牌,然后分别用于认证WebHDFS请求和获取替换访问令牌。 org.apache.hadoop.hdfs.web.oauth2.ConfRefreshTokenBasedAccessTokenProvider
客户证书授予 用户提供用于获取访问令牌的凭据,然后将其用于对WebHDFS请求进行身份验证。 org.apache.hadoop.hdfs.web.oauth2.ConfCredentialBasedAccessTokenProvider

以下属性控制OAuth2身份验证。

OAuth2相关属性 描述
dfs.webhdfs.oauth2.enabled 布尔值,用于启用/禁用OAuth2身份验证
dfs.webhdfs.oauth2.access.token.provider org.apache.hadoop.hdfs.web.oauth.AccessTokenProvider的实现的类名称 如上所述,提供了两个代码,或者用户可以指定用户提供的实现。此配置密钥的默认值为ConfCredentialBasedAccessTokenProvider实现。
dfs.webhdfs.oauth2.client.id 客户端ID用于获取具有凭证或刷新令牌的访问令牌
dfs.webhdfs.oauth2.refresh.url 用于发布以获取具有凭证或刷新凭证的承载凭证的URL
dfs.webhdfs.oauth2.access.token (如果使用ConfRefreshTokenBasedAccessTokenProvider,则为必需)用于进行身份验证的初始访问令牌
dfs.webhdfs.oauth2.refresh.token (如果使用ConfRefreshTokenBasedAccessTokenProvider,则为必需)初始刷新令牌,用于获取新的访问令牌
dfs.webhdfs.oauth2.refresh.token.expires.ms.since.epoch (如果使用ConfRefreshTokenBasedAccessTokenProvider,则为必需。)自1970年1月1日以来以毫秒为单位的访问令牌到期时间。 请注意,该值与OAuth提供程序提供的值不同,并且已按照接口中的说明进行了修改,以适合客户端应用程序
dfs.webhdfs.oauth2.credential (如果使用ConfCredentialBasedAccessTokenProvider,则为必需)。用于获取初始访问令牌和后续访问令牌的凭据。

SWebHDFS的SSL配置

要使用SWebHDFS FileSystem(即使用swebhdfs协议),需要在客户端上指定SSL配置文件。这必须指定3个参数:

SSL属性 描述
ssl.client.truststore.location 信任存储文件的本地文件系统位置,其中包含NameNode的证书。
ssl.client.truststore.type (可选)信任库文件的格式。
ssl.client.truststore.password (可选)信任库文件的密码。

以下是示例SSL配置文件(ssl-client.xml):

<配置>
  <属性>
    <name> ssl.client.truststore.location </ name>
    <value> /work/keystore.jks </ value>
    <description>客户端要使用的信任库。必须指定。</ description>
  </ property>

  <属性>
    <name> ssl.client.truststore.password </ name>
    <value> changeme </ value>
    <说明>可选。默认值为“”。</ description>
  </ property>

  <属性>
    <name> ssl.client.truststore.type </ name>
    <value> jks </ value>
    <说明>可选。默认值为“ jks”。</ description>
  </ property>
</ configuration>

SSL配置文件必须在客户端程序的类路径中,并且文件名需要在core-site.xml中指定:

<属性>
  <name> hadoop.ssl.client.conf </ name>
  <value> ssl-client.xml </ value>
  <说明>
    从中提取ssl客户端密钥库信息的资源文件。
    在类路径中查找此文件,通常应在Hadoop中
    conf /目录。默认值为“ ssl-client.xml”。
  </ description>
</ property>

代理用户

当启用代理用户功能时,代理用户P可以代表另一个用户U提交请求。除非在身份验证中出现委派令牌,否则必须在doas查询参数中指定U的用户名。在这种情况下,用户PU的信息都必须编码在委托令牌中。

  1. 安全性关闭时的代理请求:

    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?[user.name = <USER>&] doas = <USER>&op = ...”
    
  2. 启用安全性后,使用Kerberos SPNEGO的代理请求:

    curl -i --negotiate -u:“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?doas = <USER>&op = ...”
    
  3. 启用安全性后,使用Hadoop委托令牌的代理请求:

    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?delegation = <TOKEN>&op = ...”
    

跨站请求伪造预防

WebHDFS支持可选的可配置机制,以防止跨站点请求伪造(CSRF)。启用后,对NameNode或DataNode的WebHDFS HTTP请求必须包含一个自定义HTTP标头。配置属性允许调整受保护的特定HTTP方法以及HTTP标头的名称。标头中发送的值不相关。仅需要存在具有该名称的标头。

启用CSRF防护还可以设置WebHdfsFileSystem类以发送所需的标头。这样可以确保与webhdfs: URI 一起使用时,诸如hdfs dfshadoop distcp之类的CLI命令可以继续正常工作。

启用CSRF防护还可以设置NameNode Web UI来发送所需的标头。在启用CSRF防护并重新启动NameNode之后,NameNode Web UI的现有用户需要刷新浏览器以重新加载页面并查找新配置。

以下属性控制CSRF的预防。

属性 描述 默认值
dfs.webhdfs.rest-csrf.enabled 如果为true,则启用WebHDFS保护以防止跨站点请求伪造(CSRF)。WebHDFS客户端还使用此属性来确定是否需要在其HTTP请求中发送自定义CSRF阻止标头。
dfs.webhdfs.rest-csrf.custom-header 通过将dfs.webhdfs.rest-csrf.enabled设置为true为WebHDFS启用跨站点请求伪造(CSRF)防护时,HTTP请求必须发送的自定义标头的名称。WebHDFS客户端还使用此属性来确定是否需要在其HTTP请求中发送自定义CSRF阻止标头。 X-XSRF接头
dfs.webhdfs.rest-csrf。要忽略的方法 通过将dfs.webhdfs.rest-csrf.enabled设置为true为WebHDFS启用跨站点请求伪造(CSRF)防护时,HTTP方法的逗号分隔列表不需要HTTP请求包括自定义标头。WebHDFS客户端还使用此属性来确定是否需要在其HTTP请求中发送自定义CSRF阻止标头。 GET,OPTIONS,HEAD,TRACE
dfs.webhdfs.rest-csrf.browser-useragents-regex 通过将dfs.webhdfs.reset-csrf.enabled设置为true为WebHDFS启用跨站点请求伪造(CSRF)保护时,用逗号分隔的正则表达式列表,用于与HTTP请求的User-Agent标头匹配。如果传入的User-Agent与这些正则表达式中的任何一个匹配,则该请求被认为是由浏览器发送的,因此将强制执行CSRF防护。如果请求的User-Agent与这些正则表达式都不匹配,则认为该请求是由浏览器以外的其他设备(例如脚本化自动化)发送的。在这种情况下,CSRF并不是潜在的攻击媒介,因此无法执行预防措施。这有助于实现与尚未更新为发送CSRF预防标头的现有自动化的向后兼容性。 ^ Mozilla。*,^ Opera。*

以下是示例curl调用,该示例使用-H选项在请求中包括自定义标头。

    curl -i -L -X PUT -H'X-XSRF-HEADER:“”''http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = CREATE'

WebHDFS重试策略

WebHDFS支持可选的,可配置的重试策略,用于弹性复制可能超时的大文件,或在复制过程中进行故障转移的HA群集之间复制文件。

以下属性控制WebHDFS重试和故障转移策略。

属性 描述 默认值
dfs.http.client.retry.policy.enabled 如果为“ true”,则启用WebHDFS客户端的重试策略。如果为“ false”,则重试策略已关闭。
dfs.http.client.retry.policy.spec 为WebHDFS客户端指定多个线性随机重试策略,例如,给定成对的重试次数和睡眠时间(n0,t0),(n1,t1)等…,前n0次重试平均睡眠t0毫秒,随后的n1次重试平均睡眠t1毫秒,依此类推。 10000,6,60000,10
dfs.http.client.failover.max.attempts 在网络异常的情况下,指定WebHDFS客户端的最大故障转移尝试次数。 15
dfs.http.client.retry.max.attempts 指定WebHDFS客户端的最大重试次数,如果重试次数和故障转移尝试之间的差异大于重试次数的最大值,则不会有更多重试。 10
dfs.http.client.failover.sleep.base.millis 指定以毫秒为单位的基本时间,在此基础上,将为WebHDFS客户端计算重试或故障转移之间的睡眠时间成指数增长。 500
dfs.http.client.failover.sleep.max.millis 指定WebHDFS客户端重试或故障转移之间的睡眠时间上限(以毫秒为单位)。 15000

文件和目录操作

创建并写入文件

  • 步骤1:提交HTTP PUT请求,而不会自动跟随重定向,也不会发送文件数据。

    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = CREATE
                        [&overwrite = <true | false>] [&blocksize = <LONG>] [&replication = <SHORT>]
                        [&permission = <OCTAL>] [&buffersize = <INT>] [&noredirect = <true | false>]“
    

    通常,将请求重定向到要写入文件数据的数据节点。

    HTTP / 1.1 307 TEMPORARY_REDIRECT
    位置:http:// <DATANODE>:<PORT> / webhdfs / v1 / <PATH>?op = CREATE ...
    内容长度:0
    

    但是,如果您不想自动重定向,则可以设置noredirect标志。

    HTTP / 1.1 200 OK
    内容类型:application / json
    {“位置”:“ http:// <DATANODE>:<PORT> / webhdfs / v1 / <PATH>?op = CREATE ...”}
    
  • 步骤2:使用位置标头中的URL提交另一个HTTP PUT请求(如果指定了noredirect,则返回返回的响应),并写入要写入的文件数据。

    curl -i -X PUT -T <LOCAL_FILE>“ http:// <DATANODE>:<PORT> / webhdfs / v1 / <PATH>?op = CREATE ...”
    

    客户端在位置标头中收到内容长度为零且文件的WebHDFS URI的201 Created响应:

    HTTP / 1.1 201已创建
    位置:webhdfs:// <HOST>:<PORT> / <PATH>
    内容长度:0
    

    如果未指定权限,将为新创建的文件分配默认的644权限。服务器端不会应用umask模式(因此,在Namenode端设置的“ fs.permissions.umask-mode”值配置将无效)。

请注意,具有两步创建/追加的原因是为了防止客户端在重定向之前发送数据。HTTP / 1.1中的“ Expect:100-continue ”头解决了此问题;参见RFC 2616,第8.2.3节。不幸的是,存在一些软件库错误(例如Jetty 6 HTTP服务器和Java 6 HTTP客户端),这些错误无法正确实现“ Expect:100-continue ”。分两步创建/添加是软件库错误的临时解决方法。

另请参见:覆盖块大小复制许可缓冲区大小文件系统 .create

附加到文件

  • 步骤1:提交HTTP POST请求,而不会自动跟随重定向,也不会发送文件数据。
    curl -i -X POST“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = APPEND [&buffersize = <INT>] [&noredirect = <true | false>]”
    

    通常,将请求重定向到要附加文件数据的数据节点:

    HTTP / 1.1 307 TEMPORARY_REDIRECT
    位置:http:// <DATANODE>:<PORT> / webhdfs / v1 / <PATH>?op = APPEND ...
    内容长度:0
    

但是,如果您不想自动重定向,则可以设置noredirect标志。

    HTTP / 1.1 200 OK
    内容类型:application / json
    {“位置”:“ http:// <DATANODE>:<PORT> / webhdfs / v1 / <PATH>?op = APPEND ...”}
  • 步骤2:使用Location标头中的URL提交另一个HTTP POST请求(如果指定了noredirect,则使用返回的响应),并附加要附加的文件数据。
    curl -i -X POST -T <LOCAL_FILE>“ http:// <DATANODE>:<PORT> / webhdfs / v1 / <PATH>?op = APPEND ...”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

有关为何需要此步骤两个步骤的说明,请参见上一节中的注释。

另请参见:buffersizeFileSystem .append

Concat文件

  • 提交HTTP POST请求。
    curl -i -X POST“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = CONCAT&sources = <PATHS>”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参见:来源FileSystem .concat

打开和读取文件

  • 提交具有自动后续重定向的HTTP GET请求。
    curl -i -L“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = OPEN
                        [&offset = <LONG>] [&length = <LONG>] [&buffersize = <INT>] [&noredirect = <true | false>]”
    

    通常,将请求重定向到一个可以读取文件数据的datanode:

    HTTP / 1.1 307 TEMPORARY_REDIRECT
    位置:http:// <DATANODE>:<PORT> / webhdfs / v1 / <PATH>?op = OPEN ...
    内容长度:0
    

    但是,如果您不想被自动重定向,则可以设置noredirect标志。

    HTTP / 1.1 200 OK
    内容类型:application / json
    {“位置”:“ http:// <DATANODE>:<PORT> / webhdfs / v1 / <PATH>?op = OPEN ...”}
    

    客户端遵循重定向到datanode并接收文件数据:

    HTTP / 1.1 200 OK
    内容类型:应用程序/八位字节流
    内容长度:22
    
    您好,webhdfs用户!
    

另请参阅:偏移长度缓冲区大小文件系统。开

建立目录

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = MKDIRS [&permission = <OCTAL>]”“
    

    客户端收到带有JSON 布尔对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {“布尔值”:true}
    

    如果未指定权限,则默认情况下,新创建的目录将具有755权限。服务器端不会应用umask模式(因此,在Namenode端设置的“ fs.permissions.umask-mode”值配置将无效)。

另请参见:权限FileSystem .mkdirs

创建符号链接

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = CREATESYMLINK
                                  &destination = <PATH> [&createParent = <true | false>]“
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参见:destinationcreateParentFileSystem .createSymlink

重命名文件/目录

  • 提交HTTP PUT请求。
    curl -i -X PUT“ <主机>:<PORT> / webhdfs / v1 / <PATH>?op = RENAME&destination = <PATH>”
    

    客户端收到带有JSON 布尔对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {“布尔值”:true}
    

另请参见:destinationFileSystem .rename

删除文件/目录

  • 提交HTTP DELETE请求。
    curl -i -X DELETE“ http:// <主机>:<端口> / webhdfs / v1 / <路径>?op = DELETE
                                  [&recursive = <true | false>]”
    

    客户端收到带有JSON 布尔对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {“布尔值”:true}
    

另请参阅:递归FileSystem .delete

截断文件

  • 提交HTTP POST请求。
    curl -i -X POST“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = TRUNCATE&newlength = <LONG>”
    

    客户端收到带有JSON 布尔对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {“布尔值”:true}
    

另请参见:newlengthFileSystem .truncate

文件/目录的状态

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETFILESTATUS”
    

    客户端收到带有FileStatus JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
      “ FileStatus”:
      {
        “ accessTime”:0,
        “ blockSize”:0,
        “ group”:“ supergroup”,
        “ length”:0,//以字节为单位,目录为零
        “ modificationTime”:1320173277227,
        “ owner”:“ webuser”,
        “ pathSuffix”:“”,
        “权限”:“ 777”,
        “复制”:0,
        “ snapshotEnabled”:是
        “ type”:“ DIRECTORY” //枚举{FILE,DIRECTORY,SYMLINK}
      }
    }
    

另请参阅:FileSystem .getFileStatus

列出目录

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = LISTSTATUS”
    

    客户端收到带有FileStatuses JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    内容长度:427
    
    {
      “ FileStatuses”:
      {
        “ FileStatus”:
        [
          {
            “ accessTime”:1320171722771,
            “ blockSize”:33554432,
            “ childrenNum”:0,
            “ fileId”:16388,
            “ group”:“ supergroup”,
            “长度”:24930,
            “ modificationTime”:1320171722771,
            “ owner”:“ webuser”,
            “ pathSuffix”:“ a.patch”,
            “ permission”:“ 644”,
            “复制”:1,
            “ storagePolicy”:0,
            “ type”:“ FILE”
          },
          {
            “ accessTime”:0,
            “ blockSize”:0,
            “ childrenNum”:0,
            “ fileId”:16389,
            “ group”:“ supergroup”,
            “长度”:0,
            “ modificationTime”:1320895981256,
            “ owner”:“用户名”,
            “ pathSuffix”:“ bar”,
            “ permission”:“ 711”,
            “复制”:0,
            “ snapshotEnabled”:是
            “ type”:“目录”
          },
          ...
        ]
      }
    }
    

另请参阅:FileSystem .listStatus

列出文件

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = LISTSTATUS”
    

    客户端收到带有FileStatuses JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    内容长度:427
    
    {
      “ FileStatuses”:
      {
        “ FileStatus”:
        [
          {
            “ accessTime”:1320171722771,
            “ blockSize”:33554432,
            “ childrenNum”:0,
            “ fileId”:16390,
            “ group”:“ supergroup”,
            “长度”:1366,
            “ modificationTime”:1501770633062,
            “ owner”:“ webuser”,
            “ pathSuffix”:“”,
            “ permission”:“ 644”,
            “复制”:1,
            “ storagePolicy”:0,
            “ type”:“ FILE”
          }
        ]
      }
    }
    

另请参阅:FileSystem .listStatus

反复列出目录

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = LISTSTATUS_BATCH&startAfter = <CHILD>”
    

    客户端收到带有DirectoryListing JSON对象的响应,该对象包含FileStatuses JSON对象以及迭代信息:

    HTTP / 1.1 200 OK
    缓存控制:无缓存
    过期:星期四,2016年9月8日03:40:38 GMT
    日期:2016年9月8日,星期四03:40:38 GMT
    语法:无缓存
    过期:星期四,2016年9月8日03:40:38 GMT
    日期:2016年9月8日,星期四03:40:38 GMT
    语法:无缓存
    内容类型:application / json
    X框架选项:SAMEORIGIN
    传输编码:分块
    服务器:码头(6.1.26)
    
    {
        “ DirectoryListing”:{
            “ partialListing”:{
                “ FileStatuses”:{
                    “ FileStatus”:[
                        {
                            “ accessTime”:0,
                            “ blockSize”:0,
                            “ childrenNum”:0,
                            “ fileId”:16387,
                            “ group”:“ supergroup”,
                            “长度”:0,
                            “ modificationTime”:1473305882563,
                            “ owner”:“ andrew”,
                            “ pathSuffix”:“ bardir”,
                            “权限”:“ 755”,
                            “复制”:0,
                            “ storagePolicy”:0,
                            “ type”:“ DIRECTORY”
                        },
                        {
                            “ accessTime”:1473305896945,
                            “ blockSize”:1024,
                            “ childrenNum”:0,
                            “ fileId”:16388,
                            “ group”:“ supergroup”,
                            “长度”:0,
                            “ modificationTime”:1473305896965,
                            “ owner”:“ andrew”,
                            “ pathSuffix”:“ bazfile”,
                            “ permission”:“ 644”,
                            “复制”:3,
                            “ storagePolicy”:0,
                            “ type”:“ FILE”
                        }
                    ]
                }
            },
            “剩余条目”:2
        }
    }
    

如果剩余条目数不为零,则目录中还有其他条目。要查询下一个批次,请将startAfter参数设置为当前批次中返回的最后一个项目的pathSuffix。例如:

    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = LISTSTATUS_BATCH&startAfter = bazfile”

它将返回下一批目录条目:

    HTTP / 1.1 200 OK
    缓存控制:无缓存
    过期:星期四,2016年9月8日03:43:20 GMT
    日期:2016年9月8日,星期四03:43:20 GMT
    语法:无缓存
    过期:星期四,2016年9月8日03:43:20 GMT
    日期:2016年9月8日,星期四03:43:20 GMT
    语法:无缓存
    内容类型:application / json
    X框架选项:SAMEORIGIN
    传输编码:分块
    服务器:码头(6.1.26)

    {
        “ DirectoryListing”:{
            “ partialListing”:{
                “ FileStatuses”:{
                    “ FileStatus”:[
                        {
                            “ accessTime”:0,
                            “ blockSize”:0,
                            “ childrenNum”:0,
                            “ fileId”:16386,
                            “ group”:“ supergroup”,
                            “长度”:0,
                            “ modificationTime”:1473305878951,
                            “ owner”:“ andrew”,
                            “ pathSuffix”:“ foodir”,
                            “权限”:“ 755”,
                            “复制”:0,
                            “ storagePolicy”:0,
                            “ type”:“ DIRECTORY”
                        },
                        {
                            “ accessTime”:1473305902864,
                            “ blockSize”:1024,
                            “ childrenNum”:0,
                            “ fileId”:16389,
                            “ group”:“ supergroup”,
                            “长度”:0,
                            “ modificationTime”:1473305902878,
                            “ owner”:“ andrew”,
                            “ pathSuffix”:“ quxfile”,
                            “ permission”:“ 644”,
                            “复制”:3,
                            “ storagePolicy”:0,
                            “ type”:“ FILE”
                        }
                    ]
                }
            },
            “剩余条目”:0
        }
    }

批处理大小由NameNode上的dfs.ls.limit选项控制。

另请参阅:FileSystem .listStatusIterator

其他文件系统操作

获取目录的内容摘要

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETCONTENTSUMMARY”
    

    客户端收到带有ContentSummary JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
      “ ContentSummary”:
      {
        “ directoryCount”:2
        “ fileCount”:1
        “长度”:24930,
        “ quota”:-1,
        “ spaceConsumed”:24930,
        “ spaceQuota”:-1,
        “ typeQuota”:
        {
          “存档”:
          {
            “已消耗”:500,
            “ quota”:10000
          },
          “磁盘”:
          {
            “已消耗”:500,
            “ quota”:10000
          },
          “ SSD”:
          {
            “已消耗”:500,
            “ quota”:10000
          }
        }
      }
    }
    

另请参阅:FileSystem .getContentSummary

获取目录的配额使用

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETQUOTAUSAGE”
    

    客户端收到带有QuotaUsage JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
      “ QuotaUsage”:
      {
        “ fileAndDirectoryCount”:1
        “ quota”:100,
        “ spaceConsumed”:24930,
        “ spaceQuota”:100000,
        “ typeQuota”:
        {
          “存档”:
          {
            “已消耗”:500,
            “ quota”:10000
          },
          “磁盘”:
          {
            “已消耗”:500,
            “ quota”:10000
          },
          “ SSD”:
          {
            “已消耗”:500,
            “ quota”:10000
          }
        }
      }
    }
    

另请参阅:FileSystem .getQuotaUsage

获取文件校验和

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETFILECHECKSUM”
    

    通常,请求被重定向到数据节点:

    HTTP / 1.1 307 TEMPORARY_REDIRECT
    位置:http:// <DATANODE>:<PORT> / webhdfs / v1 / <PATH>?op = GETFILECHECKSUM ...
    内容长度:0
    

    但是,如果您不想自动重定向,则可以设置noredirect标志。

    HTTP / 1.1 200 OK
    内容类型:application / json
    {“位置”:“ http:// <DATANODE>:<PORT> / webhdfs / v1 / <PATH>?op = GETFILECHECKSUM ...”}
    

    客户端遵循重定向到datanode并接收FileChecksum JSON对象

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
      “ FileChecksum”:
      {
        “ algorithm”:“ MD5-of-1MD5-of-512CRC32”,
        “ bytes”:“ eadb10de24aa315748930df6e185c0d ...”,
        “长度”:28
      }
    }
    

另请参阅:FileSystem .getFileChecksum

获取主目录

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 /?op = GETHOMEDIRECTORY”
    

    客户端收到带有Path JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {“路径”:“ /用户/用户名”}
    

另请参阅:FileSystem .getHomeDirectory

获取垃圾根

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETTRASHROOT”
    

    客户端收到带有Path JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {“路径”:“ /用户/用户名/。垃圾”}
    

    如果该路径是加密的区域路径,并且用户具有该路径的权限,则客户端将收到如下响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {“路径”:“ / PATH / .Trash /用户名”}
    

另请参阅:FileSystem .getTrashRoot

有关加密区域中的垃圾桶根的更多详细信息,请参阅《透明加密指南》

设定权限

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = SETPERMISSION
                                  [&permission = <OCTAL>]”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参见:权限FileSystem .setPermission

设定拥有者

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = SETOWNER
                                  [&owner = <USER>] [&group = <GROUP>]“
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参见:ownergroupFileSystem .setOwner

设置复制因子

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = SETREPLICATION
                                  [&replication = <SHORT>]”
    

    客户端收到带有JSON 布尔对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {“布尔值”:true}
    

另请参见:复制FileSystem .setReplication

设置访问或修改时间

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = SETTIMES
                                  [&modificationtime = <TIME>] [&accesstime = <TIME>]“
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参见:modificationtimeaccesstime文件系统 .setTimes

修改ACL条目

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = MODIFYACLENTRIES
                                  &aclspec = <ACLSPEC>”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:FileSystem .modifyAclEntries

删除ACL条目

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = REMOVEACLENTRIES
                                  &aclspec = <ACLSPEC>”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:FileSystem .removeAclEntries

删除默认ACL

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = REMOVEDEFAULTACL”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:FileSystem .removeDefaultAcl

删除ACL

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = REMOVEACL”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:FileSystem .removeAcl

设定ACL

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = SETACL
                                  &aclspec = <ACLSPEC>”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:FileSystem .setAcl

获取ACL状态

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETACLSTATUS”
    

    客户端收到带有AclStatus JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
        “ AclStatus”:{
            “条目”:[
                “用户:carla:rw-”, 
                “ group :: rx”
            ], 
            “ group”:“ supergroup”, 
            “ owner”:“ hadoop”, 
            “ permission”:“ 775”,
            “ stickyBit”:false
        }
    }
    

另请参阅:FileSystem .getAclStatus

检查访问

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = CHECKACCESS
                                  &fsaction = <FSACTION>
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:FileSystem .access

存储策略操作

获取所有存储策略

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1?op = GETALLSTORAGEPOLICY”
    

    客户端收到带有BlockStoragePolicies JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
        “ BlockStoragePolicies”:{
            “ BlockStoragePolicy”:[
               {
                   “ copyOnCreateFile”:否,
                   “ creationFallbacks”:[],
                   “ id”:2
                   “ name”:“ COLD”,
                   “ replicationFallbacks”:[],
                   “ storageTypes”:[“ ARCHIVE”]
               },
               {
                   “ copyOnCreateFile”:否,
                   “ creationFallbacks”:[“ DISK”,“ ARCHIVE”],
                   “ id”:5
                   “ name”:“ WARM”,
                   “ replicationFallbacks”:[“ DISK”,“ ARCHIVE”],
                   “ storageTypes”:[“ DISK”,“ ARCHIVE”]
               },
               {
                   “ copyOnCreateFile”:否,
                   “ creationFallbacks”:[],
                   “ id”:7
                   “ name”:“ HOT”,
                   “ replicationFallbacks”:[“ ARCHIVE”],
                   “ storageTypes”:[“ DISK”]
               },
               {
                   “ copyOnCreateFile”:否,
                   “ creationFallbacks”:[“ SSD”,“ DISK”],
                   “ id”:10,“ name”:“ ONE_SSD”,
                   “ replicationFallbacks”:[“ SSD”,“ DISK”],
                   “ storageTypes”:[“ SSD”,“ DISK”]
               },
               {
                   “ copyOnCreateFile”:否,
                   “ creationFallbacks”:[“ DISK”],
                   “ id”:12
                   “ name”:“ ALL_SSD”,
                   “ replicationFallbacks”:[“ DISK”],
                   “ storageTypes”:[“ SSD”]
               },
               {
                   “ copyOnCreateFile”:是的,
                   “ creationFallbacks”:[“ DISK”],
                   “ id”:15
                   “ name”:“ LAZY_PERSIST”,
                   “ replicationFallbacks”:[“ DISK”],
                   “ storageTypes”:[“ RAM_DISK”,“ DISK”]
               }
           ]
       }
    }
    

另请参阅:FileSystem .getAllStoragePolicies

设置存储策略

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = SETSTORAGEPOLICY
                                  &storagepolicy = <策略>”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:FileSystem .setStoragePolicy

未设定的储存政策

  • 提交HTTP POT请求。
    curl -i -X POST“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = UNSETSTORAGEPOLICY”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:FileSystem .unsetStoragePolicy

获取存储策略

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETSTORAGEPOLICY”
    

    客户端收到带有BlockStoragePolicy JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
        “ BlockStoragePolicy”:{
            “ copyOnCreateFile”:否,
           “ creationFallbacks”:[],
            “ id”:7,
            “ name”:“ HOT”,
            “ replicationFallbacks”:[“ ARCHIVE”],
            “ storageTypes”:[“ DISK”]
        }
    }
    

另请参阅:FileSystem .getStoragePolicy

获取文件阻止位置

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETFILEBLOCKLOCATIONS
    

    客户端收到带有BlockLocations JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
      “ BlockLocations”:
      {
        “ BlockLocation”:
        [
          {
            “ cachedHosts”:[],
            “ corrupt”:错误,
            “主机”:[“主机”],
            “ length”:134217728,//此块的长度
            “ names”:[“ host:ip”],
            “ offset”:0,//文件中块的偏移量
            “ storageTypes”:[“ DISK”],//枚举{RAM_DISK,SSD,DISK,ARCHIVE}
            “ topologyPaths”:[“ /默认机架/主机名:ip”]
          },{
            “ cachedHosts”:[],
            “ corrupt”:错误,
            “主机”:[“主机”],
            “长度”:62599364,
            “ names”:[“ host:ip”],
            “偏移”:134217728,
            “ storageTypes”:[“ DISK”],
            “ topologyPaths”:[“ /默认机架/主机名:ip”]
          },
          ...
        ]
      }
    }
    

另请参见:offsetlengthFileSystem .getFileBlockLocations

扩展属性(XAttrs)操作

设置XAttr

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = SETXATTR
                                  &xattr.name = <XATTRNAME>&xattr.value = <XATTRVALUE>
                                  &flag = <FLAG>”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:FileSystem .setXAttr

删除XAttr

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = REMOVEXATTR
                                  &xattr.name = <XATTRNAME>”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:FileSystem .removeXAttr

获取XAttr

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETXATTRS
                                  &xattr.name = <XATTRNAME>&encoding = <ENCODING>”
    

    客户端收到带有XAttrs JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
        “ XAttrs”:[
            {
                “ name”:“ XATTRNAME”,
                “值”:“ XATTRVALUE”
            }
        ]
    }
    

另请参阅:FileSystem .getXAttr

获取多个XAttrs

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETXATTRS
                                  &xattr.name = <XATTRNAME1>&xattr.name = <XATTRNAME2>
                                  &encoding = <编码>”
    

    客户端收到带有XAttrs JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
        “ XAttrs”:[
            {
                “名称”:“ XATTRNAME1”,
                “值”:“ XATTRVALUE1”
            },
            {
                “名称”:“ XATTRNAME2”,
                “值”:“ XATTRVALUE2”
            }
        ]
    }
    

另请参阅:FileSystem .getXAttrs

获取所有XAttrs

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETXATTRS
                                  &encoding = <编码>”
    

    客户端收到带有XAttrs JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
        “ XAttrs”:[
            {
                “名称”:“ XATTRNAME1”,
                “值”:“ XATTRVALUE1”
            },
            {
                “名称”:“ XATTRNAME2”,
                “值”:“ XATTRVALUE2”
            },
            {
                “名称”:“ XATTRNAME3”,
                “值”:“ XATTRVALUE3”
            }
        ]
    }
    

另请参阅:FileSystem .getXAttrs

列出所有XAttrs

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = LISTXATTRS”
    

    客户端收到带有XAttrNames JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
        “ XAttrNames”:“ [\” XATTRNAME1 \“,\” XATTRNAME2 \“,\” XATTRNAME3 \“]”
    }
    

另请参阅:FileSystem .listXAttrs

擦除编码操作

启用EC政策

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 /?op = ENABLEECPOLICY
                                  &ecpolicy = <策略>”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:HDFSErasureCoding .enablePolicy

停用EC政策

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 /?op = DISABLEECPOLICY
                                  &ecpolicy = <策略>”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:HDFSErasureCoding .disablePolicy

设定EC政策

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = SETECPOLICY
                                  &ecpolicy = <策略>”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:HDFSErasureCoding .setErasureCodingPolicy

获取EC政策

  • 提交HTTP GET请求。
    curl -i -X GET“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETECPOLICY
                                 ”
    

客户端收到带有ECPolicy JSON对象的响应:

    {
        “名称”:“ RS-10-4-1024k”,
        “模式”:
        {
        “ codecName”:“ rs”,
        “ numDataUnits”:10,
        “ numParityUnits”:4
        “ extraOptions”:{}
        }
        “ cellSize”:1048576,
        “ id”:5,
        “ codecname”:“ rs”,
        “ numDataUnits”:10,
        “ numParityUnits”:4
        “ replicationpolicy”:false,
        “ systemPolicy”:true

    }

另请参见:HDFSErasureCoding .getErasureCodingPolicy

未设定EC政策

  • 提交HTTP POST请求。
    curl -i -X POST“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = UNSETECPOLICY
                                 ”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参见:HDFSErasureCoding .unsetErasureCodingPolicy

快照操作

创建快照

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = CREATESNAPSHOT [&snapshotname = <SNAPSHOTNAME>]”
    

    客户端收到带有Path JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {“路径”:“ /用户/用户名/.snapshot/s1”}
    

另请参阅:FileSystem .createSnapshot

删除快照

  • 提交HTTP DELETE请求。
    curl -i -X DELETE“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = DELETESNAPSHOT&snapshotname = <快照名称>”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:FileSystem .deleteSnapshot

重命名快照

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = RENAMESNAPSHOT
                       &oldsnapshotname = <快照名称>&snapshotname = <快照名称>“
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参阅:FileSystem .renameSnapshot

获取快照差异

  • 提交HTTP GET请求。
    curl -i GET“ http:// <主机>:<PORT> / webhdfs / v1 / <PATH>?op = GETSNAPSHOTDIFF
                       &oldsnapshotname = <快照名称>&snapshotname = <快照名称>“
    

    客户端收到带有SnapshotDiffReport JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {“ SnapshotDiffReport”:{“ diffList”:[],“ fromSnapshot”:“ s3”,“ snapshotRoot”:“ / foo”,“ toSnapshot”:“ s4”}}
    

获取快照表目录列表

  • 提交HTTP GET请求。
    curl -i GET“ http:// <主机>:<PORT> /webhdfs/v1/?user.name= <USER>&op = GETSNAPSHOTTABLEDIRECTORYLIST”
    

    如果USER不是hdfs超级用户,则调用仅列出该用户拥有的快照表目录。如果USER是hdfs超级用户,则调用将列出所有snapshottable目录。客户端收到带有SnapshottableDirectoryList JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
        “ SnapshottableDirectoryList”:
        [
            {
              “ dirStatus”:
                {
                    “ accessTime”:0,
                    “ blockSize”:0,
                    “ childrenNum”:0,
                    “ fileId”:16386,
                    “ group”:“ hadoop”,
                    “长度”:0,
                    “修改时间”:1520761889225,
                    “ owner”:“ random”,
                    “ pathSuffix”:“ bar”,
                    “权限”:“ 755”,
                    “复制”:0,
                    “ storagePolicy”:0,
                    “ type”:“目录”
                },
              “ parentFullPath”:“ /”,
              “ snapshotNumber”:0,
              “快照配额”:65536
            }
        ]
    }
    

委托令牌操作

获取委托令牌

  • 提交HTTP GET请求。
    curl -i“ http:// <主机>:<PORT> / webhdfs / v1 /?op = GETDELEGATIONTOKEN
                [&renewer = <用户>] [&服务= <服务>] [&种类= <种类>]”
    

    客户端收到带有令牌 JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {
      “令牌”:
      {
        “ urlString”:“ JQAIaG9y ...”
      }
    }
    

另请参见:更新器FileSystem .getDelegationToken,种类服务

续签授权令牌

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 /?op = RENEWDELEGATIONTOKEN&token = <令牌>”
    

    客户端收到带有 JSON对象的响应:

    HTTP / 1.1 200 OK
    内容类型:application / json
    传输编码:分块
    
    {“ long”:1320962673997} //新的到期时间
    

另见:令牌DelegationTokenAuthenticator .renewDelegationToken

取消授权令牌

  • 提交HTTP PUT请求。
    curl -i -X PUT“ http:// <主机>:<PORT> / webhdfs / v1 /?op = CANCELDELEGATIONTOKEN&token = <令牌>”
    

    客户端收到内容长度为零的响应:

    HTTP / 1.1 200 OK
    内容长度:0
    

另请参见:令牌委派令牌授权者 .cancelDelegationToken

错误回应

操作失败时,服务器可能会引发异常。错误响应的JSON模式在RemoteException JSON Schema中定义。下表显示了从异常到HTTP响应代码的映射。

HTTP响应码

例外情况 HTTP响应码
IllegalArgumentException 400错误的要求
UnsupportedOperationException 400错误的要求
SecurityException 401未经授权
IOException 403禁止
FileNotFoundException 找不到404
RuntimeException 500内部服务器错误

以下是异常响应的示例。

非法论证例外

HTTP / 1.1 400错误请求
内容类型:application / json
传输编码:分块

{
  “ RemoteException”:
  {
    “ exception”:“ IllegalArgumentException”,
    “ javaClassName”:“ java.lang.IllegalArgumentException”,
    “ message”:“ webhdfs参数的无效值\” permission \“:...”
  }
}

安全例外

HTTP / 1.1 401未经授权
内容类型:application / json
传输编码:分块

{
  “ RemoteException”:
  {
    “ exception”:“ SecurityException”,
    “ javaClassName”:“ java.lang.SecurityException”,
    “ message”:“无法获取用户组信息:...”
  }
}

访问控制异常

HTTP / 1.1 403禁止
内容类型:application / json
传输编码:分块

{
  “ RemoteException”:
  {
    “ exception”:“ AccessControlException”,
    “ javaClassName”:“ org.apache.hadoop.security.AccessControlException”,
    “ message”:“权限被拒绝:...”
  }
}

找不到文件异常

找不到HTTP / 1.1 404
内容类型:application / json
传输编码:分块

{
  “ RemoteException”:
  {
    “ exception”:“ FileNotFoundException”,
    “ javaClassName”:“ java.io.FileNotFoundException”,
    “ message”:“文件不存在:/foo/a.patch”
  }
}

JSON模式

OPEN之外的所有操作均返回零长度响应或JSON响应。对于OPEN,响应是一个八位字节流。JSON模式如下所示。有关JSON模式的语法定义,请参见draft-zyp-json-schema-03

请注意additionalProperties的默认值是一个空模式,该模式允许任何其他属性的值。因此,所有WebHDFS JSON响应均允许任何其他属性。但是,如果响应中包括其他属性,则它们将被视为可选属性,以保持兼容性。

ACL状态JSON架构

{
  “ name”:“ AclStatus”,
  “属性”:
  {
    “ AclStatus”:
    {
      “ type”:“ object”,
      “属性”:
      {
        “条目”:
        {
          “ type”:“ array”,
          “项目”:
          {
            “ description”:“ ACL条目”,
            “ type”:“字符串”
          }
        },
        “组”:
        {
          “ description”:“群组所有者。”,
          “ type”:“ string”,
          “必填”:是
        },
        “所有者”:
        {
          “ description”:“所有者的用户。”,
          “ type”:“ string”,
          “必填”:是
        },
        “ stickyBit”:
        {
          “ description”:“如果粘性位打开,则为真。”,
          “ type”:“ boolean”,
          “必填”:是
        }
      }
    }
  }
}

XAttrs JSON模式

{
  “ name”:“ XAttrs”,
  “属性”:
  {
    “ XAttrs”:
    {
      “ type”:“ array”,
      “项目”:
      {
        “ type”:“ object”,
        “属性”:
        {
          “名称”:
          {
            “ description”:“ XAttr名称。”,
            “ type”:“ string”,
            “必填”:是
          },
          “值”:
          {
            “ description”:“ XAttr值。”,
            “ type”:“ string”
          }
        }
      }
    }
  }
}

XAttrNames JSON模式

{
  “ name”:“ XAttrNames”,
  “属性”:
  {
    “ XAttrNames”:
    {
      “ description”:“ XAttr名称。”,
      “ type”:“ string”,
      “必填”:是
    }
  }
}

布尔JSON模式

{
  “ name”:“ boolean”,
  “属性”:
  {
    “布尔值”:
    {
      “ description”:“布尔值”,
      “ type”:“ boolean”,
      “必填”:是
    }
  }
}

另请参见:MKDIRSRENAMEDELETESETREPLICATION

ContentSummary JSON模式

{
  “ name”:“ ContentSummary”,
  “属性”:
  {
    “ ContentSummary”:
    {
      “ type”:“ object”,
      “属性”:
      {
        “ directoryCount”:
        {
          “ description”:“目录数。”,
          “ type”:“整数”,
          “必填”:是
        },
        “ fileCount”:
        {
          “ description”:“文件数。”,
          “ type”:“整数”,
          “必填”:是
        },
        “长度”:
        {
          “ description”:“内容使用的字节数。”,
          “ type”:“整数”,
          “必填”:是
        },
        “配额”:
        {
          “ description”:“此目录的名称空间配额。”,
          “ type”:“整数”,
          “必填”:是
        },
        “ spaceConsumed”:
        {
          “ description”:“内容占用的磁盘空间。”,
          “ type”:“整数”,
          “必填”:是
        },
        “ spaceQuota”:
        {
          “ description”:“磁盘空间配额。”,
          “ type”:“整数”,
          “必填”:是
        },
        “ typeQuota”:
        {
          “ type”:“ object”,
          “属性”:
          {
            “存档”:
            {
              “ type”:“ object”,
              “属性”:
              {
                “已消耗”:
                {
                  “ description”:“消耗的存储类型空间。”,
                  “ type”:“整数”,
                  “必填”:是
                },
                “配额”:
                {
                  “ description”:“存储类型配额。”,
                  “ type”:“整数”,
                  “必填”:是
                }
              }
            },
            “磁盘”:
            {
              “ type”:“ object”,
              “属性”:
              {
                “已消耗”:
                {
                  “ description”:“消耗的存储类型空间。”,
                  “ type”:“整数”,
                  “必填”:是
                },
                “配额”:
                {
                  “ description”:“存储类型配额。”,
                  “ type”:“整数”,
                  “必填”:是
                }
              }
            },
            “ SSD”:
            {
              “ type”:“ object”,
              “属性”:
              {
                “已消耗”:
                {
                  “ description”:“消耗的存储类型空间。”,
                  “ type”:“整数”,
                  “必填”:是
                },
                “配额”:
                {
                  “ description”:“存储类型配额。”,
                  “ type”:“整数”,
                  “必填”:是
                }
              }
            }
          }
        }
      }
    }
  }
}

另请参阅:GETCONTENTSUMMARY

QuotaUsage JSON模式

{
  “ name”:“ QuotaUsage”,
  “属性”:
  {
    “ QuotaUsage”:
    {
      “ type”:“ object”,
      “属性”:
      {
        “ fileAndDirectoryCount”:
        {
          “ description”:“文件和目录的数量。”,
          “ type”:“整数”,
          “必填”:是
        },
        “配额”:
        {
          “ description”:“此目录的名称空间配额。”,
          “ type”:“整数”,
          “必填”:是
        },
        “ spaceConsumed”:
        {
          “ description”:“内容占用的磁盘空间。”,
          “ type”:“整数”,
          “必填”:是
        },
        “ spaceQuota”:
        {
          “ description”:“磁盘空间配额。”,
          “ type”:“整数”,
          “必填”:是
        },
        “ typeQuota”:
        {
          “ type”:“ object”,
          “属性”:
          {
            “存档”:
            {
              “ type”:“ object”,
              “属性”:
              {
                “已消耗”:
                {
                  “ description”:“消耗的存储类型空间。”,
                  “ type”:“整数”,
                  “必填”:是
                },
                “配额”:
                {
                  “ description”:“存储类型配额。”,
                  “ type”:“整数”,
                  “必填”:是
                }
              }
            },
            “磁盘”:
            {
              “ type”:“ object”,
              “属性”:
              {
                “已消耗”:
                {
                  “ description”:“消耗的存储类型空间。”,
                  “ type”:“整数”,
                  “必填”:是
                },
                “配额”:
                {
                  “ description”:“存储类型配额。”,
                  “ type”:“整数”,
                  “必填”:是
                }
              }
            },
            “ SSD”:
            {
              “ type”:“ object”,
              “属性”:
              {
                “已消耗”:
                {
                  “ description”:“消耗的存储类型空间。”,
                  “ type”:“整数”,
                  “必填”:是
                },
                “配额”:
                {
                  “ description”:“存储类型配额。”,
                  “ type”:“整数”,
                  “必填”:是
                }
              }
            }
          }
        }
      }
    }
  }
}

另请参阅:GETQUOTAUSAGE

FileChecksum JSON模式

{
  “ name”:“ FileChecksum”,
  “属性”:
  {
    “ FileChecksum”:
    {
      “ type”:“ object”,
      “属性”:
      {
        “算法”:
        {
          “ description”:“校验和算法的名称。”,
          “ type”:“ string”,
          “必填”:是
        },
        “字节”:
        {
          “ description”:“校验和的字节序列,以十六进制表示。”,
          “ type”:“ string”,
          “必填”:是
        },
        “长度”:
        {
          “ description”:“字节的长度(不是字符串的长度)。”,
          “ type”:“整数”,
          “必填”:是
        }
      }
    }
  }
}

FileStatus JSON模式

{
  “ name”:“ FileStatus”,
  “属性”:
  {
    “ FileStatus”:fileStatusProperties //请参阅FileStatus属性
  }
}

另请参阅:FileStatus属性GETFILESTATUSFileStatus

FileStatus属性

JavaScript语法用于定义fileStatusProperties,以便可以在FileStatusFileStatuses JSON模式中引用它。

var fileStatusProperties =
{
  “ type”:“ object”,
  “属性”:
  {
    “ accessTime”:
    {
      “ description”:“访问时间。”,
      “ type”:“整数”,
      “必填”:是
    },
    “ blockSize”:
    {
      “ description”:“文件的块大小。”,
      “ type”:“整数”,
      “必填”:是
    },
    “组”:
    {
      “ description”:“群组所有者。”,
      “ type”:“ string”,
      “必填”:是
    },
    “长度”:
    {
      “ description”:“文件中的字节数。”,
      “ type”:“整数”,
      “必填”:是
    },
    “ modificationTime”:
    {
      “ description”:“修改时间。”,
      “ type”:“整数”,
      “必填”:是
    },
    “所有者”:
    {
      “ description”:“所有者的用户。”,
      “ type”:“ string”,
      “必填”:是
    },
    “ pathSuffix”:
    {
      “ description”:“路径后缀。”,
      “ type”:“ string”,
      “必填”:是
    },
    “允许”:
    {
      “ description”:“权限以八进制字符串表示。”,
      “ type”:“ string”,
      “必填”:是
    },
    “复制”:
    {
      “ description”:“文件的复制数。”,
      “ type”:“整数”,
      “必填”:是
    },
   “ symlink”://可选属性
    {
      “ description”:“符号链接的链接目标。”,
      “ type”:“ string”
    },
   “类型”:
    {
      “ description”:“路径对象的类型。”,
      “枚举”:[“文件”,“目录”,“ SYMLINK”],
      “必填”:是
    }
  }
};

FileStatuses JSON模式

FileStatuses JSON对象表示的阵列时间filestatus JSON对象。

{
  “ name”:“ FileStatuses”,
  “属性”:
  {
    “ FileStatuses”:
    {
      “ type”:“ object”,
      “属性”:
      {
        “ FileStatus”:
        {
          “ description”:“ FileStatus的数组”,
          “ type”:“ array”,
          “ items”:fileStatusProperties //请参阅FileStatus属性
        }
      }
    }
  }
}

另请参阅:FileStatus属性LISTSTATUSFileStatus

DirectoryListing JSON模式

一个Directory上市 JSON对象表示了一批目录条目,而迭代列出目录。它包含一个FileStatuses JSON对象以及迭代信息。

{
  “ name”:“ DirectoryListing”,
  “属性”:
  {
    “ DirectoryListing”:
    {
      “ type”:“ object”,
      “属性”:
      {
        “ partialListing”:
        {
          “ description”:“部分目录清单”,
          “ type”:“ object”,//一个FileStatuses对象
          “必填”:是
        },
        “剩余条目”:
        {
          “ description”:“剩余条目数”,
          “ type”:“整数”,
          “必填”:是
        }
      }
    }
  }

}

另请参阅:FileStatuses JSON模式LISTSTATUS_BATCHFileStatus

长JSON模式

{
  “ name”:“ long”,
  “属性”:
  {
    “长”:
    {
      “ description”:“一个长整数值”,
      “ type”:“整数”,
      “必填”:是
    }
  }
}

另请参阅:RENEWDELEGATIONTOKEN

路径JSON模式

{
  “ name”:“ Path”,
  “属性”:
  {
    “路径”:
    {
      “ description”:“字符串表示路径。”,
      “ type”:“ string”,
      “必填”:是
    }
  }
}

另请参阅:GETHOMEDIRECTORY路径

RemoteException JSON模式

{
  “ name”:“ RemoteException”,
  “属性”:
  {
    “ RemoteException”:
    {
      “ type”:“ object”,
      “属性”:
      {
        “例外”:
        {
          “ description”:“例外名称”,
          “ type”:“ string”,
          “必填”:是
        },
        “信息”:
        {
          “ description”:“异常消息”,
          “ type”:“ string”,
          “必填”:是
        },
        “ javaClassName”://可选属性
        {
          “ description”:“异常的Java类名称”,
          “ type”:“ string”
        }
      }
    }
  }
}

另请参阅:错误响应

令牌JSON模式

{
  “ name”:“令牌”,
  “属性”:
  {
    “令牌”:tokenProperties //请参阅令牌属性
  }
}

另请参见:令牌属性GETDELEGATIONTOKEN委托中的注释。

令牌属性

JavaScript语法用于定义tokenProperties,以便可以在Token JSON模式中引用它。

var tokenProperties =
{
  “ type”:“ object”,
  “属性”:
  {
    “ urlString”:
    {
      “ description”:“编码为URL安全字符串的委托令牌。”,
      “ type”:“ string”,
      “必填”:是
    }
  }
}

另请参阅:令牌属性代表团注意事项。

BlockStoragePolicy JSON模式

{
  “ name”:“ BlockStoragePolicy”,
  “属性”:
  {
    “ BlockStoragePolicy”:blockStoragePolicyProperties //请参阅BlockStoragePolicy属性
  }
}

另请参阅:BlockStoragePolicy属性GETSTORAGEPOLICY

BlockStoragePolicy属性

JavaScript语法用于定义blockStoragePolicyProperties,以便可以在BlockStoragePolicyBlockStoragePolicies JSON模式中引用它。

var blockStoragePolicyProperties =
{
  “ type”:“ object”,
  “属性”:
  {
    “ID”:
    {
      “ description”:“政策ID。”,
      “ type”:“整数”,
      “必填”:是
    },
    “名称”:
    {
      “ description”:“政策名称。”,
      “ type”:“ string”,
      “必填”:是
    },
    “ storageTypes”:
    {
      “ description”:“用于块放置的存储类型的数组。”,
      “ type”:“ array”,
      “必填”:是
      “项目”:
      {
        “ type”:“字符串”
      }
    },
    “ replicationFallbacks”:
    {
      “ description”:“用于复制的后备存储类型数组。”,
      “ type”:“ array”,
      “必填”:是
      “项目”:
      {
        “ type”:“字符串”
      }
    },
    “ creationFallbacks”:
    {
      “ description”:“用于文件创建的后备存储类型的数组。”,
      “ type”:“ array”,
      “必填”:是
      “项目”:
      {
       “ type”:“字符串”
      }
    },
    “ copyOnCreateFile”:
    {
      “ description”:“如果设置,则在创建文件后无法更改策略。”,
      “ type”:“ boolean”,
      “必填”:是
    }
  }
};

ECPolicy JSON模式

{
  “名称”:“ RS-10-4-1024k”,
  模式{
           “ codecName”:“ rs”,
           “ numDataUnits”:10,
           “ numParityUnits”:4
           “ extraOptions”:{}
          }
  “ cellSize”:1048576,
  “ id”:5,
  “ codecname”:“ rs”,
  “ numDataUnits”:10,
  “ numParityUnits”:4
  “ replicationpolicy”:false,
  “ systemPolicy”:true
}

BlockStoragePolicies JSON模式

BlockStoragePolicies JSON对象表示的阵列BlockStoragePolicy JSON对象。

{
  “ name”:“ BlockStoragePolicies”,
  “属性”:
  {
    “ BlockStoragePolicies”:
    {
      “ type”:“ object”,
      “属性”:
      {
        “ BlockStoragePolicy”:
        {
          “ description”:“ BlockStoragePolicy的数组”,
          “ type”:“ array”,
          “ items”:blockStoragePolicyProperties //请参见BlockStoragePolicy属性
        }
      }
    }
  }
}

SnapshotDiffReport JSON模式

{
  “ name”:“ SnapshotDiffReport”,
  “ type”:“对象”,
  “属性”:
  {
    “ SnapshotDiffReport”:
    {
      “ type”:“ object”,
      “属性”:
      {
        “ diffList”:
        {
          “ description”:“ DiffReportEntry的数组”,
          “ type”:“ array”,
          “ items”:diffReportEntries,
          “必填”:是
        },
        “ fromSnapshot”:
        {
          “ description”:“源快照”,
          “ type”:“ string”,
          “必填”:是
        },
        “ snapshotRoot”:
        {
          “ description”:“快照根路径的字符串表示形式”,
          “ type”:“ string”,
          “必填”:是
        },
        “ toSnapshot”:
        {
          “ description”:“目标快照”,
          “ type”:“ string”,
          “必填”:是
        }
      }
    }
  }
}

DiffReport条目

JavaScript语法用于定义diffReportEntries,以便可以在SnapshotDiffReport JSON模式中引用它。

var diffReportEntries =
{
  “ type”:“对象”,
  “属性”:
  {
    “ sourcePath”:
    {
      “ description”:“相对于快照根的源路径名”,
      “ type”:“ string”,
      “必填”:是
    },
    “ targetPath”:
    {
      “ description”:“相对于用于重命名的快照根的目标路径”,
      “ type”:“ string”,
      “必填”:是
    },
    “类型”:
    {
      “ description”:“差异报告条目类型”,
      “枚举”:[“创建”,“修改”,“删除”,“重命名”],
      “必填”:是
    }
  }
}

SnapshottableDirectoryList JSON模式

{
  “ name”:“ SnapshottableDirectoryList”,
  “ type”:“对象”,
  “属性”:
  {
    “ SnapshottableDirectoryList”:
    {
      “ description”:“ SnapshottableDirectoryStatus的数组”,
      “ type”:“ array”,
      “ items”:snapshottableDirectoryStatus,
      “必填”:是
    }
  }
}

SnapshottableDirectoryStatus

JavaScript语法用于定义snapshottableDirectoryStatus,以便可以在SnapshottableDirectoryList JSON模式中引用它。

var snapshottableDirectoryStatus =
{
  “ type”:“对象”,
  “属性”:
  {
    “ dirStatus”:fileStatusProperties,
    “ parentFullPath”:
    {
      “ description”:“快照表目录的父级的完整路径”,
      “ type”:“ string”,
      “必填”:是
    },
    “快照编号”:
    {
      “ description”:“在snapshottable目录上创建的快照数”,
      “ type”:“整数”,
      “必填”:是
    },
    “ snapshotQuota”:
    {
      “ description”:“快照表目录中允许的快照总数”,
      “ type”:“整数”,
      “必填”:是
    }
  }
}

BlockLocations JSON模式

BlockLocations JSON对象表示的阵列BlockLocation JSON对象。

{
  “ name”:“ BlockLocations”,
  “属性”:
  {
    “ BlockLocations”:
    {
      “ type”:“ object”,
      “属性”:
      {
        “ BlockLocation”:
        {
          “ description”:“ BlockLocation的数组”,
          “ type”:“ array”,
          “ items”:blockLocationProperties //参见BlockLocation属性
        }
      }
    }
  }
}

另请参见BlockLocation属性GETFILEBLOCKLOCATIONSBlockLocation

BlockLocation JSON模式

{
  “ name”:“ BlockLocation”,
  “属性”:
  {
    “ BlockLocation”:blockLocationProperties //请参见BlockLocation属性
  }
}

另请参见BlockLocation属性GETFILEBLOCKLOCATIONSBlockLocation

BlockLocation属性

JavaScript语法用于定义blockLocationProperties,以便可以在BlockLocationBlockLocations JSON模式中引用它。

var blockLocationProperties =
{
  “ type”:“ object”,
  “属性”:
  {
    “ cachedHosts”:
    {
      “ description”:“具有缓存副本的Datanode主机名”,
      “ type”:“ array”,
      “ required”:“ true”,
      “项目”:
      {
        “ description”:“一个数据节点主机名”,
        “ type”:“ string”
      }
    },
    “腐败”:
    {
      “ description”:“如果该块已损坏,则为真”,
      “ type”:“ boolean”,
      “ required”:“ true”
    },
    “主机”:
    {
      “ description”:“ Datanode主机名存储该块”,
      “ type”:“ array”,
      “ required”:“ true”,
      “项目”:
      {
        “ description”:“一个数据节点主机名”,
        “ type”:“ string”
      }
    },
    “长度”:
    {
      “ description”:“块的长度”,
      “ type”:“整数”,
      “ required”:“ true”
    },
    “名称”:
    {
      “ description”:“用于访问块的数据节点IP:xferPort”,
      “ type”:“ array”,
      “ required”:“ true”,
      “项目”:
      {
        “ description”:“ DatanodeIP:xferPort”,
        “ type”:“ string”
      }
    },
    “偏移”:
    {
      “ description”:“文件中块的偏移量”,
      “ type”:“整数”,
      “ required”:“ true”
    },
    “ storageTypes”:
    {
      “ description”:“每个副本的存储类型”,
      “ type”:“ array”,
      “ required”:“ true”,
      “项目”:
      {
        “ description”:“存储类型”,
        “枚举”:[“ RAM_DISK”,“ SSD”,“ DISK”,“ ARCHIVE”]
      }
    },
    “ topologyPaths”:
    {
      “ description”:“网络拓扑中的数据节点地址”,
      “ type”:“ array”,
      “ required”:“ true”,
      “项目”:
      {
        “ description”:“ / rack / host:ip”,
        “ type”:“ string”
      }
    }
  }
};

HTTP查询参数字典

ACL规格

名称 规格
描述 ACL修改操作中包含的ACL规范。
类型
默认值 <空>
有效值 请参阅权限和HDFS
句法 请参阅权限和HDFS

XAttr名称

名称 xattr.name
描述 文件/目录的XAttr名称。
类型
默认值 <空>
有效值 任何以user./trusted./system./security。开头的字符串
句法 任何以user./trusted./system./security。开头的字符串

XAttr值

名称 xattr.value
描述 文件/目录的XAttr值。
类型
默认值 <空>
有效值 编码值。
句法 用双引号引起来或以0x或0s开头。

另请参阅:扩展属性

XAttr设置标志

名称
描述 XAttr设置标志。
类型
默认值 <空>
有效值 创建,替换。
句法 创建,替换。

另请参阅:扩展属性

XAttr值编码

名称 编码方式
描述 XAttr值编码。
类型
默认值 <空>
有效值 文本 十六进制 base64
句法 文本 十六进制 base64

另请参阅:扩展属性

访问时间

名称 访问时间
描述 文件/目录的访问时间。
类型
默认值 -1(表示保持不变)
有效值 -1或时间戳
句法 任何整数。

另请参阅:SETTIMES

块大小

名称 块大小
描述 文件的块大小。
类型
默认值 在配置中指定。
有效值 > 0
句法 任何整数。

另请参阅:创建

缓冲区大小

名称 缓冲区大小
描述 传输数据时使用的缓冲区大小。
类型 整型
默认值 在配置中指定。
有效值 > 0
句法 任何整数。

另请参见:CREATEAPPENDOPEN

创建标志

名称 createflag
描述 创建文件时要处理的可能标志的枚举
类型 枚举字符串
默认值 <空>
有效值 创建,覆盖,附加和sync_block的合法组合
句法 请参阅下面的注释

以下组合无效:*追加,创建*创建,追加,覆盖

另请参阅:创建

创建父母

名称 createparent
描述 如果父目录不存在,应该创建它们吗?
类型 布尔值
默认值 真正
有效值 真假
句法 真正

另请参阅:CREATESYMLINK

代表团

名称 代表团
描述 用于身份验证的委托令牌。
类型
默认值 <空>
有效值 编码令牌。
句法 请参阅下面的注释。

请注意,委派令牌被编码为URL安全字符串。见encodeToUrlString()decodeFromUrlString(字符串)org.apache.hadoop.security.token.Token的编码的细节。

另请参阅:身份验证

目的地

名称 目的地
描述 目标路径。
类型 路径
默认值 <empty>(无效路径)
有效值 没有方案和权限的绝对FileSystem路径。
句法 任何路径。

另请参阅:CREATESYMLINKRENAME

做为

名称 多阿斯
描述 允许代理用户作为另一个用户执行。
类型
默认值 空值
有效值 任何有效的用户名。
句法 任何字符串。

另请参阅:代理用户

Fs动作

名称 派系
描述 文件系统操作读/写/执行
类型
默认值 空(无效值)
有效值 匹配正则表达式模式“ [r-] [w-] [x-]”的字符串
句法  “ [r-] [w-] [x-]”

另请参阅:CHECKACCESS

名称
描述 组的名称。
类型
默认值 <empty>(表示保持不变)
有效值 任何有效的组名。
句法 任何字符串。

另请参阅:SETOWNER

长度

名称 长度
描述 要处理的字节数。
类型
默认值 空(表示整个文件)
有效值 > = 0或null
句法 任何整数。

另请参阅:打开

修改时间

名称 修改时间
描述 文件/目录的修改时间。
类型
默认值 -1(表示保持不变)
有效值 -1或时间戳
句法 任何整数。

另请参阅:SETTIMES

新长度

名称 新长度
描述 文件将被截断的大小。
类型
有效值 > = 0
句法 多久

偏移量

名称 抵销
描述 起始字节位置。
类型
默认值 0
有效值 > = 0
句法 任何整数。

另请参阅:打开

旧快照名称

名称 快照名称
描述 要重命名的快照的旧名称。
类型
默认值 空值
有效值 现有快照名称。
句法 任何字符串。

另请参阅:RENAMESNAPSHOT

运维

名称
描述 要执行的操作的名称。
类型 枚举
默认值 空(无效值)
有效值 任何有效的操作名称。
句法 任何字符串。

另请参阅:操作

覆写

名称 覆写
描述 如果文件已经存在,是否应该覆盖?
类型 布尔值
默认值
有效值 真正
句法 真正

另请参阅:创建

所有者

名称 所有者
描述 用户名是文件/目录的所有者。
类型
默认值 <empty>(表示保持不变)
有效值 任何有效的用户名。
句法 任何字符串。

另请参阅:SETOWNER

允许

名称 允许
描述 文件/目录的权限。
类型 八进制
默认值 文件为644,目录为755
有效值 0-1777
句法 任何基数8的整数(前导零可以省略。)

另请参见:CREATEMKDIRSSETPERMISSION

递归的

名称 递归的
描述 该操作是否应作用于子目录中的内容?
类型 布尔值
默认值
有效值 真正
句法 真正

另请参阅:重命名

续订

名称 更新
描述 委托令牌续订的用户名。
类型
默认值 <empty>(表示当前用户)
有效值 任何有效的用户名。
句法 任何字符串。

另请参阅:GETDELEGATIONTOKEN

复写

名称 复制
描述 文件的复制数。
类型
默认值 在配置中指定。
有效值 > 0
句法 任何整数。

另请参见:CREATESETREPLICATION

快照名称

名称 快照名称
描述 要创建/删除的快照的名称。或快照重命名的新名称。
类型
默认值 空值
有效值 任何有效的快照名称。
句法 任何字符串。

另请参见:CREATESNAPSHOTDELETESNAPSHOTRENAMESNAPSHOT

资料来源

名称 资料来源
描述 源路径列表。
类型
默认值 <空>
有效值 没有方案和权限的逗号分隔绝对文件系统路径列表。
句法 任何字符串。

另请参阅:CONCAT

代币

名称 代币
描述 用于操作的委托令牌。
类型
默认值 <空>
有效值 编码令牌。
句法 请参阅授权中的注释。

另请参阅:RENEWDELEGATIONTOKENCANCELDELEGATIONTOKEN

代币种类

名称
描述 请求的委托令牌的种类
类型
默认值 <empty>(服务器设置服务的默认种类)
有效值 表示令牌类型的字符串,例如“ HDFS_DELEGATION_TOKEN”或“ WEBHDFS委托”
句法 任何字符串。

另请参阅:GETDELEGATIONTOKEN

代币服务

名称 服务
描述 应该使用令牌的服务的名称,例如namenode的ip:port
类型
默认值 <空>
有效值 ip:port字符串格式或服务的逻辑名称
句法 任何字符串。

另请参阅:GETDELEGATIONTOKEN

用户名

名称 用户名
描述 认证用户;请参阅身份验证
类型
默认值 空值
有效值 任何有效的用户名。
句法 任何字符串。

另请参阅:身份验证

否重定向

名称 无重定向
描述 响应是否应返回HTTP 307重定向或HTTP 200 OK。请参阅创建和写入文件
类型 布尔值
默认值
有效值 真正
句法 真正

另请参阅:创建和写入文件

储存政策

名称 存储策略
描述 存储策略的名称。
类型
默认值 <空>
有效值 任何有效的存储策略名称;请参阅GETALLSTORAGEPOLICY
句法 任何字符串。

另请参阅:SETSTORAGEPOLICY

删除编码政策

名称 政治
描述 擦除编码策略的名称。
类型
默认值 <空>
有效值 任何有效的擦除编码策略名称;
句法 任何字符串。

另请参阅:ENABLEECPOLICYDISABLEECPOLICY

之后开始

名称 startAfter
描述 liststatus批处理中返回的最后一项。
类型
默认值 <空>
有效值 任何有效的文件/目录名称。
句法 任何字符串。

另请参阅:LISTSTATUS_BATCH