等幅フォント |
コマンド、HTTPリクエストとレスポンス、コードブロックに使用されます。 |
---|---|
<等幅フォント> |
ユーザーが入力した値。 |
[等幅フォント] |
オプションの値。値が指定されていない場合、デフォルト値が使用されます。 |
イタリック体 | 重要なフレーズと単語。 |
HTTP REST APIは、HDFSの完全なFileSystem/FileContextインターフェースをサポートしています。操作と対応するFileSystem/FileContextメソッドは、次のセクションに示されています。セクションHTTPクエリパラメータ辞書は、デフォルト値や有効値などのパラメータの詳細を指定しています。
OPEN
(参照: FileSystem.open)GETFILESTATUS
(参照: FileSystem.getFileStatus)LISTSTATUS
(参照: FileSystem.listStatus)LISTSTATUS_BATCH
(参照: FileSystem.listStatusIterator)GETCONTENTSUMMARY
(参照: FileSystem.getContentSummary)GETQUOTAUSAGE
(参照: FileSystem.getQuotaUsage)GETFILECHECKSUM
(参照: FileSystem.getFileChecksum)GETHOMEDIRECTORY
(参照: FileSystem.getHomeDirectory)GETDELEGATIONTOKEN
(参照: FileSystem.getDelegationToken)GETTRASHROOT
(参照: FileSystem.getTrashRoot)GETXATTRS
(参照: FileSystem.getXAttr)GETXATTRS
(参照: FileSystem.getXAttrs)GETXATTRS
(参照: FileSystem.getXAttrs)LISTXATTRS
(参照: FileSystem.listXAttrs)CHECKACCESS
(参照: FileSystem.access)GETALLSTORAGEPOLICY
(参照: FileSystem.getAllStoragePolicies)GETSTORAGEPOLICY
(参照: FileSystem.getStoragePolicy)GETSNAPSHOTDIFF
GETSNAPSHOTTABLEDIRECTORYLIST
GETFILEBLOCKLOCATIONS
(FileSystem.getFileBlockLocations参照)GETECPOLICY
(HDFSErasureCoding.getErasureCodingPolicy参照)CREATE
(FileSystem.create参照)MKDIRS
(FileSystem.mkdirs参照)CREATESYMLINK
(FileContext.createSymlink参照)RENAME
(FileSystem.rename参照)SETREPLICATION
(FileSystem.setReplication参照)SETOWNER
(FileSystem.setOwner参照)SETPERMISSION
(FileSystem.setPermission参照)SETTIMES
(FileSystem.setTimes参照)RENEWDELEGATIONTOKEN
(DelegationTokenAuthenticator.renewDelegationToken参照)CANCELDELEGATIONTOKEN
(DelegationTokenAuthenticator.cancelDelegationToken参照)ALLOWSNAPSHOT
DISALLOWSNAPSHOT
CREATESNAPSHOT
(FileSystem.createSnapshot参照)RENAMESNAPSHOT
(FileSystem.renameSnapshot参照)SETXATTR
(FileSystem.setXAttr参照)REMOVEXATTR
(FileSystem.removeXAttr参照)SETSTORAGEPOLICY
(FileSystem.setStoragePolicy参照)SATISFYSTORAGEPOLICY
(ArchivalStorage.satisfyStoragePolicy参照)ENABLEECPOLICY
(HDFSErasureCoding.enablePolicy参照)DISABLEECPOLICY
(HDFSErasureCoding.disablePolicy参照)SETECPOLICY
(HDFSErasureCoding.setErasureCodingPolicy参照)APPEND
(FileSystem.append参照)CONCAT
(FileSystem.concat参照)TRUNCATE
(FileSystem.truncate参照)UNSETSTORAGEPOLICY
(FileSystem.unsetStoragePolicy参照)UNSETECPOLICY
(HDFSErasureCoding.unsetErasureCodingPolicy参照)DELETE
(FileSystem.delete参照)DELETESNAPSHOT
(FileSystem.deleteSnapshot参照)WebHDFSのFileSystemスキームは“webhdfs://
”です。WebHDFS FileSystem URIは以下のフォーマットになります。
webhdfs://<HOST>:<HTTP_PORT>/<PATH>
上記のWebHDFS URIは、以下のHDFS URIに対応します。
hdfs://<HOST>:<RPC_PORT>/<PATH>
REST APIでは、プレフィックス“/webhdfs/v1
”がパスに挿入され、クエリが最後に追加されます。そのため、対応するHTTP URLは以下のフォーマットになります。
http://<HOST>:<HTTP_PORT>/webhdfs/v1/<PATH>?op=...
注記 WebHDFSがSSLで保護されている場合、スキームは“swebhdfs://
”になります。
swebhdfs://<HOST>:<HTTP_PORT>/<PATH>
以下は、WebHDFSのHDFS設定オプションです。
プロパティ名 | 説明 |
---|---|
dfs.web.authentication.kerberos.principal |
HTTPエンドポイントでHadoop-Authが使用するHTTP Kerberosプリンシパル。Kerberos HTTP SPNEGO仕様に従って、HTTP Kerberosプリンシパルは「HTTP/」で始まる必要があります。「*」の値は、キータブにあるすべてのHTTPプリンシパルを使用します。 |
dfs.web.authentication.kerberos.keytab |
HTTPエンドポイントでHadoop-Authが使用するHTTP Kerberosプリンシパルの資格情報を含むKerberosキータブファイル。 |
dfs.webhdfs.socket.connect-timeout |
接続確立に失敗するまでの待機時間。時間の長さで指定します(数値に単位記号を付加、例:2mは2分)。デフォルトは60秒です。 |
dfs.webhdfs.socket.read-timeout |
データの到着を待つ時間。デフォルトは60秒です。 |
セキュリティがオフの場合、認証済みユーザーはuser.name
クエリパラメータで指定されたユーザー名です。user.name
パラメータが設定されていない場合、サーバーは認証済みユーザーをデフォルトのWebユーザー(存在する場合)に設定するか、エラー応答を返します。
セキュリティがオンの場合、認証はHadoop委任トークンまたはKerberos SPNEGOによって実行されます。トークンがdelegation
クエリパラメータに設定されている場合、認証済みユーザーはトークンにエンコードされたユーザーです。delegation
パラメータが設定されていない場合、ユーザーはKerberos SPNEGOによって認証されます。
以下は、curl
コマンドツールを使用した例です。
セキュリティがオフの場合の認証
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?[user.name=<USER>&]op=..."
セキュリティがオンの場合のKerberos SPNEGOを使用した認証
curl -i --negotiate -u : "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=..."
セキュリティがオンの場合のHadoop委任トークンを使用した認証
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?delegation=<TOKEN>&op=..."
さらに、WebHDFSはクライアント側でOAuth2をサポートしています。NameNodeとDataNodeは現在、OAuth2を使用するクライアントをサポートしていませんが、WebHDFS RESTインターフェースを実装する他のバックエンドはサポートしている可能性があります。
WebHDFSは、デフォルトで2種類のOAuth2コード付与(ユーザーが提供する更新トークンとアクセストークン、またはユーザーが提供する資格情報)をサポートしており、OAuth2 RFCに従って、他のOAuth2認証またはカスタム認証を実装するためのプラグ可能なメカニズムを提供しています。提供されているコード付与メカニズムのいずれかを使用する場合、WebHDFSクライアントは必要に応じてアクセストークンを更新します。
OAuth2は、Kerberos SPNEGOで実行されていないクライアントに対してのみ有効にする必要があります。
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 の実装のクラス名。上記のようにコードに2つが提供されています。または、ユーザーが提供した実装を指定することもできます。この設定キーのデフォルト値は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 FileSystem(つまり、swebhdfsプロトコルを使用)を使用するには、クライアント側にSSL設定ファイルを指定する必要があります。これには3つのパラメータを指定する必要があります。
SSLプロパティ | 説明 |
---|---|
ssl.client.truststore.location |
NameNodeの証明書を含む信頼ストアファイルのローカルファイルシステムの場所。 |
ssl.client.truststore.type |
(オプション)信頼ストアファイルのフォーマット。 |
ssl.client.truststore.password |
(オプション)信頼ストアファイルのパスワード。 |
以下の例はSSL設定ファイル(ssl-client.xml)です。
<configuration> <property> <name>ssl.client.truststore.location</name> <value>/work/keystore.jks</value> <description>Truststore to be used by clients. Must be specified.</description> </property> <property> <name>ssl.client.truststore.password</name> <value>changeme</value> <description>Optional. Default value is "".</description> </property> <property> <name>ssl.client.truststore.type</name> <value>jks</value> <description>Optional. Default value is "jks".</description> </property> </configuration>
SSL設定ファイルはクライアントプログラムのクラスパスに存在する必要があり、ファイル名はcore-site.xmlで指定する必要があります。
<property> <name>hadoop.ssl.client.conf</name> <value>ssl-client.xml</value> <description> Resource file from which ssl client keystore information will be extracted. This file is looked up in the classpath, typically it should be in Hadoop conf/ directory. Default value is "ssl-client.xml". </description> </property>
プロキシユーザー機能が有効になっている場合、プロキシユーザー*P*は、別のユーザー*U*に代わってリクエストを送信できます。委任トークンが認証で提示されない限り、*U*のユーザー名はdoas
クエリパラメータで指定する必要があります。そのような場合、ユーザー*P*と*U*の両方の情報が委任トークンにエンコードされている必要があります。
セキュリティがオフの場合のプロキシリクエスト
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?[user.name=<USER>&]doas=<USER>&op=..."
セキュリティがオンの場合のKerberos SPNEGOを使用したプロキシリクエスト
curl -i --negotiate -u : "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?doas=<USER>&op=..."
セキュリティがオンの場合のHadoop委任トークンを使用したプロキシリクエスト
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?delegation=<TOKEN>&op=..."
WebHDFSは、クロスサイトリクエストフォージェリ(CSRF)防止のためのオプションで構成可能なメカニズムをサポートしています。有効にすると、NameNodeまたはDataNodeへのWebHDFS HTTPリクエストには、カスタムHTTPヘッダーを含める必要があります。設定プロパティにより、保護する特定のHTTPメソッドとHTTPヘッダーの名前を調整できます。ヘッダーに送信される値は関係ありません。その名前のヘッダーが存在するだけで十分です。
CSRF防止を有効にすると、WebHdfsFileSystem
クラスも必要なヘッダーを送信するように設定されます。これにより、webhdfs:
URIで使用する場合でも、hdfs dfs
やhadoop distcp
などのCLIコマンドが引き続き正しく機能します。
CSRF防止を有効にすると、NameNode Web UIも必要なヘッダーを送信するように設定されます。CSRF防止を有効にしてNameNodeを再起動した後、NameNode Web UIの既存のユーザーはブラウザを更新してページを再読み込みし、新しい設定を確認する必要があります。
以下のプロパティはCSRF防止を制御します。
プロパティ | 説明 | デフォルト値 |
---|---|---|
dfs.webhdfs.rest-csrf.enabled |
true の場合、WebHDFS のサイト間リクエスト偽造 (CSRF) 対策を有効にします。WebHDFS クライアントもこのプロパティを使用して、HTTP リクエストにカスタム CSRF 対策ヘッダーを送信する必要があるかどうかを判断します。 | false |
dfs.webhdfs.rest-csrf.custom-header |
dfs.webhdfs.rest-csrf.enabled を true に設定して WebHDFS のサイト間リクエスト偽造 (CSRF) 対策を有効にした場合に、HTTP リクエストが送信する必要があるカスタムヘッダーの名前です。WebHDFS クライアントもこのプロパティを使用して、カスタム CSRF 対策ヘッダーを送信する必要があるかどうかを判断します。 | X-XSRF-HEADER |
dfs.webhdfs.rest-csrf.methods-to-ignore |
dfs.webhdfs.rest-csrf.enabled を true に設定して WebHDFS のサイト間リクエスト偽造 (CSRF) 対策を有効にした場合に、HTTP リクエストでカスタムヘッダーを含める必要がない HTTP メソッドのカンマ区切りのリストです。WebHDFS クライアントもこのプロパティを使用して、カスタム 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.* |
dfs.datanode.httpserver.filter.handlers |
Datanode WebHDFS I/O パスに挿入する Netty サーブレットスタイルのフィルターハンドラーのカンマ区切りのリスト | org.apache.hadoop.hdfs.server.datanode.web.RestCsrfPreventionFilterHandler |
以下は、-H
オプションを使用してリクエストにカスタムヘッダーを含める curl
コマンドの例です。
curl -i -L -X PUT -H 'X-XSRF-HEADER: ""' 'http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CREATE'
WebHDFS は、タイムアウトする可能性のある大規模ファイルのレジリエントコピー、またはコピー中にフェイルオーバーする可能性のある HA クラスタ間のファイルコピーのために、オプションで構成可能なリトライポリシーをサポートしています。
以下のプロパティは、WebHDFS のリトライとフェイルオーバーポリシーを制御します。
プロパティ | 説明 | デフォルト値 |
---|---|---|
dfs.http.client.retry.policy.enabled |
“true” の場合、WebHDFS クライアントのリトライポリシーを有効にします。“false” の場合、リトライポリシーは無効になります。 | 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 |
WebHDFS プロトコルにおけるデータの方向性を制御し、安全でないネットワークからのデータの書き込みのみを許可することができます。有効にするには、dfs.datanode.httpserver.filter.handlers
に org.apache.hadoop.hdfs.server.datanode.web.HostRestrictingAuthorizationFilterHandler
が含まれていることを確認する必要があります。HostRestrictingAuthorizationFilter
の設定は、以下のプロパティで制御されます。
プロパティ | 説明 | デフォルト値 |
---|---|---|
dfs.datanode.httpserver.filter.handlers |
Datanode WebHDFS I/O パスに挿入する Netty サーブレットスタイルのフィルターハンドラーのカンマ区切りのリスト | org.apache.hadoop.hdfs.server.datanode.web.RestCsrfPreventionFilterHandler |
dfs.web.authentication.host.allow.rules |
ユーザーがファイルを読み取ることを許可するルール。形式は *user*,*network/bits*,*path glob* 改行または `|`区切りです。すべての *users* または *network/bits* には `*` を使用します。 | 何もなし - デフォルトでは、WebHDFS を介して誰も読み取れません。 |
ステップ1:リダイレクトを自動的に追跡せず、ファイルデータを送信せずに HTTP PUT リクエストを送信します。
curl -i -X PUT "http://<HOST>:<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 Location: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE... Content-Length: 0
ただし、自動的にリダイレクトされないようにするには、noredirect フラグを設定できます。
HTTP/1.1 200 OK Content-Type: application/json {"Location":"http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE..."}
ステップ2:Location
ヘッダーの URL(または noredirect を指定した場合の返された応答)を使用して、書き込むファイルデータを含む別の HTTP PUT リクエストを送信します。
curl -i -X PUT -T <LOCAL_FILE> "http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE..."
クライアントは、コンテンツ長がゼロの 201 Created
応答と、Location
ヘッダーにファイルの WebHDFS URI を受け取ります。
HTTP/1.1 201 Created Location: webhdfs://<HOST>:<PORT>/<PATH> Content-Length: 0
アクセス許可が指定されていない場合、新しく作成されたファイルにはデフォルトの 644 アクセス許可が割り当てられます。サーバー側では umask モードは適用されません(そのため、NameNode 側で設定された「fs.permissions.umask-mode」値の設定は無効になります)。
注記:2 ステップでの作成/追加を行う理由は、クライアントがリダイレクトの前にデータを送信するのを防ぐためです。この問題は、HTTP/1.1 の「Expect: 100-continue
」ヘッダーで解決されています。 RFC 2616、セクション 8.2.3 を参照してください。残念ながら、「Expect: 100-continue
」を正しく実装していないソフトウェアライブラリのバグ(例:Jetty 6 HTTP サーバーと Java 6 HTTP クライアント)があります。2 ステップでの作成/追加は、ソフトウェアライブラリのバグに対する一時的な回避策です。
こちらも参照してください:overwrite
、blocksize
、replication
、permission
、buffersize
、FileSystem.create
curl -i -X POST "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=APPEND[&buffersize=<INT>][&noredirect=<true|false>]"
通常、リクエストはファイルデータを追加するデータノードにリダイレクトされます。
HTTP/1.1 307 TEMPORARY_REDIRECT Location: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=APPEND... Content-Length: 0
ただし、自動的にリダイレクトされないようにするには、noredirect フラグを設定できます。
HTTP/1.1 200 OK Content-Type: application/json {"Location":"http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=APPEND..."}
Location
ヘッダーの URL(または noredirect を指定した場合の返された応答)を使用して、追加するファイルデータを含む別の HTTP POST リクエストを送信します。curl -i -X POST -T <LOCAL_FILE> "http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=APPEND..."
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
この操作が 2 ステップで必要となる理由については、前のセクションの注記を参照してください。
こちらも参照してください:buffersize
、FileSystem.append
curl -i -X POST "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CONCAT&sources=<PATHS>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
こちらも参照してください:sources
、FileSystem.concat
curl -i -L "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=OPEN [&offset=<LONG>][&length=<LONG>][&buffersize=<INT>][&noredirect=<true|false>]"
通常、リクエストはファイルデータを読み取ることができるデータノードにリダイレクトされます。
HTTP/1.1 307 TEMPORARY_REDIRECT Location: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=OPEN... Content-Length: 0
ただし、自動的にリダイレクトされないようにするには、noredirect フラグを設定できます。
HTTP/1.1 200 OK Content-Type: application/json {"Location":"http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=OPEN..."}
クライアントはデータノードへのリダイレクトに従い、ファイルデータを受け取ります。
HTTP/1.1 200 OK Content-Type: application/octet-stream Content-Length: 22 Hello, webhdfs user!
こちらも参照してください:offset
、length
、buffersize
、FileSystem.open
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=MKDIRS[&permission=<OCTAL>]"
クライアントは、boolean
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"boolean": true}
アクセス許可が指定されていない場合、新しく作成されたディレクトリにはデフォルトで 755 アクセス許可が設定されます。サーバー側では umask モードは適用されません(そのため、NameNode 側で設定された「fs.permissions.umask-mode」値の設定は無効になります)。
こちらも参照してください:permission
、FileSystem.mkdirs
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CREATESYMLINK &destination=<PATH>[&createParent=<true |false>]"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
こちらも参照してください:destination
、createParent
、FileSystem.createSymlink
curl -i -X PUT "<HOST>:<PORT>/webhdfs/v1/<PATH>?op=RENAME&destination=<PATH>"
クライアントは、boolean
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"boolean": true}
こちらも参照してください:destination
、FileSystem.rename
curl -i -X DELETE "http://<host>:<port>/webhdfs/v1/<path>?op=DELETE [&recursive=<true |false>]"
クライアントは、boolean
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"boolean": true}
こちらも参照してください:recursive
、FileSystem.delete
curl -i -X POST "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=TRUNCATE&newlength=<LONG>"
クライアントは、boolean
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"boolean": true}
こちらも参照してください:newlength
、FileSystem.truncate
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETFILESTATUS"
クライアントは、FileStatus
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "FileStatus": { "accessTime" : 0, "blockSize" : 0, "group" : "supergroup", "length" : 0, //in bytes, zero for directories "modificationTime": 1320173277227, "owner" : "webuser", "pathSuffix" : "", "permission" : "777", "replication" : 0, "snapshotEnabled" : true "type" : "DIRECTORY" //enum {FILE, DIRECTORY, SYMLINK} } }
こちらも参照してください:FileSystem.getFileStatus
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS"
クライアントは、FileStatuses
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 427 { "FileStatuses": { "FileStatus": [ { "accessTime" : 1320171722771, "blockSize" : 33554432, "childrenNum" : 0, "fileId" : 16388, "group" : "supergroup", "length" : 24930, "modificationTime": 1320171722771, "owner" : "webuser", "pathSuffix" : "a.patch", "permission" : "644", "replication" : 1, "storagePolicy" : 0, "type" : "FILE" }, { "accessTime" : 0, "blockSize" : 0, "childrenNum" : 0, "fileId" : 16389, "group" : "supergroup", "length" : 0, "modificationTime": 1320895981256, "owner" : "username", "pathSuffix" : "bar", "permission" : "711", "replication" : 0, "snapshotEnabled" : true "type" : "DIRECTORY" }, ... ] } }
こちらも参照してください:FileSystem.listStatus
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS"
クライアントは、FileStatuses
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 427 { "FileStatuses": { "FileStatus": [ { "accessTime" : 1320171722771, "blockSize" : 33554432, "childrenNum" : 0, "fileId" : 16390, "group" : "supergroup", "length" : 1366, "modificationTime": 1501770633062, "owner" : "webuser", "pathSuffix" : "", "permission" : "644", "replication" : 1, "storagePolicy" : 0, "type" : "FILE" } ] } }
こちらも参照してください:FileSystem.listStatus
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS_BATCH&startAfter=<CHILD>"
クライアントは、FileStatuses
JSON オブジェクト と反復情報を含む DirectoryListing
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Cache-Control: no-cache Expires: Thu, 08 Sep 2016 03:40:38 GMT Date: Thu, 08 Sep 2016 03:40:38 GMT Pragma: no-cache Expires: Thu, 08 Sep 2016 03:40:38 GMT Date: Thu, 08 Sep 2016 03:40:38 GMT Pragma: no-cache Content-Type: application/json X-FRAME-OPTIONS: SAMEORIGIN Transfer-Encoding: chunked Server: Jetty(6.1.26) { "DirectoryListing": { "partialListing": { "FileStatuses": { "FileStatus": [ { "accessTime": 0, "blockSize": 0, "childrenNum": 0, "fileId": 16387, "group": "supergroup", "length": 0, "modificationTime": 1473305882563, "owner": "andrew", "pathSuffix": "bardir", "permission": "755", "replication": 0, "storagePolicy": 0, "type": "DIRECTORY" }, { "accessTime": 1473305896945, "blockSize": 1024, "childrenNum": 0, "fileId": 16388, "group": "supergroup", "length": 0, "modificationTime": 1473305896965, "owner": "andrew", "pathSuffix": "bazfile", "permission": "644", "replication": 3, "storagePolicy": 0, "type": "FILE" } ] } }, "remainingEntries": 2 } }
remainingEntries
がゼロ以外の場合、ディレクトリに追加のエントリがあります。次のバッチをクエリするには、startAfter
パラメーターを現在のバッチで返された最後のアイテムの pathSuffix
に設定します。例:
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS_BATCH&startAfter=bazfile"
これにより、ディレクトリエントリの次のバッチが返されます。
HTTP/1.1 200 OK Cache-Control: no-cache Expires: Thu, 08 Sep 2016 03:43:20 GMT Date: Thu, 08 Sep 2016 03:43:20 GMT Pragma: no-cache Expires: Thu, 08 Sep 2016 03:43:20 GMT Date: Thu, 08 Sep 2016 03:43:20 GMT Pragma: no-cache Content-Type: application/json X-FRAME-OPTIONS: SAMEORIGIN Transfer-Encoding: chunked Server: Jetty(6.1.26) { "DirectoryListing": { "partialListing": { "FileStatuses": { "FileStatus": [ { "accessTime": 0, "blockSize": 0, "childrenNum": 0, "fileId": 16386, "group": "supergroup", "length": 0, "modificationTime": 1473305878951, "owner": "andrew", "pathSuffix": "foodir", "permission": "755", "replication": 0, "storagePolicy": 0, "type": "DIRECTORY" }, { "accessTime": 1473305902864, "blockSize": 1024, "childrenNum": 0, "fileId": 16389, "group": "supergroup", "length": 0, "modificationTime": 1473305902878, "owner": "andrew", "pathSuffix": "quxfile", "permission": "644", "replication": 3, "storagePolicy": 0, "type": "FILE" } ] } }, "remainingEntries": 0 } }
バッチサイズは、NameNode の dfs.ls.limit
オプションで制御されます。
こちらも参照してください:FileSystem.listStatusIterator
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETCONTENTSUMMARY"
クライアントは、ContentSummary
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "ContentSummary": { "directoryCount": 2, "ecPolicy" : "RS-6-3-1024k", "fileCount" : 1, "length" : 24930, "quota" : -1, "spaceConsumed" : 24930, "spaceQuota" : -1, "typeQuota": { "ARCHIVE": { "consumed": 500, "quota": 10000 }, "DISK": { "consumed": 500, "quota": 10000 }, "SSD": { "consumed": 500, "quota": 10000 } } } }
こちらも参照してください:FileSystem.getContentSummary
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETQUOTAUSAGE"
クライアントは、QuotaUsage
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "QuotaUsage": { "fileAndDirectoryCount": 1, "quota" : 100, "spaceConsumed" : 24930, "spaceQuota" : 100000, "typeQuota": { "ARCHIVE": { "consumed": 500, "quota": 10000 }, "DISK": { "consumed": 500, "quota": 10000 }, "SSD": { "consumed": 500, "quota": 10000 } } } }
こちらも参照してください:FileSystem.getQuotaUsage
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETQUOTA &namespacequota=<QUOTA>[&storagespacequota=<QUOTA>]"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
こちらも参照してください:FileSystem.setQuota
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETQUOTABYSTORAGETYPE &storagetype=<STORAGETYPE>&storagespacequota=<QUOTA>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
こちらも参照してください:FileSystem.setQuotaByStorageType
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETFILECHECKSUM"
通常、リクエストはデータノードにリダイレクトされます。
HTTP/1.1 307 TEMPORARY_REDIRECT Location: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=GETFILECHECKSUM... Content-Length: 0
ただし、自動的にリダイレクトされないようにするには、noredirect フラグを設定できます。
HTTP/1.1 200 OK Content-Type: application/json {"Location":"http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=GETFILECHECKSUM..."}
クライアントはデータノードへのリダイレクトに従い、FileChecksum
JSON オブジェクト を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "FileChecksum": { "algorithm": "MD5-of-1MD5-of-512CRC32", "bytes" : "eadb10de24aa315748930df6e185c0d ...", "length" : 28 } }
こちらも参照してください:FileSystem.getFileChecksum
curl -i "http://<HOST>:<PORT>/webhdfs/v1/?op=GETHOMEDIRECTORY"
クライアントは、Path
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"Path": "/user/username"}
こちらも参照してください:FileSystem.getHomeDirectory
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETTRASHROOT"
クライアントは、Path
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"Path": "/user/username/.Trash"}
パスが暗号化ゾーンパスであり、ユーザーにパスのアクセス許可がある場合、クライアントは次のような応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"Path": "/PATH/.Trash/username"}
こちらも参照してください:FileSystem.getTrashRoot
暗号化ゾーンでのゴミ箱ルートの詳細については、透過的暗号化ガイド を参照してください。
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETPERMISSION [&permission=<OCTAL>]"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: permission
、FileSystem.setPermission
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETOWNER [&owner=<USER>][&group=<GROUP>]"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: owner
、group
、FileSystem.setOwner
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETREPLICATION [&replication=<SHORT>]"
クライアントは、boolean
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"boolean": true}
参照: replication
、FileSystem.setReplication
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETTIMES [&modificationtime=<TIME>][&accesstime=<TIME>]"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: modificationtime
、accesstime
、FileSystem.setTimes
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=MODIFYACLENTRIES &aclspec=<ACLSPEC>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: FileSystem.modifyAclEntries
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=REMOVEACLENTRIES &aclspec=<ACLSPEC>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: FileSystem.removeAclEntries
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=REMOVEDEFAULTACL"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: FileSystem.removeDefaultAcl
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=REMOVEACL"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: FileSystem.removeAcl
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETACL &aclspec=<ACLSPEC>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: FileSystem.setAcl
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETACLSTATUS"
AclStatus
JSONオブジェクトを含むレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "AclStatus": { "entries": [ "user:carla:rw-", "group::r-x" ], "group": "supergroup", "owner": "hadoop", "permission":"775", "stickyBit": false } }
参照: FileSystem.getAclStatus
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CHECKACCESS &fsaction=<FSACTION>
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: FileSystem.access
curl -i "http://<HOST>:<PORT>/webhdfs/v1?op=GETALLSTORAGEPOLICY"
BlockStoragePolicies
JSONオブジェクトを含むレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "BlockStoragePolicies": { "BlockStoragePolicy": [ { "copyOnCreateFile": false, "creationFallbacks": [], "id": 2, "name": "COLD", "replicationFallbacks": [], "storageTypes": ["ARCHIVE"] }, { "copyOnCreateFile": false, "creationFallbacks": ["DISK","ARCHIVE"], "id": 5, "name": "WARM", "replicationFallbacks": ["DISK","ARCHIVE"], "storageTypes": ["DISK","ARCHIVE"] }, { "copyOnCreateFile": false, "creationFallbacks": [], "id": 7, "name": "HOT", "replicationFallbacks": ["ARCHIVE"], "storageTypes": ["DISK"] }, { "copyOnCreateFile": false, "creationFallbacks": ["SSD","DISK"], "id": 10,"name": "ONE_SSD", "replicationFallbacks": ["SSD","DISK"], "storageTypes": ["SSD","DISK"] }, { "copyOnCreateFile": false, "creationFallbacks": ["DISK"], "id": 12, "name": "ALL_SSD", "replicationFallbacks": ["DISK"], "storageTypes": ["SSD"] }, { "copyOnCreateFile": true, "creationFallbacks": ["DISK"], "id": 15, "name": "LAZY_PERSIST", "replicationFallbacks": ["DISK"], "storageTypes": ["RAM_DISK","DISK"] } ] } }
参照: FileSystem.getAllStoragePolicies
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETSTORAGEPOLICY &storagepolicy=<policy>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: FileSystem.setStoragePolicy
curl -i -X POST "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=UNSETSTORAGEPOLICY"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: FileSystem.unsetStoragePolicy
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETSTORAGEPOLICY"
BlockStoragePolicy
JSONオブジェクトを含むレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "BlockStoragePolicy": { "copyOnCreateFile": false, "creationFallbacks": [], "id":7, "name":"HOT", "replicationFallbacks":["ARCHIVE"], "storageTypes":["DISK"] } }
参照: FileSystem.getStoragePolicy
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SATISFYSTORAGEPOLICY"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: ArchivalStorage.satisfyStoragePolicy
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETFILEBLOCKLOCATIONS
BlockLocations
JSONオブジェクトを含むレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "BlockLocations" : { "BlockLocation": [ { "cachedHosts" : [], "corrupt" : false, "hosts" : ["host"], "length" : 134217728, // length of this block "names" : ["host:ip"], "offset" : 0, // offset of the block in the file "storageTypes" : ["DISK"], // enum {RAM_DISK, SSD, DISK, ARCHIVE} "topologyPaths" : ["/default-rack/hostname:ip"] }, { "cachedHosts" : [], "corrupt" : false, "hosts" : ["host"], "length" : 62599364, "names" : ["host:ip"], "offset" : 134217728, "storageTypes" : ["DISK"], "topologyPaths" : ["/default-rack/hostname:ip"] }, ... ] } }
参照: offset
、length
、FileSystem.getFileBlockLocations
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETXATTR &xattr.name=<XATTRNAME>&xattr.value=<XATTRVALUE> &flag=<FLAG>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: FileSystem.setXAttr
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=REMOVEXATTR &xattr.name=<XATTRNAME>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: FileSystem.removeXAttr
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETXATTRS &xattr.name=<XATTRNAME>&encoding=<ENCODING>"
XAttrs
JSONオブジェクトを含むレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "XAttrs": [ { "name":"XATTRNAME", "value":"XATTRVALUE" } ] }
参照: FileSystem.getXAttr
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETXATTRS &xattr.name=<XATTRNAME1>&xattr.name=<XATTRNAME2> &encoding=<ENCODING>"
XAttrs
JSONオブジェクトを含むレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "XAttrs": [ { "name":"XATTRNAME1", "value":"XATTRVALUE1" }, { "name":"XATTRNAME2", "value":"XATTRVALUE2" } ] }
参照: FileSystem.getXAttrs
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETXATTRS &encoding=<ENCODING>"
XAttrs
JSONオブジェクトを含むレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "XAttrs": [ { "name":"XATTRNAME1", "value":"XATTRVALUE1" }, { "name":"XATTRNAME2", "value":"XATTRVALUE2" }, { "name":"XATTRNAME3", "value":"XATTRVALUE3" } ] }
参照: FileSystem.getXAttrs
curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTXATTRS"
XAttrNames
JSONオブジェクトを含むレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "XAttrNames":"[\"XATTRNAME1\",\"XATTRNAME2\",\"XATTRNAME3\"]" }
参照: FileSystem.listXAttrs
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/?op=ENABLEECPOLICY &ecpolicy=<policy>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: HDFSErasureCoding.enablePolicy
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/?op=DISABLEECPOLICY &ecpolicy=<policy>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: HDFSErasureCoding.disablePolicy
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=SETECPOLICY &ecpolicy=<policy>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: HDFSErasureCoding.setErasureCodingPolicy
curl -i -X GET "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETECPOLICY "
ECPolicy
JSONオブジェクトを含むレスポンスがクライアントに返されます。
{ "name": "RS-10-4-1024k", "schema": { "codecName": "rs", "numDataUnits": 10, "numParityUnits": 4, "extraOptions": {} } "cellSize": 1048576, "id":5, "codecname":"rs", "numDataUnits": 10, "numParityUnits": 4, "replicationpolicy":false, "systemPolicy":true }
参照: HDFSErasureCoding.getErasureCodingPolicy
curl -i -X POST "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=UNSETECPOLICY "
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: HDFSErasureCoding.unsetErasureCodingPolicy
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=ALLOWSNAPSHOT"
成功した場合、コンテンツ長0のレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Length: 0
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=DISALLOWSNAPSHOT"
成功した場合、コンテンツ長0のレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Length: 0
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CREATESNAPSHOT[&snapshotname=<SNAPSHOTNAME>]"
クライアントは、Path
JSON オブジェクト を含む応答を受け取ります。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"Path": "/user/username/.snapshot/s1"}
参照: FileSystem.createSnapshot
curl -i -X DELETE "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=DELETESNAPSHOT&snapshotname=<SNAPSHOTNAME>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: FileSystem.deleteSnapshot
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=RENAMESNAPSHOT &oldsnapshotname=<SNAPSHOTNAME>&snapshotname=<SNAPSHOTNAME>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: FileSystem.renameSnapshot
curl -i GET "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETSNAPSHOTDIFF &oldsnapshotname=<SNAPSHOTNAME>&snapshotname=<SNAPSHOTNAME>"
SnapshotDiffReport
JSONオブジェクトを含むレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"SnapshotDiffReport":{"diffList":[],"fromSnapshot":"s3","snapshotRoot":"/foo","toSnapshot":"s4"}}
curl -i GET "http://<HOST>:<PORT>/webhdfs/v1/?user.name=<USER>&op=GETSNAPSHOTTABLEDIRECTORYLIST"
ユーザーがHDFSスーパーユーザーでない場合、この呼び出しはユーザーが所有するスナップショット可能ディレクトリのみをリストします。ユーザーがHDFSスーパーユーザーの場合、この呼び出しはすべてのスナップショット可能ディレクトリをリストします。SnapshottableDirectoryList
JSONオブジェクトを含むレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "SnapshottableDirectoryList": [ { "dirStatus": { "accessTime":0, "blockSize":0, "childrenNum":0, "fileId":16386, "group":"hadoop", "length":0, "modificationTime":1520761889225, "owner":"random", "pathSuffix":"bar", "permission":"755", "replication":0, "storagePolicy":0, "type":"DIRECTORY" }, "parentFullPath":"/", "snapshotNumber":0, "snapshotQuota":65536 } ] }
curl -i "http://<HOST>:<PORT>/webhdfs/v1/?op=GETDELEGATIONTOKEN [&renewer=<USER>][&service=<SERVICE>][&kind=<KIND>]"
Token
JSONオブジェクトを含むレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked { "Token": { "urlString": "JQAIaG9y..." } }
参照: renewer
、FileSystem.getDelegationToken、kind
、service
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/?op=RENEWDELEGATIONTOKEN&token=<TOKEN>"
long
JSONオブジェクトを含むレスポンスがクライアントに返されます。
HTTP/1.1 200 OK Content-Type: application/json Transfer-Encoding: chunked {"long": 1320962673997} //the new expiration time
参照: token
、DelegationTokenAuthenticator.renewDelegationToken
curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/?op=CANCELDELEGATIONTOKEN&token=<TOKEN>"
クライアントは、コンテンツ長がゼロの応答を受け取ります。
HTTP/1.1 200 OK Content-Length: 0
参照: token
、DelegationTokenAuthenticator.cancelDelegationToken
操作が失敗すると、サーバーは例外をスローすることがあります。エラーレスポンスのJSONスキーマはRemoteException JSONスキーマで定義されています。以下の表は、例外とHTTPレスポンスコードのマッピングを示しています。
例外 | HTTPレスポンスコード |
---|---|
IllegalArgumentException |
400 Bad Request |
UnsupportedOperationException |
400 Bad Request |
SecurityException |
401 Unauthorized |
IOException |
403 Forbidden |
FileNotFoundException |
404 Not Found |
RuntimeException |
500 Internal Server Error |
以下は、例外レスポンスの例です。
HTTP/1.1 400 Bad Request Content-Type: application/json Transfer-Encoding: chunked { "RemoteException": { "exception" : "IllegalArgumentException", "javaClassName": "java.lang.IllegalArgumentException", "message" : "Invalid value for webhdfs parameter \"permission\": ..." } }
HTTP/1.1 401 Unauthorized Content-Type: application/json Transfer-Encoding: chunked { "RemoteException": { "exception" : "SecurityException", "javaClassName": "java.lang.SecurityException", "message" : "Failed to obtain user group information: ..." } }
HTTP/1.1 403 Forbidden Content-Type: application/json Transfer-Encoding: chunked { "RemoteException": { "exception" : "AccessControlException", "javaClassName": "org.apache.hadoop.security.AccessControlException", "message" : "Permission denied: ..." } }
HTTP/1.1 404 Not Found Content-Type: application/json Transfer-Encoding: chunked { "RemoteException": { "exception" : "FileNotFoundException", "javaClassName": "java.io.FileNotFoundException", "message" : "File does not exist: /foo/a.patch" } }
OPEN
を除くすべての操作は、長さ0のレスポンスまたはJSONレスポンスを返します。OPEN
の場合、レスポンスはオクテットストリームです。JSONスキーマを以下に示します。draft-zyp-json-schema-03でJSONスキーマの構文定義を参照してください。
注記 additionalProperties
のデフォルト値は空のスキーマであり、追加のプロパティに任意の値を許可します。そのため、すべてのWebHDFS JSONレスポンスは追加のプロパティを許可します。ただし、レスポンスに追加のプロパティが含まれている場合、互換性を維持するために、それらはオプションのプロパティと見なされます。
{ "name" : "AclStatus", "properties": { "AclStatus": { "type" : "object", "properties": { "entries": { "type": "array", "items": { "description": "ACL entry.", "type": "string" } }, "group": { "description": "The group owner.", "type" : "string", "required" : true }, "owner": { "description": "The user who is the owner.", "type" : "string", "required" : true }, "stickyBit": { "description": "True if the sticky bit is on.", "type" : "boolean", "required" : true } } } } }
{ "name" : "XAttrs", "properties": { "XAttrs": { "type" : "array", "items": { "type" : "object", "properties": { "name": { "description": "XAttr name.", "type" : "string", "required" : true }, "value": { "description": "XAttr value.", "type" : "string" } } } } } }
{ "name" : "XAttrNames", "properties": { "XAttrNames": { "description": "XAttr names.", "type" : "string", "required" : true } } }
{ "name" : "boolean", "properties": { "boolean": { "description": "A boolean value", "type" : "boolean", "required" : true } } }
{ "name" : "ContentSummary", "properties": { "ContentSummary": { "type" : "object", "properties": { "directoryCount": { "description": "The number of directories.", "type" : "integer", "required" : true }, "fileCount": { "description": "The number of files.", "type" : "integer", "required" : true }, "length": { "description": "The number of bytes used by the content.", "type" : "integer", "required" : true }, "quota": { "description": "The namespace quota of this directory.", "type" : "integer", "required" : true }, "spaceConsumed": { "description": "The disk space consumed by the content.", "type" : "integer", "required" : true }, "spaceQuota": { "description": "The disk space quota.", "type" : "integer", "required" : true }, "typeQuota": { "type" : "object", "properties": { "ARCHIVE": { "type" : "object", "properties": { "consumed": { "description": "The storage type space consumed.", "type" : "integer", "required" : true }, "quota": { "description": "The storage type quota.", "type" : "integer", "required" : true } } }, "DISK": { "type" : "object", "properties": { "consumed": { "description": "The storage type space consumed.", "type" : "integer", "required" : true }, "quota": { "description": "The storage type quota.", "type" : "integer", "required" : true } } }, "SSD": { "type" : "object", "properties": { "consumed": { "description": "The storage type space consumed.", "type" : "integer", "required" : true }, "quota": { "description": "The storage type quota.", "type" : "integer", "required" : true } } } } } } } } }
{ "name" : "QuotaUsage", "properties": { "QuotaUsage": { "type" : "object", "properties": { "fileAndDirectoryCount": { "description": "The number of files and directories.", "type" : "integer", "required" : true }, "quota": { "description": "The namespace quota of this directory.", "type" : "integer", "required" : true }, "spaceConsumed": { "description": "The disk space consumed by the content.", "type" : "integer", "required" : true }, "spaceQuota": { "description": "The disk space quota.", "type" : "integer", "required" : true }, "typeQuota": { "type" : "object", "properties": { "ARCHIVE": { "type" : "object", "properties": { "consumed": { "description": "The storage type space consumed.", "type" : "integer", "required" : true }, "quota": { "description": "The storage type quota.", "type" : "integer", "required" : true } } }, "DISK": { "type" : "object", "properties": { "consumed": { "description": "The storage type space consumed.", "type" : "integer", "required" : true }, "quota": { "description": "The storage type quota.", "type" : "integer", "required" : true } } }, "SSD": { "type" : "object", "properties": { "consumed": { "description": "The storage type space consumed.", "type" : "integer", "required" : true }, "quota": { "description": "The storage type quota.", "type" : "integer", "required" : true } } } } } } } } }
参照: GETQUOTAUSAGE
{ "name" : "FileChecksum", "properties": { "FileChecksum": { "type" : "object", "properties": { "algorithm": { "description": "The name of the checksum algorithm.", "type" : "string", "required" : true }, "bytes": { "description": "The byte sequence of the checksum in hexadecimal.", "type" : "string", "required" : true }, "length": { "description": "The length of the bytes (not the length of the string).", "type" : "integer", "required" : true } } } } }
{ "name" : "FileStatus", "properties": { "FileStatus": fileStatusProperties //See FileStatus Properties } }
参照: FileStatus
プロパティ、GETFILESTATUS
、FileStatus
fileStatusProperties
を定義するためにJavaScript構文が使用されています。これにより、FileStatus
とFileStatuses
の両方のJSONスキーマで参照できます。
var fileStatusProperties = { "type" : "object", "properties": { "accessTime": { "description": "The access time.", "type" : "integer", "required" : true }, "blockSize": { "description": "The block size of a file.", "type" : "integer", "required" : true }, "group": { "description": "The group owner.", "type" : "string", "required" : true }, "length": { "description": "The number of bytes in a file.", "type" : "integer", "required" : true }, "modificationTime": { "description": "The modification time.", "type" : "integer", "required" : true }, "owner": { "description": "The user who is the owner.", "type" : "string", "required" : true }, "pathSuffix": { "description": "The path suffix.", "type" : "string", "required" : true }, "permission": { "description": "The permission represented as a octal string.", "type" : "string", "required" : true }, "replication": { "description": "The number of replication of a file.", "type" : "integer", "required" : true }, "symlink": //an optional property { "description": "The link target of a symlink.", "type" : "string" }, "type": { "description": "The type of the path object.", "enum" : ["FILE", "DIRECTORY", "SYMLINK"], "required" : true } } };
FileStatuses
JSONオブジェクトは、FileStatus
JSONオブジェクトの配列を表します。
{ "name" : "FileStatuses", "properties": { "FileStatuses": { "type" : "object", "properties": { "FileStatus": { "description": "An array of FileStatus", "type" : "array", "items" : fileStatusProperties //See FileStatus Properties } } } } }
DirectoryListing
JSONオブジェクトは、ディレクトリの反復的なリスト表示中にディレクトリエントリのバッチを表します。FileStatuses
JSONオブジェクトと反復情報が含まれています。
{ "name" : "DirectoryListing", "properties": { "DirectoryListing": { "type" : "object", "properties": { "partialListing": { "description": "A partial directory listing", "type" : "object", // A FileStatuses object "required" : true }, "remainingEntries": { "description": "Number of remaining entries", "type" : "integer", "required" : true } } } } }
{ "name" : "long", "properties": { "long": { "description": "A long integer value", "type" : "integer", "required" : true } } }
参照: RENEWDELEGATIONTOKEN
、
{ "name" : "Path", "properties": { "Path": { "description": "The string representation a Path.", "type" : "string", "required" : true } } }
参照: GETHOMEDIRECTORY
、Path
{ "name" : "RemoteException", "properties": { "RemoteException": { "type" : "object", "properties": { "exception": { "description": "Name of the exception", "type" : "string", "required" : true }, "message": { "description": "Exception message", "type" : "string", "required" : true }, "javaClassName": //an optional property { "description": "Java class name of the exception", "type" : "string" } } } } }
参照: エラーレスポンス
{ "name" : "Token", "properties": { "Token": tokenProperties //See Token Properties } }
参照: Token
プロパティ、GETDELEGATIONTOKEN
、委任の注記。
tokenProperties
を定義するためにJavaScript構文が使用されています。これにより、Token
JSONスキーマで参照できます。
var tokenProperties = { "type" : "object", "properties": { "urlString": { "description": "A delegation token encoded as a URL safe string.", "type" : "string", "required" : true } } }
参照: Token
プロパティ、委任の注記。
{ "name" : "BlockStoragePolicy", "properties": { "BlockStoragePolicy": blockStoragePolicyProperties //See BlockStoragePolicy Properties } }
参照: BlockStoragePolicy
プロパティ、GETSTORAGEPOLICY
blockStoragePolicyProperties
を定義するためにJavaScript構文が使用されています。これにより、BlockStoragePolicy
とBlockStoragePolicies
の両方のJSONスキーマで参照できます。
var blockStoragePolicyProperties = { "type" : "object", "properties": { "id": { "description": "Policy ID.", "type" : "integer", "required" : true }, "name": { "description": "Policy name.", "type" : "string", "required" : true }, "storageTypes": { "description": "An array of storage types for block placement.", "type" : "array", "required" : true "items" : { "type": "string" } }, "replicationFallbacks": { "description": "An array of fallback storage types for replication.", "type" : "array", "required" : true "items" : { "type": "string" } }, "creationFallbacks": { "description": "An array of fallback storage types for file creation.", "type" : "array", "required" : true "items" : { "type": "string" } }, "copyOnCreateFile": { "description": "If set then the policy cannot be changed after file creation.", "type" : "boolean", "required" : true } } };
{ "name": "RS-10-4-1024k", schema { "codecName": "rs", "numDataUnits": 10, "numParityUnits": 4, "extraOptions": {} } "cellSize": 1048576, "id":5, "codecname":"rs", "numDataUnits": 10, "numParityUnits": 4, "replicationpolicy":false, "systemPolicy":true }
BlockStoragePolicies
JSONオブジェクトは、BlockStoragePolicy
JSONオブジェクトの配列を表します。
{ "name" : "BlockStoragePolicies", "properties": { "BlockStoragePolicies": { "type" : "object", "properties": { "BlockStoragePolicy": { "description": "An array of BlockStoragePolicy", "type" : "array", "items" : blockStoragePolicyProperties //See BlockStoragePolicy Properties } } } } }
{ "name": "SnapshotDiffReport", "type": "object", "properties": { "SnapshotDiffReport": { "type" : "object", "properties" : { "diffList": { "description": "An array of DiffReportEntry", "type" : "array", "items" : diffReportEntries, "required" : true }, "fromSnapshot": { "description": "Source snapshot", "type" : "string", "required" : true }, "snapshotRoot": { "description" : "String representation of snapshot root path", "type" : "string", "required" : true }, "toSnapshot": { "description" : "Destination snapshot", "type" : "string", "required" : true } } } } }
diffReportEntries
を定義するためにJavaScript構文が使用されています。これにより、SnapshotDiffReport
JSONスキーマで参照できます。
var diffReportEntries = { "type": "object", "properties": { "sourcePath": { "description" : "Source path name relative to snapshot root", "type" : "string", "required" : true }, "targetPath": { "description" : "Target path relative to snapshot root used for renames", "type" : "string", "required" : true }, "type": { "description" : "Type of diff report entry", "enum" : ["CREATE", "MODIFY", "DELETE", "RENAME"], "required" : true } } }
{ "name": "SnapshottableDirectoryList", "type": "object", "properties": { "SnapshottableDirectoryList": { "description": "An array of SnapshottableDirectoryStatus", "type" : "array", "items" : snapshottableDirectoryStatus, "required" : true } } }
snapshottableDirectoryStatus
を定義するためにJavaScript構文が使用されています。これにより、SnapshottableDirectoryList
JSONスキーマで参照できます。
var snapshottableDirectoryStatus = { "type": "object", "properties": { "dirStatus": fileStatusProperties, "parentFullPath": { "description" : "Full path of the parent of snapshottable directory", "type" : "string", "required" : true }, "snapshotNumber": { "description" : "Number of snapshots created on the snapshottable directory", "type" : "integer", "required" : true }, "snapshotQuota": { "description" : "Total number of snapshots allowed on the snapshottable directory", "type" : "integer", "required" : true } } }
BlockLocations
JSONオブジェクトは、BlockLocation
JSONオブジェクトの配列を表します。
{ "name" : "BlockLocations", "properties": { "BlockLocations": { "type" : "object", "properties": { "BlockLocation": { "description": "An array of BlockLocation", "type" : "array", "items" : blockLocationProperties //See BlockLocation Properties } } } } }
{ "name" : "BlockLocation", "properties": { "BlockLocation": blockLocationProperties //See BlockLocation Properties } }
参照 BlockLocation
プロパティ、GETFILEBLOCKLOCATIONS
、BlockLocation
blockLocationProperties
を定義するためにJavaScript構文が使用されています。これにより、BlockLocation
とBlockLocations
の両方のJSONスキーマで参照できます。
var blockLocationProperties = { "type" : "object", "properties": { "cachedHosts": { "description": "Datanode hostnames with a cached replica", "type" : "array", "required" : "true", "items" : { "description": "A datanode hostname", "type" : "string" } }, "corrupt": { "description": "True if the block is corrupted", "type" : "boolean", "required" : "true" }, "hosts": { "description": "Datanode hostnames store the block", "type" : "array", "required" : "true", "items" : { "description": "A datanode hostname", "type" : "string" } }, "length": { "description": "Length of the block", "type" : "integer", "required" : "true" }, "names": { "description": "Datanode IP:xferPort for accessing the block", "type" : "array", "required" : "true", "items" : { "description": "DatanodeIP:xferPort", "type" : "string" } }, "offset": { "description": "Offset of the block in the file", "type" : "integer", "required" : "true" }, "storageTypes": { "description": "Storage type of each replica", "type" : "array", "required" : "true", "items" : { "description": "Storage type", "enum" : ["RAM_DISK", "SSD", "DISK", "ARCHIVE"] } }, "topologyPaths": { "description": "Datanode addresses in network topology", "type" : "array", "required" : "true", "items" : { "description": "/rack/host:ip", "type" : "string" } } } };
名前 | aclspec |
---|---|
説明 | ACL変更操作に含まれるACL仕様。 |
タイプ | 文字列 |
デフォルト値 | <空> |
有効な値 | 権限とHDFSを参照してください。 |
構文 | 権限とHDFSを参照してください。 |
名前 | xattr.name |
---|---|
説明 | ファイル/ディレクトリのXAttr名。 |
タイプ | 文字列 |
デフォルト値 | <空> |
有効な値 | user./trusted./system./security.で始まる任意の文字列。 |
構文 | user./trusted./system./security.で始まる任意の文字列。 |
名前 | xattr.value |
---|---|
説明 | ファイル/ディレクトリのXAttr値。 |
タイプ | 文字列 |
デフォルト値 | <空> |
有効な値 | エンコードされた値。 |
構文 | 二重引用符で囲むか、0xまたは0sを前に付ける。 |
参照: 拡張属性
名前 | flag |
---|---|
説明 | XAttr設定フラグ。 |
タイプ | 文字列 |
デフォルト値 | <空> |
有効な値 | CREATE、REPLACE。 |
構文 | CREATE、REPLACE。 |
参照: 拡張属性
名前 | encoding | ||
---|---|---|---|
説明 | XAttr値エンコーディング。 | ||
タイプ | 文字列 | ||
デフォルト値 | <空> | ||
有効な値 | text | hex | base64 |
構文 | text | hex | base64 |
参照: 拡張属性
名前 | accesstime |
---|---|
説明 | ファイル/ディレクトリのアクセス時間。 |
タイプ | long |
デフォルト値 | -1(変更しないことを意味する) |
有効な値 | -1またはタイムスタンプ |
構文 | 任意の整数。 |
参照: SETTIMES
名前 | blocksize |
---|---|
説明 | ファイルのブロックサイズ。 |
タイプ | long |
デフォルト値 | 設定で指定。 |
有効な値 | > 0 |
構文 | 任意の整数。 |
参照: CREATE
名前 | buffersize |
---|---|
説明 | データ転送で使用されるバッファのサイズ。 |
タイプ | int |
デフォルト値 | 設定で指定。 |
有効な値 | > 0 |
構文 | 任意の整数。 |
名前 | createflag |
---|---|
説明 | ファイル作成時に処理する可能性のあるフラグの列挙。 |
タイプ | 列挙された文字列 |
デフォルト値 | <空> |
有効な値 | create、overwrite、append、sync_blockの有効な組み合わせ。 |
構文 | 下記の注記を参照。 |
次の組み合わせは無効です:* append、create * create、append、overwrite
参照: CREATE
名前 | createparent |
---|---|
説明 | 親ディレクトリが存在しない場合、作成する必要がありますか? |
タイプ | boolean |
デフォルト値 | true |
有効な値 | true、false |
構文 | true |
参照: CREATESYMLINK
名前 | delegation |
---|---|
説明 | 認証に使用される委任トークン。 |
タイプ | 文字列 |
デフォルト値 | <空> |
有効な値 | エンコードされたトークン。 |
構文 | 下記の注記を参照。 |
注記 委任トークンはURLセーフな文字列としてエンコードされます。エンコーディングの詳細については、org.apache.hadoop.security.token.Token
のencodeToUrlString()
とdecodeFromUrlString(String)
を参照してください。
参照: 認証
名前 | destination |
---|---|
説明 | 宛先パス。 |
タイプ | パス |
デフォルト値 | <空>(無効なパス) |
有効な値 | スキームと権限のない絶対的なFileSystemパス。 |
構文 | 任意のパス。 |
参照: CREATESYMLINK
、RENAME
名前 | doas |
---|---|
説明 | プロキシユーザーが別のユーザーとして実行することを許可する。 |
タイプ | 文字列 |
デフォルト値 | null |
有効な値 | 任意の有効なユーザー名。 |
構文 | 任意の文字列。 |
参照: プロキシユーザー
名前 | fsaction |
---|---|
説明 | ファイルシステム操作の読み取り/書き込み/実行。 |
タイプ | 文字列 |
デフォルト値 | null(無効な値) |
有効な値 | 正規表現パターン「[r-][w-][x-] 」に一致する文字列。 |
構文 | 「[r-][w-][x-] 」 |
参照: CHECKACCESS
、
名前 | group |
---|---|
説明 | グループ名。 |
タイプ | 文字列 |
デフォルト値 | <空>(変更しないことを意味する) |
有効な値 | 任意の有効なグループ名。 |
構文 | 任意の文字列。 |
参照: SETOWNER
名前 | length |
---|---|
説明 | 処理されるバイト数。 |
タイプ | long |
デフォルト値 | null(ファイル全体を意味する) |
有効な値 | >= 0またはnull |
構文 | 任意の整数。 |
参照: OPEN
名前 | modificationtime |
---|---|
説明 | ファイル/ディレクトリの変更時間。 |
タイプ | long |
デフォルト値 | -1(変更しないことを意味する) |
有効な値 | -1またはタイムスタンプ |
構文 | 任意の整数。 |
参照: SETTIMES
名前 | newlength |
---|---|
説明 | ファイルが切り詰められるサイズ。 |
タイプ | long |
有効な値 | >= 0 |
構文 | 任意のlong。 |
名前 | offset |
---|---|
説明 | 開始バイト位置。 |
タイプ | long |
デフォルト値 | 0 |
有効な値 | >= 0 |
構文 | 任意の整数。 |
参照: OPEN
名前 | oldsnapshotname |
---|---|
説明 | 名前を変更する古いスナップショット名。 |
タイプ | 文字列 |
デフォルト値 | null |
有効な値 | 既存のスナップショット名。 |
構文 | 任意の文字列。 |
参照: RENAMESNAPSHOT
名前 | op |
---|---|
説明 | 実行する操作の名前。 |
タイプ | enum |
デフォルト値 | null(無効な値) |
有効な値 | 任意の有効な操作名。 |
構文 | 任意の文字列。 |
参照: 操作
名前 | overwrite |
---|---|
説明 | ファイルが既に存在する場合、上書きしますか? |
タイプ | boolean |
デフォルト値 | false |
有効な値 | true |
構文 | true |
参照: CREATE
名前 | owner |
---|---|
説明 | ファイル/ディレクトリの所有者であるユーザー名。 |
タイプ | 文字列 |
デフォルト値 | <空>(変更しないことを意味する) |
有効な値 | 任意の有効なユーザー名。 |
構文 | 任意の文字列。 |
参照: SETOWNER
名前 | permission |
---|---|
説明 | ファイル/ディレクトリの権限。 |
タイプ | 8進数 |
デフォルト値 | ファイルの場合は644、ディレクトリの場合は755 |
有効な値 | 0 - 1777 |
構文 | 任意の8進数(先頭のゼロは省略可能です)。 |
名前 | recursive |
---|---|
説明 | 操作をサブディレクトリの内容に適用する必要がありますか? |
タイプ | boolean |
デフォルト値 | false |
有効な値 | true |
構文 | true |
参照: RENAME
名前 | renewer |
---|---|
説明 | 委任トークンの更新者のユーザー名。 |
タイプ | 文字列 |
デフォルト値 | <空>(現在のユーザーを意味する) |
有効な値 | 任意の有効なユーザー名。 |
構文 | 任意の文字列。 |
名前 | replication |
---|---|
説明 | ファイルのレプリケーション数。 |
タイプ | short |
デフォルト値 | 設定で指定。 |
有効な値 | > 0 |
構文 | 任意の整数。 |
参照: CREATE
、SETREPLICATION
名前 | snapshotname |
---|---|
説明 | 作成/削除するスナップショットの名前。または、スナップショットの名前変更後の新しい名前。 |
タイプ | 文字列 |
デフォルト値 | null |
有効な値 | 任意の有効なスナップショット名。 |
構文 | 任意の文字列。 |
名前 | sources |
---|---|
説明 | ソースパスのリスト。 |
タイプ | 文字列 |
デフォルト値 | <空> |
有効な値 | スキームと権限のない絶対的なFileSystemパスのコンマ区切りリスト。 |
構文 | 任意の文字列。 |
参照: CONCAT
名前 | token |
---|---|
説明 | 操作に使用される委任トークン。 |
タイプ | 文字列 |
デフォルト値 | <空> |
有効な値 | エンコードされたトークン。 |
構文 | 委任の注記を参照。 |
名前 | kind |
---|---|
説明 | 要求された委任トークンの種別。 |
タイプ | 文字列 |
デフォルト値 | <空>(サーバーはサービスのデフォルトの種別を設定します) |
有効な値 | トークン種別を表す文字列(例:「HDFS_DELEGATION_TOKEN」または「WEBHDFS delegation」) |
構文 | 任意の文字列。 |
名前 | service |
---|---|
説明 | トークンを使用するサービスの名前(例:namenodeのip:port)。 |
タイプ | 文字列 |
デフォルト値 | <空> |
有効な値 | 文字列形式のip:portまたはサービスの論理名。 |
構文 | 任意の文字列。 |
名前 | user.name |
---|---|
説明 | 認証を参照してください。 |
タイプ | 文字列 |
デフォルト値 | null |
有効な値 | 任意の有効なユーザー名。 |
構文 | 任意の文字列。 |
参照: 認証
名前 | noredirect |
---|---|
説明 | レスポンスがHTTP 307リダイレクトまたはHTTP 200 OKを返すかどうか。ファイルの作成と書き込みを参照。 |
タイプ | boolean |
デフォルト値 | false |
有効な値 | true |
構文 | true |
参照: ファイルの作成と書き込み
名前 | namespacequota |
---|---|
説明 | ディレクトリ下の名前空間の使用量(ファイル/ディレクトリの数)の制限。 |
タイプ | 文字列 |
デフォルト値 | Long.MAX_VALUE |
有効な値 | > 0. |
構文 | 任意の整数。 |
参照: SETQUOTA
名前 | storagespacequota |
---|---|
説明 | ディレクトリ下のストレージスペースの使用量(レプリケーションを含むバイト数)の制限。 |
タイプ | 文字列 |
デフォルト値 | Long.MAX_VALUE |
有効な値 | > 0. |
構文 | 任意の整数。 |
名前 | storagetype |
---|---|
説明 | 変更する特定のストレージタイプクォータのストレージタイプ。 |
タイプ | 文字列 |
デフォルト値 | <空> |
有効な値 | 任意の有効なストレージタイプ。 |
構文 | 任意の文字列。 |
名前 | storagepolicy |
---|---|
説明 | ストレージポリシーの名前。 |
タイプ | 文字列 |
デフォルト値 | <空> |
有効な値 | 任意の有効なストレージポリシー名。GETALLSTORAGEPOLICYを参照。 |
構文 | 任意の文字列。 |
参照: SETSTORAGEPOLICY
名前 | ecpolicy |
---|---|
説明 | イレイジャーコーディングポリシーの名前。 |
タイプ | 文字列 |
デフォルト値 | <空> |
有効な値 | 任意の有効なイレイジャーコーディングポリシー名。 |
構文 | 任意の文字列。 |
名前 | startAfter |
---|---|
説明 | liststatusバッチで返された最後の項目。 |
タイプ | 文字列 |
デフォルト値 | <空> |
有効な値 | 任意の有効なファイル/ディレクトリ名。 |
構文 | 任意の文字列。 |
参照: LISTSTATUS_BATCH