Azure Data Factory を使用して HDFS からデータをコピーするCopy data from HDFS using Azure Data Factory

この記事では、HDFS サーバーからデータをコピーする方法について説明します。This article outlines how to copy data from HDFS server. Azure Data Factory については、入門記事でをご覧ください。To learn about Azure Data Factory, read the introductory article.

サポートされる機能Supported capabilities

この HDFS コネクタは、次のアクティビティでサポートされます。This HDFS connector is supported for the following activities:

具体的には、この HDFS コネクタは以下をサポートします。Specifically, this HDFS connector supports:

  • Windows (Kerberos) 認証または 匿名認証を使用するファイルのコピー。Copying files using Windows (Kerberos) or Anonymous authentication.
  • webhdfs プロトコルまたは 組み込みの DistCp のサポートを使用するファイルのコピー。Copying files using webhdfs protocol or built-in DistCp support.
  • ファイルをそのままコピーするか、サポートされているファイル形式と圧縮コーデックを使用したファイルの解析/生成。Copying files as-is or parsing/generating files with the supported file formats and compression codecs.

前提条件Prerequisites

データ ストアが次のいずれかの方法で構成されている場合、このデータ ストアに接続するには、セルフホステッド統合ランタイムを設定する必要があります。If your data store is configured in one of the following ways, you need to set up a Self-hosted Integration Runtime in order to connect to this data store:

  • データ ストアは、オンプレミスのネットワーク内、Azure Virtual Network 内、または Amazon Virtual Private Cloud 内に配置されています。The data store is located inside an on-premises network, inside Azure Virtual Network, or inside Amazon Virtual Private Cloud.
  • データ ストアは、ファイアウォール規則でホワイトリストに登録されている IP にアクセスが制限されるマネージド クラウド データ サービスです。The data store is a managed cloud data service where the access is restricted to IPs whitelisted in the firewall rules.

注意

Integration Runtime が、Hadoop クラスターのすべての [name node server]:[name node port] および [data node servers]:[data node port] にアクセスできることを確認します。Make sure the Integration Runtime can access to ALL the [name node server]:[name node port] and [data node servers]:[data node port] of the Hadoop cluster. 既定の [name node port] は 50070、既定の [data node port] は 50075 です。Default [name node port] is 50070, and default [data node port] is 50075.

使用の開始Getting started

次のいずれかのツールまたは SDK を使用して、パイプラインでコピー アクティビティを使用できます。You can use one of the following tools or SDKs to use the copy activity with a pipeline. 詳細な手順については、以下のリンクを選択してください。Select a link for step-by-step instructions:

次のセクションでは、HDFS に固有の Data Factory エンティティの定義に使用されるプロパティについて詳しく説明します。The following sections provide details about properties that are used to define Data Factory entities specific to HDFS.

リンクされたサービスのプロパティLinked service properties

HDFS のリンクされたサービスでは、次のプロパティがサポートされます。The following properties are supported for HDFS linked service:

プロパティProperty 説明Description 必須Required
typetype type プロパティは、次のように設定する必要があります:HdfsThe type property must be set to: Hdfs. はいYes
urlurl HDFS への URLURL to the HDFS はいYes
authenticationTypeauthenticationType 使用できる値は、以下のとおりです。Anonymous または WindowsAllowed values are: Anonymous, or Windows.

HDFS コネクタに Kerberos 認証を使用するには、こちらのセクションを参照して、オンプレミス環境を設定します。To use Kerberos authentication for HDFS connector, refer to this section to set up your on-premises environment accordingly.
はいYes
userNameuserName Windows 認証のユーザー名。Username for Windows authentication. Kerberos 認証の場合は <username>@<domain>.com を指定します。For Kerberos authentication, specify <username>@<domain>.com. あり (Windows 認証用)Yes (for Windows Authentication)
passwordpassword Windows 認証のパスワード。Password for Windows authentication. このフィールドを SecureString としてマークして Data Factory に安全に保管するか、Azure Key Vault に格納されているシークレットを参照します。Mark this field as a SecureString to store it securely in Data Factory, or reference a secret stored in Azure Key Vault. あり (Windows 認証用)Yes (for Windows Authentication)
connectViaconnectVia データ ストアに接続するために使用される統合ランタイムThe Integration Runtime to be used to connect to the data store. 詳細については、「前提条件」セクションを参照してください。Learn more from Prerequisites section. 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。If not specified, it uses the default Azure Integration Runtime. いいえNo

例: 匿名認証の使用Example: using Anonymous authentication

{
    "name": "HDFSLinkedService",
    "properties": {
        "type": "Hdfs",
        "typeProperties": {
            "url" : "http://<machine>:50070/webhdfs/v1/",
            "authenticationType": "Anonymous",
            "userName": "hadoop"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

例: Windows 認証の使用Example: using Windows authentication

{
    "name": "HDFSLinkedService",
    "properties": {
        "type": "Hdfs",
        "typeProperties": {
            "url" : "http://<machine>:50070/webhdfs/v1/",
            "authenticationType": "Windows",
            "userName": "<username>@<domain>.com (for Kerberos auth)",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

データセットのプロパティDataset properties

データセットを定義するために使用できるセクションとプロパティの完全な一覧については、データセットに関する記事をご覧ください。For a full list of sections and properties available for defining datasets, see the Datasets article.

Parquet 形式、区切りテキスト形式、Avro 形式、およびバイナリ形式のデータセットParquet, delimited text, Avro and binary format dataset

Parquet 形式、区切りテキスト形式、またはバイナリ形式のデータをコピーするには、Parquet 形式区切りテキスト形式Avro 形式、およびバイナリ形式に関する記事で、形式ベースのデータセットおよびサポートされる設定について参照してください。To copy data from Parquet, delimited text or binary format, refer to Parquet format, Delimited text format, Avro format and Binary format article on format-based dataset and supported settings. HDFS では、形式ベースのデータセットの location 設定において、次のプロパティがサポートされています。The following properties are supported for HDFS under location settings in format-based dataset:

プロパティProperty 説明Description 必須Required
typetype データセットの location の type プロパティは、HdfsLocation に設定する必要があります。The type property under location in dataset must be set to HdfsLocation. はいYes
folderPathfolderPath フォルダーのパス。The path to folder. フォルダーをフィルター処理するためにワイルドカードを使用する場合は、この設定をスキップし、アクティビティのソースの設定で指定します。If you want to use wildcard to filter folder, skip this setting and specify in activity source settings. いいえNo
fileNamefileName 特定の folderPath の下のファイル名。The file name under the given folderPath. ファイルをフィルター処理するためにワイルドカードを使用する場合は、この設定をスキップし、アクティビティのソースの設定で指定します。If you want to use wildcard to filter files, skip this setting and specify in activity source settings. いいえNo

注意

次のセクションで説明する Parquet/テキスト形式の FileShare 型のデータセットは、下位互換性のために引き続きコピー/Lookup アクティビティでそのままサポートされます。FileShare type dataset with Parquet/Text format mentioned in next section is still supported as-is for Copy/Lookup activity for backward compatibility. 今後は、この新しいモデルを使用することをお勧めします。ADF オーサリング UI はこれらの新しい型を生成するように切り替えられています。You are suggested to use this new model going forward, and the ADF authoring UI has switched to generating these new types.

例:Example:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<HDFS linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "HdfsLocation",
                "folderPath": "root/folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

他の形式のデータセットOther format dataset

ORC/JSON 形式のデータを HDFS からコピーする場合、次のプロパティがサポートされます。To copy data from HDFS in ORC/JSON format, the following properties are supported:

プロパティProperty 説明Description 必須Required
typetype データセットの type プロパティは、次のように設定する必要があります: FileShareThe type property of the dataset must be set to: FileShare はいYes
folderPathfolderPath フォルダーへのパス。Path to the folder. ワイルドカード フィルターがサポートされいます。使用できるワイルドカーは、* (ゼロ文字以上の文字に一致) と ? (ゼロ文字または 1 文字に一致) です。実際のファイル名にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。Wildcard filter is supported, allowed wildcards are: * (matches zero or more characters) and ? (matches zero or single character); use ^ to escape if your actual file name has wildcard or this escape char inside.

例: ルートフォルダー/サブフォルダー。「フォルダーとファイル フィルターの例」の例を参照してください。Examples: rootfolder/subfolder/, see more examples in Folder and file filter examples.
はいYes
fileNamefileName 指定された "folderPath" の下にあるファイルの名前またはワイルドカード フィルターName or wildcard filter for the file(s) under the specified "folderPath". このプロパティの値を指定しない場合、データセットはフォルダー内のすべてのファイルをポイントします。If you don't specify a value for this property, the dataset points to all files in the folder.

フィルターに使用できるワイルドカードは、* (ゼロ文字以上の文字に一致) と ? (ゼロ文字または 1 文字に一致) です。For filter, allowed wildcards are: * (matches zero or more characters) and ? (matches zero or single character).
- 例 1: "fileName": "*.csv"- Example 1: "fileName": "*.csv"
- 例 2: "fileName": "???20180427.txt"- Example 2: "fileName": "???20180427.txt"
実際のフォルダー名にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。Use ^ to escape if your actual folder name has wildcard or this escape char inside.
いいえNo
modifiedDatetimeStartmodifiedDatetimeStart ファイルはフィルター処理され、元になる属性は最終更新時刻です。Files filter based on the attribute: Last Modified. 最終変更時刻が modifiedDatetimeStart から modifiedDatetimeEnd の間に含まれる場合は、ファイルが選択されます。The files will be selected if their last modified time are within the time range between modifiedDatetimeStart and modifiedDatetimeEnd. 時刻は "2018-12-01T05:00:00Z" の形式で UTC タイム ゾーンに適用されます。The time is applied to UTC time zone in the format of "2018-12-01T05:00:00Z".

多数のファイルにファイル フィルターを実行する場合は、この設定を有効にすることで、データ移動の全体的なパフォーマンスが影響を受けることに注意してください。Be aware the overall performance of data movement will be impacted by enabling this setting when you want to do file filter from huge amounts of files.

プロパティは、ファイル属性フィルターをデータセットに適用しないことを意味する NULL にすることができます。The properties can be NULL that mean no file attribute filter will be applied to the dataset. modifiedDatetimeStart に datetime 値を設定し、modifiedDatetimeEnd を NULL にした場合は、最終更新時刻属性が datetime 値以上であるファイルが選択されることを意味します。When modifiedDatetimeStart has datetime value but modifiedDatetimeEnd is NULL, it means the files whose last modified attribute is greater than or equal with the datetime value will be selected. modifiedDatetimeEnd に datetime 値を設定し、modifiedDatetimeStart を NULL にした場合は、最終更新時刻属性が datetime 値以下であるファイルが選択されることを意味します。When modifiedDatetimeEnd has datetime value but modifiedDatetimeStart is NULL, it means the files whose last modified attribute is less than the datetime value will be selected.
いいえNo
modifiedDatetimeEndmodifiedDatetimeEnd ファイルはフィルター処理され、元になる属性は最終更新時刻です。Files filter based on the attribute: Last Modified. 最終変更時刻が modifiedDatetimeStart から modifiedDatetimeEnd の間に含まれる場合は、ファイルが選択されます。The files will be selected if their last modified time are within the time range between modifiedDatetimeStart and modifiedDatetimeEnd. 時刻は "2018-12-01T05:00:00Z" の形式で UTC タイム ゾーンに適用されます。The time is applied to UTC time zone in the format of "2018-12-01T05:00:00Z".

多数のファイルにファイル フィルターを実行する場合は、この設定を有効にすることで、データ移動の全体的なパフォーマンスが影響を受けることに注意してください。Be aware the overall performance of data movement will be impacted by enabling this setting when you want to do file filter from huge amounts of files.

プロパティは、ファイル属性フィルターをデータセットに適用しないことを意味する NULL にすることができます。The properties can be NULL that mean no file attribute filter will be applied to the dataset. modifiedDatetimeStart に datetime 値を設定し、modifiedDatetimeEnd を NULL にした場合は、最終更新時刻属性が datetime 値以上であるファイルが選択されることを意味します。When modifiedDatetimeStart has datetime value but modifiedDatetimeEnd is NULL, it means the files whose last modified attribute is greater than or equal with the datetime value will be selected. modifiedDatetimeEnd に datetime 値を設定し、modifiedDatetimeStart を NULL にした場合は、最終更新時刻属性が datetime 値以下であるファイルが選択されることを意味します。When modifiedDatetimeEnd has datetime value but modifiedDatetimeStart is NULL, it means the files whose last modified attribute is less than the datetime value will be selected.
いいえNo
formatformat ファイルベースのストア間でファイルをそのままコピー (バイナリ コピー) する場合は、入力と出力の両方のデータセット定義で format セクションをスキップします。If you want to copy files as-is between file-based stores (binary copy), skip the format section in both input and output dataset definitions.

特定の形式のファイルを解析する場合にサポートされるファイル形式の種類は、TextFormatJsonFormatAvroFormatOrcFormatParquetFormat です。If you want to parse files with a specific format, the following file format types are supported: TextFormat, JsonFormat, AvroFormat, OrcFormat, ParquetFormat. 形式の type プロパティをいずれかの値に設定します。Set the type property under format to one of these values. 詳細については、Text FormatJson FormatAvro FormatOrc FormatParquet Format の各セクションを参照してください。For more information, see Text Format, Json Format, Avro Format, Orc Format, and Parquet Format sections.
いいえ (バイナリ コピー シナリオのみ)No (only for binary copy scenario)
compressioncompression データの圧縮の種類とレベルを指定します。Specify the type and level of compression for the data. 詳細については、サポートされるファイル形式と圧縮コーデックに関する記事を参照してください。For more information, see Supported file formats and compression codecs.
サポートされる種類は、GZipDeflateBZip2ZipDeflate です。Supported types are: GZip, Deflate, BZip2, and ZipDeflate.
サポートされるレベルは、OptimalFastest です。Supported levels are: Optimal and Fastest.
いいえNo

ヒント

フォルダーの下のすべてのファイルをコピーするには、folderPath のみを指定します。To copy all files under a folder, specify folderPath only.
特定の名前の単一のファイルをコピーするには、フォルダー部分で folderPath、ファイル名で fileName を指定します。To copy a single file with a given name, specify folderPath with folder part and fileName with file name.
フォルダーの下のファイルのサブセットをコピーするには、フォルダー部分で folderPath、ワイルドカード フィルターで fileName を指定します。To copy a subset of files under a folder, specify folderPath with folder part and fileName with wildcard filter.

例:Example:

{
    "name": "HDFSDataset",
    "properties": {
        "type": "FileShare",
        "linkedServiceName":{
            "referenceName": "<HDFS linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "folderPath": "folder/subfolder/",
            "fileName": "*",
            "modifiedDatetimeStart": "2018-12-01T05:00:00Z",
            "modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "\n"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

コピー アクティビティのプロパティCopy activity properties

アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。For a full list of sections and properties available for defining activities, see the Pipelines article. このセクションでは、HDFS ソースでサポートされるプロパティの一覧を示します。This section provides a list of properties supported by HDFS source.

ソースとしての HDFSHDFS as source

Parquet 形式、区切りテキスト形式、Avro 形式、およびバイナリ形式のソースParquet, delimited text, Avro and binary format source

Parquet 形式、区切りテキスト形式、またはバイナリ形式のデータをコピーするには、Parquet 形式区切りテキスト形式Avro 形式、およびバイナリ形式に関する記事で、形式ベースのコピー アクティビティのソースと、サポートされる設定について参照してください。To copy data from Parquet, delimited text or binary format, refer to Parquet format, Delimited text format, Avro format and Binary format article on format-based copy activity source and supported settings. HDFS では、形式ベースのコピー ソースの storeSettings 設定において、次のプロパティがサポートされています。The following properties are supported for HDFS under storeSettings settings in format-based copy source:

プロパティProperty 説明Description 必須Required
typetype storeSettings の type プロパティは HdfsReadSettingに設定する必要があります。The type property under storeSettings must be set to HdfsReadSetting. はいYes
recursiverecursive データをサブフォルダーから再帰的に読み取るか、指定したフォルダーからのみ読み取るかを指定します。Indicates whether the data is read recursively from the subfolders or only from the specified folder. recursive が true に設定され、シンクがファイル ベースのストアである場合、空のフォルダーおよびサブフォルダーはシンクでコピーも作成もされないことに注意してください。Note that when recursive is set to true and the sink is a file-based store, an empty folder or subfolder isn't copied or created at the sink. 使用可能な値: true (既定値) および falseAllowed values are true (default) and false. いいえNo
wildcardFolderPathwildcardFolderPath ソース フォルダーをフィルター処理するための、ワイルドカード文字を含むフォルダー パス。The folder path with wildcard characters to filter source folders.
使用できるワイルドカーは、* (ゼロ文字以上の文字に一致) と ? (ゼロ文字または 1 文字に一致) です。実際のフォルダー名にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。Allowed wildcards are: * (matches zero or more characters) and ? (matches zero or single character); use ^ to escape if your actual folder name has wildcard or this escape char inside.
フォルダーとファイル フィルターの例」の他の例をご覧ください。See more examples in Folder and file filter examples.
いいえNo
wildcardFileNamewildcardFileName ソース ファイルをフィルター処理するための、特定の folderPath/wildcardFolderPath の下のワイルドカード文字を含むファイル名。The file name with wildcard characters under the given folderPath/wildcardFolderPath to filter source files.
使用できるワイルドカーは、* (ゼロ文字以上の文字に一致) と ? (ゼロ文字または 1 文字に一致) です。実際のフォルダー名にワイルドカードまたはこのエスケープ文字が含まれている場合は、^ を使用してエスケープします。Allowed wildcards are: * (matches zero or more characters) and ? (matches zero or single character); use ^ to escape if your actual folder name has wildcard or this escape char inside. フォルダーとファイル フィルターの例」の他の例をご覧ください。See more examples in Folder and file filter examples.
はい (データセットで fileName が指定されていない場合)Yes if fileName is not specified in dataset
modifiedDatetimeStartmodifiedDatetimeStart ファイルはフィルター処理され、元になる属性は最終更新時刻です。Files filter based on the attribute: Last Modified. 最終変更時刻が modifiedDatetimeStart から modifiedDatetimeEnd の間に含まれる場合は、ファイルが選択されます。The files will be selected if their last modified time are within the time range between modifiedDatetimeStart and modifiedDatetimeEnd. 時刻は "2018-12-01T05:00:00Z" の形式で UTC タイム ゾーンに適用されます。The time is applied to UTC time zone in the format of "2018-12-01T05:00:00Z".
プロパティは、ファイル属性フィルターをデータセットに適用しないことを意味する NULL にすることができます。The properties can be NULL which mean no file attribute filter will be applied to the dataset. modifiedDatetimeStart に datetime 値を設定し、modifiedDatetimeEnd を NULL にした場合は、最終更新時刻属性が datetime 値以上であるファイルが選択されることを意味します。When modifiedDatetimeStart has datetime value but modifiedDatetimeEnd is NULL, it means the files whose last modified attribute is greater than or equal with the datetime value will be selected. modifiedDatetimeEnd に datetime 値を設定し、modifiedDatetimeStart を NULL にした場合は、最終更新時刻属性が datetime 値以下であるファイルが選択されることを意味します。When modifiedDatetimeEnd has datetime value but modifiedDatetimeStart is NULL, it means the files whose last modified attribute is less than the datetime value will be selected.
いいえNo
modifiedDatetimeEndmodifiedDatetimeEnd 上記と同じです。Same as above. いいえNo
distcpSettingsdistcpSettings HDFS DistCp を使用する場合の プロパティ グループ。Property group when using HDFS DistCp. いいえNo
resourceManagerEndpointresourceManagerEndpoint YARN リソース マネージャー エンドポイントThe Yarn Resource Manager endpoint はい (DistCp を使用する場合)Yes if using DistCp
tempScriptPathtempScriptPath 一時 DistCp コマンド スクリプトを格納するために使用するフォルダー パス。A folder path used to store temp DistCp command script. このスクリプト ファイルは Data Factory によって生成され、コピー ジョブ完了後に削除されます。The script file is generated by Data Factory and will be removed after Copy job finished. はい (DistCp を使用する場合)Yes if using DistCp
distcpOptionsdistcpOptions DistCp コマンドに指定する追加オプション。Additional options provided to DistCp command. いいえNo
maxConcurrentConnectionsmaxConcurrentConnections 同時にストレージ ストアに接続する接続の数。The number of the connections to connect to storage store concurrently. データ ストアへのコンカレント接続を制限する場合にのみ指定します。Specify only when you want to limit the concurrent connection to the data store. いいえNo

注意

Parquet/区切りテキスト形式の場合、次のセクションで説明する FileSystemSource 型のコピー アクティビティ ソースは、下位互換性のために引き続きそのままサポートされます。For Parquet/delimited text format, FileSystemSource type copy activity source mentioned in next section is still supported as-is for backward compatibility. 今後は、この新しいモデルを使用することをお勧めします。ADF オーサリング UI はこれらの新しい型を生成するように切り替えられています。You are suggested to use this new model going forward, and the ADF authoring UI has switched to generating these new types.

例:Example:

"activities":[
    {
        "name": "CopyFromHDFS",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSetting",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "HdfsReadSetting",
                    "recursive": true,
                    "distcpSettings": {
                        "resourceManagerEndpoint": "resourcemanagerendpoint:8088",
                        "tempScriptPath": "/usr/hadoop/tempscript",
                        "distcpOptions": "-m 100"
                    }
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

他の形式のソースOther format source

ORC/JSON 形式のデータを HDFS からコピーする場合、コピー アクティビティの source セクションで次のプロパティがサポートされます。To copy data from HDFS in ORC/JSON format, the following properties are supported in the copy activity source section:

プロパティProperty 説明Description 必須Required
typetype コピー アクティビティのソースの type プロパティは、次のように設定する必要があります:HdfsSourceThe type property of the copy activity source must be set to: HdfsSource はいYes
recursiverecursive データをサブ フォルダーから再帰的に読み取るか、指定したフォルダーからのみ読み取るかを指定します。Indicates whether the data is read recursively from the sub folders or only from the specified folder. recursive が true に設定され、シンクがファイル ベースのストアである場合、空のフォルダー/サブフォルダーはシンクでコピー/作成されないことに注意してください。Note when recursive is set to true and sink is file-based store, empty folder/sub-folder will not be copied/created at sink.
使用可能な値: true (既定値)、falseAllowed values are: true (default), false
いいえNo
distcpSettingsdistcpSettings HDFS DistCp を使用する場合の プロパティ グループ。Property group when using HDFS DistCp. いいえNo
resourceManagerEndpointresourceManagerEndpoint YARN リソース マネージャー エンドポイントThe Yarn Resource Manager endpoint はい (DistCp を使用する場合)Yes if using DistCp
tempScriptPathtempScriptPath 一時 DistCp コマンド スクリプトを格納するために使用するフォルダー パス。A folder path used to store temp DistCp command script. このスクリプト ファイルは Data Factory によって生成され、コピー ジョブ完了後に削除されます。The script file is generated by Data Factory and will be removed after Copy job finished. はい (DistCp を使用する場合)Yes if using DistCp
distcpOptionsdistcpOptions DistCp コマンドに指定する追加オプション。Additional options provided to DistCp command. いいえNo
maxConcurrentConnectionsmaxConcurrentConnections 同時にストレージ ストアに接続する接続の数。The number of the connections to connect to storage store concurrently. データ ストアへのコンカレント接続を制限する場合にのみ指定します。Specify only when you want to limit the concurrent connection to the data store. いいえNo

例:DistCp を使用したコピー アクティビティでの HDFS ソースExample: HDFS source in copy activity using DistCp

"source": {
    "type": "HdfsSource",
    "distcpSettings": {
        "resourceManagerEndpoint": "resourcemanagerendpoint:8088",
        "tempScriptPath": "/usr/hadoop/tempscript",
        "distcpOptions": "-m 100"
    }
}

次のセクションから、DistCp を使用して、HDFS から効率的にデータをコピーする方法の詳細について説明します。Learn more on how to use DistCp to copy data from HDFS efficiently from the next section.

フォルダーとファイル フィルターの例Folder and file filter examples

このセクションでは、ワイルドカード フィルターを使用した結果のフォルダーのパスとファイル名の動作について説明します。This section describes the resulting behavior of the folder path and file name with wildcard filters.

folderPathfolderPath fileNamefileName recursiverecursive ソースのフォルダー構造とフィルターの結果 (太字のファイルが取得されます)Source folder structure and filter result (files in bold are retrieved)
Folder* (空、既定値を使用)(empty, use default) falsefalse FolderAFolderA
    File1.csv    File1.csv
    File2.json    File2.json
    Subfolder1    Subfolder1
        File3.csv        File3.csv
        File4.json        File4.json
        File5.csv        File5.csv
AnotherFolderBAnotherFolderB
    File6.csv    File6.csv
Folder* (空、既定値を使用)(empty, use default) truetrue FolderAFolderA
    File1.csv    File1.csv
    File2.json    File2.json
    Subfolder1    Subfolder1
        File3.csv        File3.csv
        File4.json        File4.json
        File5.csv        File5.csv
AnotherFolderBAnotherFolderB
    File6.csv    File6.csv
Folder* *.csv falsefalse FolderAFolderA
    File1.csv    File1.csv
    File2.json    File2.json
    Subfolder1    Subfolder1
        File3.csv        File3.csv
        File4.json        File4.json
        File5.csv        File5.csv
AnotherFolderBAnotherFolderB
    File6.csv    File6.csv
Folder* *.csv truetrue FolderAFolderA
    File1.csv    File1.csv
    File2.json    File2.json
    Subfolder1    Subfolder1
        File3.csv        File3.csv
        File4.json        File4.json
        File5.csv        File5.csv
AnotherFolderBAnotherFolderB
    File6.csv    File6.csv

DistCp を使用して HDFS からデータをコピーするUse DistCp to copy data from HDFS

DistCp は、Hadoop クラスターにコピーを配布するための Hadoop のネイティブ コマンドライン ツールです。DistCp is a Hadoop native command-line tool to do distributed copy in a Hadoop cluster. Distcp コマンドを実行すると、コマンドは、コピーするすべてのファイルをリストアップした後、複数の Map ジョブを Hadoop クラスターに作成します。各 Map ジョブがソースからシンクへのバイナリ コピーを実行します。When run a Distcp command, it will first list all the files to be copied, create several Map jobs into the Hadoop cluster, and each Map job will do binary copy from source to sink.

コピー アクティビティでは、DistCp を使用して Azure BLOB (ステージング コピーを含む) または Azure Data Lake Store にファイルをそのままコピーできます。この場合、セルフホステッド統合ランタイムで実行する代わりに、クラスターのパワーを十分に活用できます。Copy Activity support using DistCp to copy files as-is into Azure Blob (including staged copy) or Azure Data Lake Store, in which case it can fully leverage your cluster's power instead of running on the Self-hosted Integration Runtime. 特にクラスターのパワーが非常に強い場合、コピーのスループットが向上します。It will provide better copy throughput especially if your cluster is very powerful. Azure Data Factory の構成に基づいて、コピー アクティビティは、distcp コマンドを自動的に作成し、Hadoop クラスターに送信し、コピー状態を監視します。Based on your configuration in Azure Data Factory, Copy activity automatically construct a distcp command, submit to your Hadoop cluster, and monitor the copy status.

前提条件Prerequisites

DistCp を使用して HDFS から Azure Blob (ステージング コピーも含みます) または Azure Data Lake Store にファイルをそのままコピーする場合は、Hadoop クラスターが次の要件を満たしていることを確認します。To use DistCp to copy files as-is from HDFS to Azure Blob (including staged copy) or Azure Data Lake Store, make sure your Hadoop cluster meets below requirements:

  1. MapReduce と Yarn サービスが有効であること。MapReduce and Yarn services are enabled.

  2. Yarn のバージョンが 2.5 以降であること。Yarn version is 2.5 or above.

  3. HDFS サーバーがターゲット データ ストア (Azure Blob または Azure Data Lake Store) に統合されていること。HDFS server is integrated with your target data store - Azure Blob or Azure Data Lake Store:

    • Azure Blob ファイル システムは、Hadoop 2.7 以降、ネイティブにサポートされています。Azure Blob FileSystem is natively supported since Hadoop 2.7. 必要なのは、jar パスを Hadoop 環境構成に指定することだけです。You only need to specify jar path in Hadoop env config.
    • Azure Data Lake Store ファイル システムは、Hadoop 3.0.0-alpha1 からパッケージ化されます。Azure Data Lake Store FileSystem is packaged starting from Hadoop 3.0.0-alpha1. 使用している Hadoop クラスターのバージョンがそれよりも小さい場合は、ADLS 関連 jar パッケージ (azure-datalake-store.jar) を ここからクラスターに手動でインポートし、jar パスを Hadoop 環境構成に指定する必要があります。If your Hadoop cluster is lower than that version, you need to manually import ADLS related jar packages (azure-datalake-store.jar) into cluster from here, and specify jar path in Hadoop env config.
  4. HDFS 内に一時フォルダーが準備されていること。Prepare a temp folder in HDFS. この一時フォルダーは DistCpシェル スクリプトを格納するために使用されるため、KB レベルで領域を消費します。This temp folder is used to store DistCp shell script, so it will occupy KB-level space.

  5. HDFS のリンクされたサービスに提供するユーザー アカウントが、a) アプリケーションを Yarn で送信するためのアクセス許可、b) 上記の一時フォルダーの下にサブフォルダーを作成してファイルを読み取る/書き込むためのアクセス許可を持っていること。Make sure the user account provided in HDFS Linked Service have permission to a) submit application in Yarn; b) have the permission to create subfolder, read/write files under above temp folder.

構成Configurations

DistCp 関連の構成および例については、「ソースとしての HDFS」セクションを参照してください。See DistCp related configurations and examples in HDFS as source section.

HDFS コネクタでの Kerberos 認証の使用Use Kerberos authentication for HDFS connector

HDFS コネクタで Kerberos 認証を使用するようにオンプレミス環境を設定するためのオプションは 2 つあります。There are two options to set up the on-premises environment so as to use Kerberos Authentication in HDFS connector. ニーズに適した方法を選択できます。You can choose the one better fits your case.

オプション 1: セルフホステッド統合ランタイム コンピューターを Kerberos 領域に参加させるOption 1: Join Self-hosted Integration Runtime machine in Kerberos realm

必要条件Requirements

  • セルフホステッド統合ランタイム コンピューターは Kerberos 領域に参加している必要があります。Windows ドメインには参加できません。The Self-hosted Integration Runtime machine needs to join the Kerberos realm and can’t join any Windows domain.

構成方法How to configure

セルフホステッド統合ランタイム コンピューター上で:On Self-hosted Integration Runtime machine:

  1. Ksetup ユーティリティを実行して、Kerberos の KDC サーバーと領域を構成します。Run the Ksetup utility to configure the Kerberos KDC server and realm.

    Kerberos 領域は Windows ドメインとは異なるため、コンピューターをワークグループのメンバーとして構成する必要があります。The machine must be configured as a member of a workgroup since a Kerberos realm is different from a Windows domain. これは、次のように Kerberos 領域を設定し、KDC サーバーを追加することで実現できます。This can be achieved by setting the Kerberos realm and adding a KDC server as follows. 必要に応じて、REALM.COM を独自の領域に置き換えます。Replace REALM.COM with your own respective realm as needed.

        C:> Ksetup /setdomain REALM.COM
        C:> Ksetup /addkdc REALM.COM <your_kdc_server_address>
    

    これら 2 つのコマンドを実行した後、コンピューターを再起動します。Restart the machine after executing these 2 commands.

  2. Ksetup コマンドを使用して、構成を確認します。Verify the configuration with Ksetup command. 出力は次のようになります。The output should be like:

        C:> Ksetup
        default realm = REALM.COM (external)
        REALM.com:
            kdc = <your_kdc_server_address>
    

Azure Data Factory で以下を実行します。In Azure Data Factory:

  • Kerberos プリンシパル名とパスワードによる Windows 認証 を行って HDFS データ ソースに接続するように HDFS コネクタを構成します。Configure the HDFS connector using Windows authentication together with your Kerberos principal name and password to connect to the HDFS data source. 構成の詳細については、「HDFS のリンクされたサービスのプロパティ」セクションを参照してください。Check HDFS Linked Service properties section on configuration details.

オプション 2: Windows ドメインと Kerberos 領域間の相互の信頼関係を有効にするOption 2: Enable mutual trust between Windows domain and Kerberos realm

必要条件Requirements

  • セルフホステッド統合ランタイム コンピューターは、Windows ドメインに参加している必要があります。The Self-hosted Integration Runtime machine must join a Windows domain.
  • ドメイン コントローラーの設定を更新できるアクセス許可が必要です。You need permission to update the domain controller's settings.

構成方法How to configure

注意

必要に応じて、次のチュートリアルの REALM.COM と AD.COM を独自の領域とドメイン コントローラーに置き換えてください。Replace REALM.COM and AD.COM in the following tutorial with your own respective realm and domain controller as needed.

KDC サーバーで以下を実行します。On KDC server:

  1. krb5.conf ファイルの KDC 構成を編集して、KDC が次の構成テンプレートを参照している Windows ドメインを信頼するようにします。Edit the KDC configuration in krb5.conf file to let KDC trust Windows Domain referring to the following configuration template. 既定では、この構成は /etc/krb5.conf に置かれています。By default, the configuration is located at /etc/krb5.conf.

        [logging]
         default = FILE:/var/log/krb5libs.log
         kdc = FILE:/var/log/krb5kdc.log
         admin_server = FILE:/var/log/kadmind.log
    
        [libdefaults]
         default_realm = REALM.COM
         dns_lookup_realm = false
         dns_lookup_kdc = false
         ticket_lifetime = 24h
         renew_lifetime = 7d
         forwardable = true
    
        [realms]
         REALM.COM = {
          kdc = node.REALM.COM
          admin_server = node.REALM.COM
         }
        AD.COM = {
         kdc = windc.ad.com
         admin_server = windc.ad.com
        }
    
        [domain_realm]
         .REALM.COM = REALM.COM
         REALM.COM = REALM.COM
         .ad.com = AD.COM
         ad.com = AD.COM
    
        [capaths]
         AD.COM = {
          REALM.COM = .
         }
    

    構成したら KDC サービスを再起動します。Restart the KDC service after configuration.

  2. 次のコマンドを使用して、krbtgt/REALM.COM@AD.COM という名前のプリンシパルを KDC サーバー内に準備します。Prepare a principal named krbtgt/REALM.COM@AD.COM in KDC server with the following command:

        Kadmin> addprinc krbtgt/REALM.COM@AD.COM
    
  3. hadoop.security.auth_to_local HDFS サービス構成ファイルに、を追加しますRULE:[1:$1@$0](.*\@AD.COM)s/\@.*//In hadoop.security.auth_to_local HDFS service configuration file, add RULE:[1:$1@$0](.*\@AD.COM)s/\@.*//.

ドメイン コントローラーで、以下を実行します。On domain controller:

  1. 次の Ksetup コマンドを実行して、領域エントリを追加します。Run the following Ksetup commands to add a realm entry:

        C:> Ksetup /addkdc REALM.COM <your_kdc_server_address>
        C:> ksetup /addhosttorealmmap HDFS-service-FQDN REALM.COM
    
  2. Windows ドメインから Kerberos 領域への信頼関係を確立します。Establish trust from Windows Domain to Kerberos Realm. [password] は、krbtgt/REALM.COM@AD.COM プリンシパルのパスワードです。[password] is the password for the principal krbtgt/REALM.COM@AD.COM.

        C:> netdom trust REALM.COM /Domain: AD.COM /add /realm /passwordt:[password]
    
  3. Kerberos で使用される暗号化アルゴリズムを選択します。Select encryption algorithm used in Kerberos.

    1. サーバー マネージャーに移動し、[グループ ポリシー管理]、[ドメイン]、[グループ ポリシー オブジェクト]、[既定のポリシー] または [Active Domain ポリシー] の順に選択します。Go to Server Manager > Group Policy Management > Domain > Group Policy Objects > Default or Active Domain Policy, and Edit.

    2. [グループ ポリシー管理エディター] ポップアップ ウィンドウで、[コンピューターの構成] > [ポリシー] > [Windows の設定] > [セキュリティの設定] > [ローカル ポリシー] > [セキュリティ オプション] に移動し、 [ネットワーク セキュリティ: Kerberos で許可する暗号化の種類を構成する] を構成します。In the Group Policy Management Editor popup window, go to Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security Options, and configure Network security: Configure Encryption types allowed for Kerberos.

    3. KDC に接続するときに使用する暗号化アルゴリズムを選択します。Select the encryption algorithm you want to use when connect to KDC. 通常は、単純にすべてのオプションを選択できます。Commonly, you can simply select all the options.

      Kerberos での暗号化の種類の構成

    4. Ksetup コマンドを使用して、特定の領域で使用される暗号化アルゴリズムを指定します。Use Ksetup command to specify the encryption algorithm to be used on the specific REALM.

           C:> ksetup /SetEncTypeAttr REALM.COM DES-CBC-CRC DES-CBC-MD5 RC4-HMAC-MD5 AES128-CTS-HMAC-SHA1-96 AES256-CTS-HMAC-SHA1-96
      
  4. Windows ドメインで Kerberos プリンシパルを使用するために、ドメイン アカウントと Kerberos プリンシパル間のマッピングを作成します。Create the mapping between the domain account and Kerberos principal, in order to use Kerberos principal in Windows Domain.

    1. 管理ツールを起動し、 [Active Directory ユーザーとコンピュータ] を選択します。Start the Administrative tools > Active Directory Users and Computers.

    2. [ビュー] > [高度な機能] をクリックして、高度な機能を構成します。Configure advanced features by clicking View > Advanced Features.

    3. マッピングを作成するアカウントを見つけます。そのアカウントをクリックして [名前のマッピング] を表示し、 [Kerberos 名] タブをクリックします。Locate the account to which you want to create mappings, and right-click to view Name Mappings > click Kerberos Names tab.

    4. 領域からプリンシパルを追加します。Add a principal from the realm.

      マップ セキュリティ ID

セルフホステッド統合ランタイム コンピューター上で:On Self-hosted Integration Runtime machine:

  • 次の Ksetup コマンドを実行して、領域エントリを追加します。Run the following Ksetup commands to add a realm entry.

          C:> Ksetup /addkdc REALM.COM <your_kdc_server_address>
          C:> ksetup /addhosttorealmmap HDFS-service-FQDN REALM.COM
    

Azure Data Factory で以下を実行します。In Azure Data Factory:

  • ドメイン アカウントまたは Kerberos プリンシパルのいずれかを使用して Windows 認証 を行って HDFS データ ソースに接続するように HDFS コネクタを構成します。Configure the HDFS connector using Windows authentication together with either your Domain Account or Kerberos Principal to connect to the HDFS data source. 構成の詳細については、「HDFS のリンクされたサービスのプロパティ」セクションを参照してください。Check HDFS Linked Service properties section on configuration details.

次の手順Next steps

Azure Data Factory のコピー アクティビティによってソースおよびシンクとしてサポートされるデータ ストアの一覧については、サポートされるデータ ストアの表をご覧ください。For a list of data stores supported as sources and sinks by the copy activity in Azure Data Factory, see supported data stores.