このトピックでは、Hadoop シェルコマンドを使用してオブジェクトストレージサービス(OSS)または OSS-HDFS にアクセスする方法について説明します。
環境の準備
- E-MapReduce(EMR)環境では、JindoSDK がデフォルトでインストールされており、直接使用できます。説明 OSS-HDFS にアクセスするには、EMR V3.42.0 以降のマイナーバージョンのクラスター、または EMR V5.8.0 以降のマイナーバージョンのクラスターを作成する必要があります。
- EMR 以外の環境では、最初に JindoSDK をインストールします。詳細については、EMR 以外の環境に JindoSDK をデプロイする をご参照ください。説明 OSS-HDFS にアクセスするには、JindoSDK V4.X 以降をインストールする必要があります。
コマンドと例
Hadoop シェルコマンドを使用して、OSS と OSS-HDFS に同じ方法でアクセスできます。違いは、パス内のエンドポイントにあります。
- ファイルのアップロード次のコマンドを実行して、ローカルルートディレクトリの examplefile.txt という名前のファイルを、OSS-HDFS の examplebucket という名前のバケットにアップロードします。
hadoop fs -put examplefile.txt oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/ - ディレクトリの作成次のコマンドを実行して、OSS-HDFS の examplebucket という名前のバケットに dir/ という名前のディレクトリを作成します。
hadoop fs -mkdir oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/dir/ - ファイルまたはディレクトリのクエリ
次のコマンドを実行して、OSS-HDFS の examplebucket という名前のバケット内のファイルとディレクトリをクエリします。
hadoop fs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/ - ファイルまたはディレクトリのサイズのクエリ次のコマンドを実行して、OSS-HDFS の examplebucket という名前のバケット内のすべてのファイルとディレクトリのサイズをクエリします。
hadoop fs -du oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/ - ファイルの内容のクエリ次のコマンドを実行して、OSS-HDFS の examplebucket という名前のバケット内の localfile.txt という名前のファイルの内容をクエリします。
hadoop fs -cat oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/localfile.txt重要 クエリされたファイルの内容はプレーンテキストで表示されます。コンテンツがエンコードされている場合は、Java 用 HDFS API を使用してコンテンツを読み取り、デコードします。 - ファイルまたはディレクトリのコピー次のコマンドを実行して、OSS-HDFS の examplebucket という名前のバケット内の subdir1 という名前のルートディレクトリを subdir2 という名前のディレクトリにコピーします。 subdir1 ディレクトリの場所、subdir1 ディレクトリ内のファイル、および subdir1 ディレクトリ内のサブディレクトリの構造と内容は変更されません。
hadoop fs -cp oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/subdir1 oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/subdir2/subdir1 - ファイルまたはディレクトリの移動次のコマンドを実行して、examplebucket という名前のバケット内の srcdir という名前のルートディレクトリと、ルートディレクトリ内のファイルとサブディレクトリを、OSS-HDFS の destdir という名前の別のルートディレクトリに移動します。
hadoop fs -mv oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/srcdir oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/destdir - ファイルのダウンロード次のコマンドを実行して、OSS-HDFS の examplebucket という名前のバケットから exampleobject.txt という名前のファイルを、コンピューターのルートディレクトリの /tmp という名前のディレクトリにダウンロードします。
hadoop fs -get oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampleobject.txt /tmp/ - ファイルまたはディレクトリの削除次のコマンドを実行して、OSS-HDFS の examplebucket という名前のバケットから destfolder/ という名前のディレクトリと、ディレクトリ内のすべてのファイルを削除します。
hadoop fs -rm oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/destfolder/