Data Lake Storage Gen1 には、次のソースからデータをコピーするためのコマンド ライン ツール AdlCopy が用意されています。
- Azure Storage BLOB から Data Lake Storage Gen1 へ。 AdlCopy を使用して Data Lake Storage Gen1 から Azure Storage BLOB にデータをコピーすることはできません。
- 2 つの Data Lake Storage Gen1 アカウント間。
また、AdlCopy ツールは、次の 2 つの異なるモードで使用できます。
- スタンドアロン。ツールは Data Lake Storage Gen1 リソースを使用してタスクを実行します。
- Data Lake Analytics アカウントを使用して、Data Lake Analytics アカウントに割り当てられたユニットを使用してコピー操作を実行します。 このオプションは、予測可能な方法でコピー タスクを実行する場合に使用できます。
[前提条件]
この記事を読み始める前に、次の項目を用意する必要があります。
- Azure サブスクリプション。 「Azure 無料試用版を入手する」を参照してください。
- Azure Storage BLOB のコンテナーにいくつかのデータがあります。
- Data Lake Storage Gen1 アカウント。 作成方法については、「Azure Data Lake Storage Gen1 の概要」を参照してください。
- Data Lake Analytics アカウント (省略可能) - Data Lake Analytics アカウントを作成する方法については、「 Azure Data Lake Analytics の概要 」を参照してください。
- AdlCopy ツール。 AdlCopy ツールをインストールします。
AdlCopy ツールの構文
AdlCopy ツールを操作するには、次の構文を使用します。
AdlCopy /Source <Blob or Data Lake Storage Gen1 source> /Dest <Data Lake Storage Gen1 destination> /SourceKey <Key for Blob account> /Account <Data Lake Analytics account> /Units <Number of Analytics units> /Pattern
構文のパラメーターを次に示します。
選択肢 | 説明 |
---|---|
情報源 | Azure ストレージ BLOB 内のソース データの場所を指定します。 ソースには、BLOB コンテナー、BLOB、または別の Data Lake Storage Gen1 アカウントを指定できます。 |
デスト | コピー先の Data Lake Storage Gen1 を指定します。 |
ソースキー | Azure ストレージ BLOB ソースのストレージ アクセス キーを指定します。 これは、ソースが BLOB コンテナーまたは BLOB の場合にのみ必要です。 |
アカウント | 省略可能。 Azure Data Lake Analytics アカウントを使用してコピー ジョブを実行する場合は、これを使用します。 構文で /Account オプションを使用するが、Data Lake Analytics アカウントを指定しない場合、AdlCopy は既定のアカウントを使用してジョブを実行します。 また、このオプションを使用する場合は、Data Lake Analytics アカウントのデータ ソースとしてソース (Azure Storage BLOB) と宛先 (Azure Data Lake Storage Gen1) を追加する必要があります。 |
単位 | コピー ジョブに使用される Data Lake Analytics ユニットの数を指定します。 /Account オプションを使用して Data Lake Analytics アカウントを指定する場合、このオプションは必須です。 |
パターン | コピーする BLOB またはファイルを示す正規表現パターンを指定します。 AdlCopy では、大文字と小文字が区別される照合が使用されます。 パターンが指定されていない場合の既定のパターンは、すべての項目をコピーすることです。 複数のファイル パターンを指定することはサポートされていません。 |
AdlCopy (スタンドアロンとして) を使用して Azure Storage BLOB からデータをコピーする
コマンド プロンプトを開き、AdlCopy がインストールされているディレクトリ (通常は
%HOMEPATH%\Documents\adlcopy
) に移動します。次のコマンドを実行して、ソース コンテナーから Data Lake Storage Gen1 フォルダーに特定の BLOB をコピーします。
AdlCopy /source https://<source_account>.blob.core.windows.net/<source_container>/<blob name> /dest swebhdfs://<dest_adlsg1_account>.azuredatalakestore.net/<dest_folder>/ /sourcekey <storage_account_key_for_storage_container>
例えば次が挙げられます。
AdlCopy /source https://mystorage.blob.core.windows.net/mycluster/HdiSamples/HdiSamples/WebsiteLogSampleData/SampleLog/909f2b.log /dest swebhdfs://mydatalakestorage.azuredatalakestore.net/mynewfolder/ /sourcekey uJUfvD6cEvhfLoBae2yyQf8t9/BpbWZ4XoYj4kAS5Jf40pZaMNf0q6a8yqTxktwVgRED4vPHeh/50iS9atS5LQ==
注
上記の構文では、Data Lake Storage Gen1 アカウントのフォルダーにコピーするファイルを指定します。 指定したフォルダー名が存在しない場合、AdlCopy ツールによってフォルダーが作成されます。
Data Lake Storage Gen1 アカウントを持っている Azure サブスクリプションの資格情報を入力するように求められます。 次のような出力が表示されます。
Initializing Copy. Copy Started. 100% data copied. Finishing Copy. Copy Completed. 1 file copied.
次のコマンドを使用して、1 つのコンテナーから Data Lake Storage Gen1 アカウントにすべての BLOB をコピーすることもできます。
AdlCopy /source https://<source_account>.blob.core.windows.net/<source_container>/ /dest swebhdfs://<dest_adlsg1_account>.azuredatalakestore.net/<dest_folder>/ /sourcekey <storage_account_key_for_storage_container>
例えば次が挙げられます。
AdlCopy /Source https://mystorage.blob.core.windows.net/mycluster/example/data/gutenberg/ /dest adl://mydatalakestorage.azuredatalakestore.net/mynewfolder/ /sourcekey uJUfvD6cEvhfLoBae2yyQf8t9/BpbWZ4XoYj4kAS5Jf40pZaMNf0q6a8yqTxktwVgRED4vPHeh/50iS9atS5LQ==
パフォーマンスに関する考慮事項
Azure Blob Storage アカウントからコピーする場合、BLOB ストレージ側でコピー中に制限される可能性があります。 これにより、コピー ジョブのパフォーマンスが低下します。 Azure Blob Storage の制限の詳細については、Azure サブスクリプションでの Azure Storage の制限 とサービスの制限に関するページを参照してください。
AdlCopy (スタンドアロンとして) を使用して別の Data Lake Storage Gen1 アカウントからデータをコピーする
AdlCopy を使用して、2 つの Data Lake Storage Gen1 アカウント間でデータをコピーすることもできます。
コマンド プロンプトを開き、AdlCopy がインストールされているディレクトリ (通常は
%HOMEPATH%\Documents\adlcopy
) に移動します。次のコマンドを実行して、Data Lake Storage Gen1 アカウント間で特定のファイルをコピーします。
AdlCopy /Source adl://<source_adlsg1_account>.azuredatalakestore.net/<path_to_file> /dest adl://<dest_adlsg1_account>.azuredatalakestore.net/<path>/
例えば次が挙げられます。
AdlCopy /Source adl://mydatastorage.azuredatalakestore.net/mynewfolder/909f2b.log /dest adl://mynewdatalakestorage.azuredatalakestore.net/mynewfolder/
注
上記の構文では、コピー先の Data Lake Storage Gen1 アカウント内のフォルダーにコピーするファイルを指定します。 指定したフォルダー名が存在しない場合、AdlCopy ツールによってフォルダーが作成されます。
Data Lake Storage Gen1 アカウントを持っている Azure サブスクリプションの資格情報を入力するように求められます。 次のような出力が表示されます。
Initializing Copy. Copy Started.| 100% data copied. Finishing Copy. Copy Completed. 1 file copied.
次のコマンドは、ソース Data Lake Storage Gen1 アカウントの特定のフォルダーから、コピー先の Data Lake Storage Gen1 アカウント内のフォルダーにすべてのファイルをコピーします。
AdlCopy /Source adl://mydatastorage.azuredatalakestore.net/mynewfolder/ /dest adl://mynewdatalakestorage.azuredatalakestore.net/mynewfolder/
パフォーマンスに関する考慮事項
AdlCopy をスタンドアロン ツールとして使用する場合、コピーは Azure で管理される共有リソースで実行されます。 この環境で得られるパフォーマンスは、システムの負荷と使用可能なリソースによって異なります。 このモードは、アドホックベースの小さな転送に最適です。 AdlCopy をスタンドアロン ツールとして使用する場合は、パラメーターを調整する必要はありません。
AdlCopy (Data Lake Analytics アカウントを使用) を使用してデータをコピーする
Data Lake Analytics アカウントを使用して AdlCopy ジョブを実行し、Azure ストレージ BLOB から Data Lake Storage Gen1 にデータをコピーすることもできます。 通常、このオプションは、移動するデータがギガバイトとテラバイトの範囲にあり、パフォーマンスの向上と予測可能なスループットが必要な場合に使用します。
AdlCopy で Data Lake Analytics アカウントを使用して Azure Storage BLOB からコピーするには、Data Lake Analytics アカウントのデータ ソースとしてソース (Azure Storage BLOB) を追加する必要があります。 Data Lake Analytics アカウントにデータ ソースを追加する手順については、「 Data Lake Analytics アカウントのデータ ソースの管理」を参照してください。
注
Data Lake Analytics アカウントを使用して Azure Data Lake Storage Gen1 アカウントからソースとしてコピーする場合は、Data Lake Storage Gen1 アカウントを Data Lake Analytics アカウントに関連付ける必要はありません。 ソース ストアを Data Lake Analytics アカウントに関連付ける必要があるのは、ソースが Azure Storage アカウントの場合のみです。
次のコマンドを実行して、Data Lake Analytics アカウントを使用して Azure Storage BLOB から Data Lake Storage Gen1 アカウントにコピーします。
AdlCopy /source https://<source_account>.blob.core.windows.net/<source_container>/<blob name> /dest swebhdfs://<dest_adlsg1_account>.azuredatalakestore.net/<dest_folder>/ /sourcekey <storage_account_key_for_storage_container> /Account <data_lake_analytics_account> /Units <number_of_data_lake_analytics_units_to_be_used>
例えば次が挙げられます。
AdlCopy /Source https://mystorage.blob.core.windows.net/mycluster/example/data/gutenberg/ /dest swebhdfs://mydatalakestorage.azuredatalakestore.net/mynewfolder/ /sourcekey uJUfvD6cEvhfLoBae2yyQf8t9/BpbWZ4XoYj4kAS5Jf40pZaMNf0q6a8yqTxktwVgRED4vPHeh/50iS9atS5LQ== /Account mydatalakeanalyticaccount /Units 2
同様に、次のコマンドを実行して、Data Lake Analytics アカウントを使用して、ソース Data Lake Storage Gen1 アカウント内の特定のフォルダーからコピー先の Data Lake Storage Gen1 アカウント内のフォルダーにすべてのファイルをコピーします。
AdlCopy /Source adl://mysourcedatalakestorage.azuredatalakestore.net/mynewfolder/ /dest adl://mydestdatastorage.azuredatalakestore.net/mynewfolder/ /Account mydatalakeanalyticaccount /Units 2
パフォーマンスに関する考慮事項
テラバイト単位の範囲でデータをコピーする場合、独自の Azure Data Lake Analytics アカウントで AdlCopy を使用すると、より優れた予測可能なパフォーマンスが得られます。 チューニングする必要があるパラメーターは、コピー ジョブに使用する Azure Data Lake Analytics ユニットの数です。 ユニット数を増やすと、コピー ジョブのパフォーマンスが向上します。 コピーする各ファイルは、最大 1 単位を使用できます。 コピーするファイルの数よりも多くの単位を指定すると、パフォーマンスは向上しません。
AdlCopy を使用してパターン マッチングを使用してデータをコピーする
このセクションでは、パターン マッチングを使用して、AdlCopy を使用してソース (以下の例では Azure Storage Blob を使用) からコピー先の Data Lake Storage Gen1 アカウントにデータをコピーする方法について説明します。 たとえば、次の手順を使用して、.csv 拡張子を持つすべてのファイルをソース BLOB からコピー先にコピーできます。
コマンド プロンプトを開き、AdlCopy がインストールされているディレクトリ (通常は
%HOMEPATH%\Documents\adlcopy
) に移動します。次のコマンドを実行して、*.csv 拡張子を持つすべてのファイルをソース コンテナーの特定の BLOB から Data Lake Storage Gen1 フォルダーにコピーします。
AdlCopy /source https://<source_account>.blob.core.windows.net/<source_container>/<blob name> /dest swebhdfs://<dest_adlsg1_account>.azuredatalakestore.net/<dest_folder>/ /sourcekey <storage_account_key_for_storage_container> /Pattern *.csv
例えば次が挙げられます。
AdlCopy /source https://mystorage.blob.core.windows.net/mycluster/HdiSamples/HdiSamples/FoodInspectionData/ /dest adl://mydatalakestorage.azuredatalakestore.net/mynewfolder/ /sourcekey uJUfvD6cEvhfLoBae2yyQf8t9/BpbWZ4XoYj4kAS5Jf40pZaMNf0q6a8yqTxktwVgRED4vPHeh/50iS9atS5LQ== /Pattern *.csv
請求書
- AdlCopy ツールをスタンドアロンとして使用する場合、ソース Azure Storage アカウントが Data Lake Storage Gen1 アカウントと同じリージョンにない場合、データの移動に対するエグレス コストが課金されます。
- Data Lake Analytics アカウントで AdlCopy ツールを使用する場合は、標準 の Data Lake Analytics 課金料金 が適用されます。
AdlCopy の使用に関する考慮事項
- AdlCopy (バージョン 1.0.5 の場合) では、何千ものファイルとフォルダーがまとめて含まれるソースからのデータのコピーがサポートされています。 ただし、大規模なデータセットのコピーで問題が発生した場合は、ファイル/フォルダーを別のサブフォルダーに配布し、代わりにそれらのサブフォルダーへのパスをソースとして使用できます。
AdlCopy の使用に関するパフォーマンスに関する考慮事項
AdlCopy では、何千ものファイルとフォルダーを含むデータのコピーがサポートされています。 ただし、大きなデータセットのコピーで問題が発生した場合は、ファイル/フォルダーをより小さなサブフォルダーに配布できます。 AdlCopy はアドホック コピー用に構築されました。 定期的にデータをコピーする場合は、コピー操作に関する完全な管理を提供する Azure Data Factory の使用を検討する必要があります。
リリース ノート
- 1.0.13 - 複数の adlcopy コマンドで同じ Azure Data Lake Storage Gen1 アカウントにデータをコピーする場合は、実行ごとに資格情報を再入力する必要がなくなります。 Adlcopy は、複数の実行にわたってその情報をキャッシュするようになりました。