Freigeben über


Kopieren von Daten vom HDFS-Server mithilfe von Azure Data Factory oder Synapse Analytics

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Tipp

Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!

In diesem Artikel wird beschrieben, wie Daten vom HDFS-Server (Hadoop Distributed File System) kopiert werden. Weitere Informationen finden Sie in den Einführungsartikeln zu Azure Data Factory und Synapse Analytics.

Unterstützte Funktionen

Dieser HDFS-Connector wird für die folgenden Funktionen unterstützt:

Unterstützte Funktionen IR
Kopieraktivität (Quelle/-) ① ②
Lookup-Aktivität ① ②
Delete-Aktivität ① ②

① Azure Integration Runtime ② Selbstgehostete Integration Runtime

Der HDFS-Connector unterstützt insbesondere Folgendes:

  • Kopieren von Dateien mithilfe der Windows-Authentifizierung (Kerberos) oder der anonymen Authentifizierung
  • Kopieren von Dateien mithilfe des WebHDFS-Protokolls oder der integrierten DistCp-Unterstützung
  • Kopieren von Dateien im jeweiligen Zustand oder Analysieren oder Generieren von Dateien mit den unterstützten Dateiformaten und Codecs für die Komprimierung

Voraussetzungen

Wenn sich Ihr Datenspeicher in einem lokalen Netzwerk, in einem virtuellen Azure-Netzwerk oder in einer virtuellen privaten Amazon-Cloud befindet, müssen Sie eine selbstgehostete Integration Runtime konfigurieren, um eine Verbindung herzustellen.

Handelt es sich bei Ihrem Datenspeicher um einen verwalteten Clouddatendienst, können Sie die Azure Integration Runtime verwenden. Ist der Zugriff auf IP-Adressen beschränkt, die in den Firewallregeln genehmigt sind, können Sie Azure Integration Runtime-IPs zur Positivliste hinzufügen.

Sie können auch das Feature managed virtual network integration runtime (Integration Runtime für verwaltete virtuelle Netzwerke) in Azure Data Factory verwenden, um auf das lokale Netzwerk zuzugreifen, ohne eine selbstgehostete Integration Runtime zu installieren und zu konfigurieren.

Weitere Informationen zu den von Data Factory unterstützten Netzwerksicherheitsmechanismen und -optionen finden Sie unter Datenzugriffsstrategien.

Hinweis

Stellen Sie sicher, dass die Integration Runtime auf alle folgenden Komponenten des Hadoop-Clusters zugreifen kann: [Namenknotenserver]:[Namenknotenport] und [Datenknotenserver]:[Datenknotenport]. Der Standardwert für den [Namenknotenport] ist 50070, der Standardwert für den [Datenknotenport] ist 50075.

Erste Schritte

Sie können eines der folgenden Tools oder SDKs verwenden, um die Kopieraktivität mit einer Pipeline zu verwenden:

Erstellen eines verknüpften Diensts für HDFS über die Benutzeroberfläche

Führen Sie die folgenden Schritte aus, um über die Benutzeroberfläche des Azure-Portals einen verknüpften Dienst für HDFS zu erstellen.

  1. Navigieren Sie in Ihrem Azure Data Factory- oder Synapse-Arbeitsbereich zur Registerkarte „Verwalten“, wählen Sie „Verknüpfte Dienste“ aus, und klicken Sie dann auf „Neu“:

  2. Suchen Sie nach HDFS, und wählen Sie den HDFS-Connector aus.

    Auswählen des HDFS-Connectors

  3. Konfigurieren Sie die Dienstdetails, testen Sie die Verbindung, und erstellen Sie den neuen verknüpften Dienst.

    Konfigurieren eines verknüpften Diensts für HDFS

Details zur Connectorkonfiguration

Die folgenden Abschnitte enthalten Details zu Eigenschaften, die zum Definieren von Data Factory-Entitäten speziell für HDFS verwendet werden.

Eigenschaften des verknüpften Diensts

Folgende Eigenschaften werden für den mit HDFS verknüpften Dienst unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft muss auf Hdfs festgelegt werden. Ja
url Die HDFS-URL Ja
authenticationType Die zulässigen Werte sind Anonymous oder Windows.

Informationen zum Einrichten Ihrer lokalen Umgebung finden Sie im Abschnitt Verwenden der Kerberos-Authentifizierung für den HDFS-Connector.
Ja
userName Diese Eigenschaft gibt den Benutzernamen für die Windows-Authentifizierung an. Geben Sie für die Kerberos-Authentifizierung <Benutzername>@<Domäne>.com an. Ja (für die Windows-Authentifizierung)
password Diese Eigenschaft gibt das Kennwort für die Windows-Authentifizierung an. Markieren Sie dieses Feld als einen „SecureString“, um es sicher zu speichern, oder verweisen Sie auf ein in Azure Schlüsseltresor gespeichertes Geheimnis. Ja (für die Windows-Authentifizierung)
connectVia Die Integration Runtime, die zum Herstellen einer Verbindung mit dem Datenspeicher verwendet werden soll. Weitere Informationen finden Sie im Abschnitt Voraussetzungen. Wenn die Integration Runtime nicht angegeben ist, verwendet der Dienst die Standard-Azure Integration Runtime. Nein

Beispiel: Verwenden der anonymen Authentifizierung

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

Beispiel: Verwenden der Windows-Authentifizierung

{
    "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-Eigenschaften

Eine vollständige Liste mit den Abschnitten und Eigenschaften, die zum Definieren von Datasets zur Verfügung stehen, finden Sie unter Datasets.

Azure Data Factory unterstützt die folgenden Dateiformate. Informationen zu formatbasierten Einstellungen finden Sie in den jeweiligen Artikeln.

Folgende Eigenschaften werden für HDFS unter den location-Einstellungen im formatbasierten Dataset unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft unter location im Dataset muss auf HdfsLocation festgelegt werden. Ja
folderPath Diese Eigenschaft gibt den Pfad zum Ordner an. Wenn Sie einen Platzhalter verwenden möchten, um den Ordner zu filtern, überspringen Sie diese Einstellung, und geben Sie den Pfad in den Aktivitätsquelleneinstellungen an. Nein
fileName Der Name der Datei unter dem angegebenen folderPath. Wenn Sie einen Platzhalter verwenden möchten, um Dateien zu filtern, überspringen Sie diese Einstellung, und geben Sie den Dateinamen in den Aktivitätsquelleneinstellungen an. Nein

Beispiel:

{
    "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"
        }
    }
}

Eigenschaften der Kopieraktivität

Eine vollständige Liste mit den verfügbaren Abschnitten und Eigenschaften zum Definieren von Aktivitäten finden Sie unter Pipelines und Aktivitäten. Dieser Abschnitt enthält eine Liste der Eigenschaften, die von der HDFS-Quelle unterstützt werden.

HDFS als Quelle

Azure Data Factory unterstützt die folgenden Dateiformate. Informationen zu formatbasierten Einstellungen finden Sie in den jeweiligen Artikeln.

Folgende Eigenschaften werden für HDFS unter den storeSettings-Einstellungen in der formatbasierten Kopierquelle unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft unter storeSettings muss auf HdfsReadSettings festgelegt werden. Ja
Suchen der zu kopierenden Dateien
OPTION 1: statischer Pfad
Kopieren Sie aus dem im Dataset angegebenen Ordner oder Dateipfad. Wenn Sie alle Dateien aus einem Ordner kopieren möchten, geben Sie zusätzlich für wildcardFileName den Wert * an.
OPTION 2: Platzhalter
– wildcardFolderPath
Der Ordnerpfad mit Platzhalterzeichen, um Quellordner zu filtern.
Folgende Platzhalter sind zulässig: * (entspricht null [0] oder mehr Zeichen) und ? (entspricht null [0] oder einem einzelnen Zeichen). Verwenden Sie ^ als Escapezeichen, wenn der tatsächliche Ordnername einen Platzhalter oder dieses Escapezeichen enthält.
Weitere Beispiele finden Sie unter Beispiele für Ordner- und Dateifilter.
Nein
OPTION 2: Platzhalter
– wildcardFileName
Der Dateiname mit Platzhalterzeichen unter dem angegebenen folderPath/wildcardFolderPath für das Filtern von Quelldateien.
Zulässige Platzhalter sind: * (entspricht 0 oder mehr Zeichen) und ? (entspricht 0 oder einem einzelnen Zeichen). Verwenden Sie ^ als Escapezeichen, wenn Ihr tatsächlicher Dateiname einen Platzhalter oder dieses Escapezeichen enthält. Weitere Beispiele finden Sie unter Beispiele für Ordner- und Dateifilter.
Ja
OPTION 3: eine Liste von Dateien
– fileListPath
Diese Eigenschaft gibt an, dass eine angegebene Dateigruppe kopiert werden soll. Verweisen Sie auf eine Textdatei, die eine Liste der zu kopierenden Dateien enthält, und zwar eine Datei pro Zeile, mit dem relativen Pfad zu dem im Dataset konfigurierten Pfad.
Wenn Sie diese Option verwenden, geben Sie keinen Dateinamen im Dataset an. Weitere Beispiele finden Sie unter Beispiele für Dateilisten.
Nein
Zusätzliche Einstellungen
recursive Gibt an, ob die Daten rekursiv aus den Unterordnern oder nur aus dem angegebenen Ordner gelesen werden. Wenn recursive auf true festgelegt ist und es sich bei der Senke um einen dateibasierten Speicher handelt, wird ein leerer Ordner oder Unterordner nicht in die Senke kopiert oder dort erstellt.
Zulässige Werte sind true (Standard) und false.
Diese Eigenschaft gilt nicht, wenn Sie fileListPath konfigurieren.
Nein
deleteFilesAfterCompletion Gibt an, ob die Binärdateien nach dem erfolgreichen Verschieben in den Zielspeicher aus dem Quellspeicher gelöscht werden. Die Dateien werden einzeln gelöscht, sodass Sie bei einem Fehler der Kopieraktivität feststellen werden, dass einige Dateien bereits ins Ziel kopiert und aus der Quelle gelöscht wurden, wohingegen sich andere weiter im Quellspeicher befinden.
Diese Eigenschaft ist nur im Szenario zum Kopieren von Binärdateien gültig. Standardwert: FALSE.
Nein
modifiedDatetimeStart Die Dateien werden anhand des Attributs Zuletzt bearbeitet gefiltert.
Die Dateien werden ausgewählt, wenn der Zeitpunkt ihrer letzten Änderung größer als oder gleich modifiedDatetimeStart und kleiner als modifiedDatetimeEnd ist. Die Zeit wird auf die UTC-Zeitzone im Format 2018-12-01T05:00:00Z angewandt.
Die Eigenschaften können NULL sein, was bedeutet, dass kein Dateiattributfilter auf das Dataset angewandt wird. Wenn modifiedDatetimeStart einen datetime-Wert aufweist, aber modifiedDatetimeEnd NULL ist, bedeutet dies, dass die Dateien ausgewählt werden, deren Attribut für die letzte Änderung größer oder gleich dem datetime-Wert ist. Wenn modifiedDatetimeEnd einen datetime-Wert aufweist, aber modifiedDatetimeStart NULL ist, bedeutet dies, dass die Dateien ausgewählt werden, deren Attribut für die letzte Änderung kleiner als der datetime-Wert ist.
Diese Eigenschaft gilt nicht, wenn Sie fileListPath konfigurieren.
Nein
modifiedDatetimeEnd Wie oben.
enablePartitionDiscovery Geben Sie bei partitionierten Dateien an, ob die Partitionen anhand des Dateipfads analysiert und als zusätzliche Quellspalten hinzugefügt werden sollen.
Zulässige Werte sind false (Standard) und true.
Nein
partitionRootPath Wenn die Partitionsermittlung aktiviert ist, geben Sie den absoluten Stammpfad an, um partitionierte Ordner als Datenspalten zu lesen.

Ohne Angabe gilt standardmäßig Folgendes:
- Wenn Sie den Dateipfad im Dataset oder die Liste der Dateien in der Quelle verwenden, ist der Partitionsstammpfad der im Dataset konfigurierte Pfad.
Wenn Sie einen Platzhalterordnerfilter verwenden, ist der Stammpfad der Partition der Unterpfad vor dem ersten Platzhalter.

Angenommen, Sie konfigurieren den Pfad im Dataset als „root/folder/year=2020/month=08/day=27“:
- Wenn Sie den Stammpfad der Partition als „root/folder/year=2020“ angeben, generiert die Kopieraktivität zusätzlich zu den Spalten in den Dateien die beiden weiteren Spalten month und day mit den Werten „08“ bzw. „27“.
- Wenn kein Stammpfad für die Partition angegeben ist, wird keine zusätzliche Spalte generiert.
Nein
maxConcurrentConnections Die Obergrenze gleichzeitiger Verbindungen mit dem Datenspeicher während der Aktivitätsausführung. Geben Sie diesen Wert nur an, wenn Sie die Anzahl der gleichzeitigen Verbindungen begrenzen möchten. Nein
DistCp-Einstellungen
distcpSettings Diese Eigenschaftengruppe sollte bei Verwendung von HDFS DistCp verwendet werden. Nein
resourceManagerEndpoint Der YARN-Endpunkt (Yet Another Resource Negotiator) Ja, wenn DistCp verwendet wird
tempScriptPath Diese Eigenschaft gibt einen Ordnerpfad zum Speichern der temporären DistCp-Befehlsskripts an. Die Skriptdatei wird generiert und nach Abschluss des Copy-Auftrags entfernt. Ja, wenn DistCp verwendet wird
distcpOptions Zusätzliche für den DistCp-Befehl bereitgestellte Optionen Nein

Beispiel:

"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": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "HdfsReadSettings",
                    "recursive": true,
                    "distcpSettings": {
                        "resourceManagerEndpoint": "resourcemanagerendpoint:8088",
                        "tempScriptPath": "/usr/hadoop/tempscript",
                        "distcpOptions": "-m 100"
                    }
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Beispiele für Ordner- und Dateifilter

Dieser Abschnitt beschreibt das sich ergebende Verhalten, wenn Sie für den Ordnerpfad und den Dateinamen einen Platzhalterfilter verwenden.

folderPath fileName recursive Quellordnerstruktur und Filterergebnis (Dateien mit Fettformatierung werden abgerufen.)
Folder* (empty, use default) false FolderA
    Datei1.csv
    File2.json
    Unterordner1
        File3.csv
        File4.json
        File5.csv
AndererOrdnerB
    Datei6.csv
Folder* (empty, use default) true FolderA
    Datei1.csv
    File2.json
    Unterordner1
        File3.csv
        File4.json
        File5.csv
AndererOrdnerB
    Datei6.csv
Folder* *.csv false FolderA
    Datei1.csv
    Datei2.json
    Unterordner1
        File3.csv
        File4.json
        File5.csv
AndererOrdnerB
    Datei6.csv
Folder* *.csv true FolderA
    Datei1.csv
    Datei2.json
    Unterordner1
        File3.csv
        File4.json
        File5.csv
AndererOrdnerB
    Datei6.csv

Beispiele für Dateilisten

In diesem Abschnitt wird das aus der Verwendung eines Dateilistenpfads in der Quelle einer Kopieraktivität resultierende Verhalten beschrieben. Es wird angenommen, dass Sie die folgende Quellordnerstruktur verwenden und die Dateien kopieren möchten, deren Namen fett formatiert sind:

Beispielquellstruktur Inhalt in „FileListToCopy.txt“ Konfiguration
root
    FolderA
        Datei1.csv
        Datei2.json
        Unterordner1
            File3.csv
            File4.json
            File5.csv
    Metadaten
        FileListToCopy.txt
Datei1.csv
Unterordner1/Datei3.csv
Unterordner1/Datei5.csv
Im Dataset:
– Ordnerpfad: root/FolderA

In der Quelle der Kopieraktivität:
– Dateilistenpfad: root/Metadata/FileListToCopy.txt

Der Dateilistenpfad verweist auf eine Textdatei im selben Datenspeicher, der eine Liste der zu kopierenden Dateien enthält, und zwar eine Datei pro Zeile, mit dem relativen Pfad zu dem im Dataset konfigurierten Pfad.

Kopieren von Daten aus einem HDFS mithilfe von DistCp

DistCp ist ein natives Hadoop-Befehlszeilentool, um verteilte Kopiervorgänge in einem Hadoop-Cluster durchzuführen. Wenn Sie einen Befehl in DistCp ausführen, werden zunächst alle zu kopierenden Dateien aufgelistet und dann mehrere Zuordnungsaufträge im Hadoop-Cluster erstellt. Jeder Zuordnungsauftrag führt eine Binärkopieraktivität von der Quelle in die Senke durch.

Die Kopieraktivität unterstützt mithilfe von DistCp das Kopieren von Dateien im jeweiligen Zustand in Azure Blob Storage (einschließlich der gestaffelten Kopie) oder einen Azure Data Lake-Speicher. In diesem Fall kann DistCp von der Leistung Ihres Clusters profitieren, anstatt über die selbstgehostete Integration Runtime ausgeführt zu werden. Durch die Verwendung von DistCp erreichen Sie einen besseren Kopierdurchsatz, insbesondere dann, wenn Sie über einen äußerst leistungsstarken Cluster verfügen. Basierend auf der Konfiguration erstellt die Copy-Aktivität automatisch einen DistCp-Befehl, sendet diesen an Ihren Hadoop-Cluster und überwacht den Kopierstatus.

Voraussetzungen

Wenn Sie mithilfe von DistCp Dateien im jeweiligen Zustand aus HDFS in Azure Blob Storage (einschließlich der gestaffelten Kopie) oder Azure Data Lake Store kopieren möchten, müssen Sie sicherstellen, dass Ihr Hadoop-Cluster die folgenden Anforderungen erfüllt:

  • Die Dienste MapReduce und YARN sind aktiviert.

  • Die YARN-Version ist 2.5 oder höher.

  • Der HDFS-Server ist mit Ihrem Zieldatenspeicher integriert: Azure Blob Storage oder Azure Data Lake Storage (ADLS Gen1) :

    • Das Azure-Blobdateisystem wird nativ ab Hadoop 2.7 unterstützt. Sie müssen lediglich den JAR-Pfad bei der Konfiguration der Hadoop-Umgebung angeben.
    • Das Azure Data Lake Store-Dateisystem wird ab Hadoop 3.0.0-alpha1 verpackt. Wenn Sie eine frühere Version des Hadoop-Clusters verwenden, müssen Sie zu Azure Data Lake Storage gehörige JAR-Pakete (azure-datalake-store.jar) von hier aus manuell in den Cluster importieren und den Pfad der JAR-Datei bei der Konfiguration der Hadoop-Umgebung angeben.
  • Bereiten Sie einen temporären Ordner in HDFS vor. In diesem temporären Ordner wird ein DistCp-Shellskript gespeichert, sodass Speicherplatz im KB-Bereich belegt wird.

  • Stellen Sie sicher, dass das Benutzerkonto, das im mit HDFS verknüpften Dienst bereitgestellt wird, über die Berechtigungen für Folgendes verfügt:

    • Übermitteln einer Anwendung in YARN
    • Erstellen eines Unterordners und Lesen/Schreiben von Dateien im temporären Ordner

Configurations

Informationen zu DistCp-bezogenen Konfigurationen sowie Beispiele finden Sie im Abschnitt HDFS als Quelle.

Verwenden der Kerberos-Authentifizierung für den HDFS-Connector

Es gibt zwei Optionen zum Einrichten der lokalen Umgebung zur Verwendung der Kerberos-Authentifizierung für den HDFS-Connector. Wählen Sie die Option, die für Ihren Fall besser geeignet ist.

Stellen Sie für beide Optionen sicher, dass Sie webhdfs für Hadoop-Cluster aktivieren:

  1. Erstellen Sie den HTTP-Prinzipal und die Schlüsseltabelle für webhdfs.

    Wichtig

    Der HTTP-Kerberos-Prinzipal muss gemäß der Kerberos-HTTP-SPNEGO-Spezifikation mit „HTTP/ “ beginnen. Weitere Informationen dazu finden Sie hier.

    Kadmin> addprinc -randkey HTTP/<namenode hostname>@<REALM.COM>
    Kadmin> ktadd -k /etc/security/keytab/spnego.service.keytab HTTP/<namenode hostname>@<REALM.COM>
    
  2. HDFS-Konfigurationsoptionen: Fügen Sie die folgenden drei Eigenschaften in hdfs-site.xml hinzu.

    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.web.authentication.kerberos.principal</name>
        <value>HTTP/_HOST@<REALM.COM></value>
    </property>
    <property>
        <name>dfs.web.authentication.kerberos.keytab</name>
        <value>/etc/security/keytab/spnego.service.keytab</value>
    </property>
    

Option 1: Beitreten zum Computer mit der selbstgehosteten Integration Runtime im Kerberosbereich

Requirements (Anforderungen)

  • Der Computer mit der selbstgehosteten Integration Runtime muss dem Kerberosbereich beitreten und darf in keine Windows-Domäne eingebunden sein.

Vorgehensweise zur Konfiguration

KDC-Server:

Erstellen Sie einen Prinzipal, und geben Sie das Kennwort an.

Wichtig

Der Benutzername darf nicht den Hostnamen enthalten.

Kadmin> addprinc <username>@<REALM.COM>

Auf dem Computer mit der selbstgehosteten Integration Runtime:

  1. Führen Sie das Ksetup-Hilfsprogramm aus, um den Kerberos-KDC-Server (Key Distribution Center) und -Bereich zu konfigurieren.

    Der Computer muss als Mitglied einer Arbeitsgruppe konfiguriert werden, da sich Kerberos-Bereiche von Windows-Domänen unterscheiden. Diese Konfiguration erreichen Sie, indem Sie mithilfe der folgenden Befehle den Kerberosbereich festlegen und einen KDC-Server hinzufügen. Ersetzen Sie REALM.COM durch Ihren eigenen Bereichsnamen.

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

    Nachdem Sie diese Befehle ausgeführt haben, starten Sie den Computer neu.

  2. Überprüfen Sie die Konfiguration mit dem Ksetup-Befehl. Die Ausgabe sollte wie folgt sein:

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

In Ihrem Data Factory. oder Synapse-Arbeitsbereich:

  • Konfigurieren Sie den HDFS-Connector mithilfe der Windows-Authentifizierung zusammen mit dem Namen und Kennwort Ihres Kerberos-Prinzipals, um eine Verbindung mit der HDFS-Datenquelle herzustellen. Genaue Informationen zur Konfiguration finden Sie im Abschnitt Eigenschaften des verknüpften Diensts.

Option 2: Aktivieren von gegenseitiger Vertrauensstellung zwischen der Windows-Domäne und dem Kerberos-Bereich

Requirements (Anforderungen)

  • Der Computer mit der selbstgehosteten Integration Runtime muss einer Windows-Domäne beitreten.
  • Sie benötigen die Berechtigung zum Aktualisieren der Einstellungen des Domänencontrollers.

Vorgehensweise zur Konfiguration

Hinweis

Ersetzen Sie REALM.COM und AD.COM im folgenden Tutorial durch Ihren eigenen Bereichsnamen und Domänencontroller.

KDC-Server:

  1. Bearbeiten Sie die KDC-Konfiguration in der Datei krb5.conf mithilfe der folgenden Konfigurationsvorlage so, dass KDC der Windows-Domäne vertraut. Standardmäßig befindet sich die Konfiguration unter /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 = .
     }
    

    Nachdem Sie die Datei konfiguriert haben, starten Sie den KDC-Dienst neu.

  2. Bereiten Sie einen Prinzipal namens krbtgt/REALM.COM@AD.COM mit dem folgenden Befehl auf dem KDC-Server vor:

    Kadmin> addprinc krbtgt/REALM.COM@AD.COM
    
  3. Fügen Sie RULE:[1:$1@$0](.*\@AD.COM)s/\@.*// zur HDFS-Dienstkonfigurationsdatei hadoop.security.auth_to_local hinzu.

Domänencontroller:

  1. Führen Sie die folgenden Ksetup-Befehle aus, um einen Bereichseintrag hinzuzufügen:

    C:> Ksetup /addkdc REALM.COM <your_kdc_server_address>
    C:> ksetup /addhosttorealmmap HDFS-service-FQDN REALM.COM
    
  2. Stellen Sie Vertrauensstellung zwischen der Windows-Domäne und dem Kerberos-Bereich her. „[password]“ ist das Kennwort für den Prinzipal krbtgt/REALM.COM@AD.COM.

    C:> netdom trust REALM.COM /Domain: AD.COM /add /realm /password:[password]
    
  3. Wählen Sie den in Kerberos verwendeten Verschlüsselungsalgorithmus aus.

    a. Klicken Sie auf Server Manager>Group Policy Management>Domain>Group Policy Objects>Default or Active Domain Policy (Server-Manager > Gruppenrichtlinienverwaltung > Domäne > Gruppenrichtlinienobjekte > Standard- oder aktive Domänenrichtlinie), und klicken Sie dann auf Bearbeiten.

    b. Klicken Sie im Bereich Gruppenrichtlinienverwaltungs-Editor auf Computerkonfiguration>Richtlinien>Windows-Einstellungen>Sicherheitseinstellungen>Lokale Richtlinien>Sicherheitsoptionen, und konfigurieren Sie die Einstellung Netzwerksicherheit: Für Kerberos zulässige Verschlüsselungstypen konfigurieren.

    c. Wählen Sie den Verschlüsselungsalgorithmus aus, den Sie beim Herstellen einer Verbindung mit KDC verwenden möchten. Sie können alle Optionen auswählen.

    Screenshot des Bereichs "Netzwerksicherheit: Für Kerberos zulässige Verschlüsselungsarten konfigurieren" Bereich

    d. Verwenden Sie den Befehl Ksetup, um den Verschlüsselungsalgorithmus anzugeben, der in dem bestimmten Bereich verwendet werden soll.

    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. Erstellen Sie die Zuordnung zwischen dem Domänenkonto und dem Kerberos-Prinzipal, sodass Sie den Kerberos-Prinzipal in der Windows-Domäne verwenden können.

    a. Klicken Sie auf Verwaltung>Active Directory-Benutzer und -Computer.

    b. Konfigurieren Sie erweiterte Funktionen unter Ansicht>Erweiterte Funktionen.

    c. Klicken Sie im Bereich Erweiterte Features mit der rechten Maustaste auf das Konto, für das Sie Zuordnungen erstellen möchten, und klicken Sie im Bereich Namenszuordnungen auf die Registerkarte Kerberos-Namen.

    d. Fügen Sie einen Prinzipal aus dem Bereich hinzu.

    Screenshot des Fensters "Security Identity Mapping "

Auf dem Computer mit der selbstgehosteten Integration Runtime:

  • Führen Sie die folgenden Ksetup-Befehle aus, um einen Bereichseintrag hinzuzufügen.

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

In Ihrem Data Factory. oder Synapse-Arbeitsbereich:

  • Konfigurieren Sie den HDFS-Connector mithilfe der Windows-Authentifizierung zusammen mit Ihrem Domänenkonto oder Ihrem Kerberos-Prinzipal, um eine Verbindung mit der HDFS-Datenquelle herzustellen. Genaue Informationen zur Konfiguration finden Sie im Abschnitt Eigenschaften des verknüpften Diensts.

Eigenschaften der Lookup-Aktivität

Weitere Informationen zu den Eigenschaften der Lookup-Aktivität finden Sie unter Lookup-Aktivität.

Eigenschaften der Delete-Aktivität

Weitere Informationen zu den Eigenschaften der Löschaktivität finden Sie unter Löschaktivität.

Legacy-Modelle

Hinweis

Die folgenden Modelle werden aus Gründen der Abwärtskompatibilität weiterhin unverändert unterstützt. Es wird empfohlen, das zuvor beschriebene neue Modell zu verwenden, da auf der Erstellungsbenutzeroberfläche nun das neue Modell generieren wird.

Legacy-Datasetmodell

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft des Datasets muss auf FileShare festgelegt werden. Ja
folderPath Diese Eigenschaft gibt den Pfad zum Ordner an. Ein Platzhalterfilter wird unterstützt. Zulässige Platzhalter sind: * (entspricht 0 oder mehr Zeichen) und ? (entspricht 0 oder einem einzelnen Zeichen). Verwenden Sie ^ als Escapezeichen, wenn Ihr tatsächlicher Dateiname einen Platzhalter oder dieses Escapezeichen enthält.

Beispiele: Stammordner/Unterordner/. Weitere Beispiele finden Sie unter Beispiele für Ordner- und Dateifilter.
Ja
fileName Diese Eigenschaft gibt den Namen oder Platzhalterfilter für die Dateien unter dem angegebenen Wert für „folderPath“ an. Wenn Sie für diese Eigenschaft keinen Wert angeben, verweist das Dataset auf alle Dateien im Ordner.

Für Filter sind folgende Platzhalter zulässig: * (entspricht 0 oder mehr Zeichen) und ? (entspricht 0 oder einem einzelnen Zeichen).
- Beispiel 1: "fileName": "*.csv"
- Beispiel 2: "fileName": "???20180427.txt"
Verwenden Sie ^ als Escapezeichen, wenn der tatsächliche Ordnername einen Platzhalter oder dieses Escapezeichen enthält.
Nein
modifiedDatetimeStart Die Dateien werden anhand des Attributs Zuletzt bearbeitet gefiltert. Die Dateien werden ausgewählt, wenn der Zeitpunkt ihrer letzten Änderung größer als oder gleich modifiedDatetimeStart und kleiner als modifiedDatetimeEnd ist. Die Zeit wird auf die UTC-Zeitzone im Format 2018-12-01T05:00:00Z angewandt.

Beachten Sie, dass die generelle Leistung der Datenverschiebung beeinträchtigt wird, wenn Sie diese Einstellung aktivieren und einen Dateifilter auf eine große Anzahl von Dateien anwenden möchten.

Die Eigenschaften können NULL sein, was bedeutet, dass kein Dateiattributfilter auf das Dataset angewandt wird. Wenn modifiedDatetimeStart einen datetime-Wert aufweist, aber modifiedDatetimeEnd NULL ist, bedeutet dies, dass die Dateien ausgewählt werden, deren Attribut für die letzte Änderung größer oder gleich dem datetime-Wert ist. Wenn modifiedDatetimeEnd einen datetime-Wert aufweist, aber modifiedDatetimeStart NULL ist, bedeutet dies, dass die Dateien ausgewählt werden, deren Attribut für die letzte Änderung kleiner als der datetime-Wert ist.
Nein
modifiedDatetimeEnd Die Dateien werden anhand des Attributs Zuletzt bearbeitet gefiltert. Die Dateien werden ausgewählt, wenn der Zeitpunkt ihrer letzten Änderung größer als oder gleich modifiedDatetimeStart und kleiner als modifiedDatetimeEnd ist. Die Zeit wird auf die UTC-Zeitzone im Format 2018-12-01T05:00:00Z angewandt.

Beachten Sie, dass die generelle Leistung der Datenverschiebung beeinträchtigt wird, wenn Sie diese Einstellung aktivieren und einen Dateifilter auf eine große Anzahl von Dateien anwenden möchten.

Die Eigenschaften können NULL sein, was bedeutet, dass kein Dateiattributfilter auf das Dataset angewandt wird. Wenn modifiedDatetimeStart einen datetime-Wert aufweist, aber modifiedDatetimeEnd NULL ist, bedeutet dies, dass die Dateien ausgewählt werden, deren Attribut für die letzte Änderung größer oder gleich dem datetime-Wert ist. Wenn modifiedDatetimeEnd einen datetime-Wert aufweist, aber modifiedDatetimeStart NULL ist, bedeutet dies, dass die Dateien ausgewählt werden, deren Attribut für die letzte Änderung kleiner als der datetime-Wert ist.
Nein
format Wenn Sie Dateien unverändert zwischen dateibasierten Speichern kopieren möchten (binäre Kopie), überspringen Sie den Formatabschnitt in den Definitionen der Eingabe- und Ausgabedatasets.

Für das Analysieren von Dateien mit einem bestimmten Format werden die folgenden Dateiformattypen unterstützt: TextFormat, JsonFormat, AvroFormat, OrcFormat und ParquetFormat. Sie müssen die type -Eigenschaft unter „format“ auf einen dieser Werte festlegen. Weitere Informationen finden Sie in den Abschnitten Textformat, JSON-Format, Avro-Format, ORC-Format und Parquet-Format.
Nein (nur für Szenarien mit Binärkopien)
compression Geben Sie den Typ und den Grad der Komprimierung für die Daten an. Weitere Informationen finden Sie unter Unterstützte Dateiformate und Codecs für die Komprimierung.
Folgende Typen werden unterstützt: Gzip, Deflate, Bzip2 und ZipDeflate.
Folgende Ebenen werden unterstützt: Optimal und Fastest.
Nein

Tipp

Wenn Sie alle Dateien eines Ordners kopieren möchten, geben Sie nur folderPath an.
Wenn Sie eine einzelne Datei mit einem bestimmten Namen kopieren möchten, geben Sie folderPath mit der Ordnerkomponente und fileName mit dem Dateinamen an.
Wenn Sie eine Teilmenge der Dateien eines Ordners kopieren möchten, geben Sie folderPath mit dem Ordner und fileName mit dem Platzhalterfilter an.

Beispiel:

{
    "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"
            }
        }
    }
}

Legacy-Quellenmodell der Kopieraktivität

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft der Quelle der Kopieraktivität muss auf HdfsSource festgelegt werden. Ja
recursive Gibt an, ob die Daten rekursiv aus den Unterordnern oder nur aus dem angegebenen Ordner gelesen werden. Wenn „recursive“ auf true festgelegt ist und es sich bei der Senke um einen dateibasierten Speicher handelt, wird ein leerer Ordner oder Unterordner nicht in die Senke kopiert oder dort erstellt.
Zulässige Werte sind true (Standard) und false.
Nein
distcpSettings Dies ist die Eigenschaftengruppe bei der Verwendung von HDFS DistCp. Nein
resourceManagerEndpoint Der YARN-Ressourcen-Manager-Endpunkt Ja, wenn DistCp verwendet wird
tempScriptPath Diese Eigenschaft gibt einen Ordnerpfad zum Speichern der temporären DistCp-Befehlsskripts an. Die Skriptdatei wird generiert und nach Abschluss des Copy-Auftrags entfernt. Ja, wenn DistCp verwendet wird
distcpOptions Mit dieser Eigenschaft werden zusätzliche Optionen für den DistCp-Befehl bereitgestellt. Nein
maxConcurrentConnections Die Obergrenze gleichzeitiger Verbindungen mit dem Datenspeicher während der Aktivitätsausführung. Geben Sie diesen Wert nur an, wenn Sie die Anzahl der gleichzeitigen Verbindungen begrenzen möchten. Nein

Beispiel: HDFS-Quelle in der Kopieraktivität unter Verwendung von DistCp

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

Eine Liste der Datenspeicher, die als Quellen und Senken für die Copy-Aktivität unterstützt werden, finden Sie hier Unterstützte Datenspeicher.