ArchiveDirectRead を使用すると、OSS-Hadoop 分散ファイルシステム (HDFS) サービスのアーカイブストレージタイプのファイルに、解凍せずに直接アクセスできます。この機能は、使用頻度の低いデータへのリアルタイムアクセスが必要なシナリオに適しています。
前提条件
Elastic Compute Service (ECS) インスタンスが作成されていること。詳細については、「インスタンスの作成」をご参照ください。
OSS-HDFS サービスが有効化されていること。詳細については、「OSS-HDFS サービスを有効化する」をご参照ください。
デフォルトでは、Alibaba Cloud アカウントには、バケットの ArchiveDirectRead を有効にするために必要な権限があります。この機能を有効にするために Resource Access Management (RAM) ユーザーを使用する場合、RAM ユーザーは必要な権限を持っている必要があります。詳細については、「非 EMR クラスターから OSS-HDFS サービスにアクセスするために RAM ユーザーを承認する」をご参照ください。
制限事項
ArchiveDirectRead は、OSS-HDFS バケット内のアーカイブストレージタイプのファイルにのみ適用されます。他のストレージタイプのファイルには適用されません。
課金
バケットに対して Archive Direct Read を有効にすると、アーカイブストレージタイプ内の未解凍のファイルを直接読み取る際に、Archive Direct Read (RetrievalDataArchiveDirect) を使用して取得されたデータ量に対して課金されます。リクエストで取得されたデータ量は、
archive_direct_read_sizeログフィールドで示されます。アーカイブストレージタイプからすでに解凍されているファイルを読み取る場合、取得料金は発生しません。詳細については、「データ処理料金」をご参照ください。取得されるデータ量は、HTTP 接続が確立されたときにリクエストヘッダーで指定されたデータ読み取り範囲に依存します。接続を早期に中断しても、開始されたリクエストで取得されるデータ量には影響しません。たとえば、1 バイトのデータが読み取られた後に接続が中断されても、リクエストされた範囲が 100 MB から 200 MB の場合、取得されるデータ量は 100 MB から 200 MB の範囲に基づいて計算されます。
手順
ECS インスタンスに接続します。詳細については、「ECS インスタンスへの接続」をご参照ください。
Jindofs SDK をダウンロードします。
AccessKey ペアと環境変数を設定します。
インストールした Jindofs SDK パッケージの bin ディレクトリに移動します。
次の例では
jindofs-sdk-x.x.x-linuxを使用します。異なるバージョンの Jindofs SDK を使用する場合は、パッケージ名を実際のパッケージ名に置き換えてください。cd jindofs-sdk-x.x.x-linux/bin/bin ディレクトリに、jindofs.cfg という名前の構成ファイルを作成します。次に、Alibaba Cloud アカウントまたは必要な権限を持つ RAM ユーザーの AccessKey ペアを設定します。
[client] fs.oss.accessKeyId = <key> fs.oss.accessKeySecret = <secret>環境変数を設定します。
説明<JINDOSDK_CONF_DIR> を
jindofs.cfg構成ファイルの絶対パスに設定します。export JINDOSDK_CONF_DIR=<JINDOSDK_CONF_DIR>
バケットの ArchiveDirectRead を有効にします。
次の例は、中国 (上海) リージョンにある examplebucket という名前のバケットで ArchiveDirectRead を有効にする方法を示しています。必要に応じて、リージョンとバケット名を置き換えてください。
./jindofs admin -putConfig -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/ -conf namespace.archive.directread.enable=trueバケットの ArchiveDirectRead 構成を表示できます。
./jindofs admin -getConfig -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/ -name namespace.archive.directread.enable次の応答は、バケットで ArchiveDirectRead が有効になっていることを示しています。
namespace.archive.directread.enable: true
次のステップ
バケットで ArchiveDirectRead を有効にすると、バケット内のアーカイブ済みオブジェクトを解凍せずに、ファイルのダウンロード、ファイル情報の表示、ファイルのコピーなどの読み取り操作を直接実行できます。
参考資料
ArchiveDirectRead が有効になっていない場合、アーカイブストレージタイプのファイルを読み取る前に解凍する必要があります。アーカイブ済みオブジェクトを解凍する方法の詳細については、「アーカイブ済みオブジェクトを一時的に解凍する」をご参照ください。