等幅フォント |
コマンド、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)GETSNAPSHOTDIFFGETSNAPSHOTTABLEDIRECTORYLISTGETFILEBLOCKLOCATIONS (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参照)ALLOWSNAPSHOTDISALLOWSNAPSHOTCREATESNAPSHOT (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