Maximieren des Parallelismus für Mappings und Profile
Wenn Sie über die Partitionierungsoption verfügen, können Sie den Datenintegrationsdienst aktivieren, um den Parallelismus beim Ausführen von Mappings oder Spaltenprofilen bzw. bei der Datendomänenerkennung zu maximieren. Beim Maximieren des Parallelismus unterteilt der Datenintegrationsdienst die zugrunde liegenden Daten dynamisch in Partitionen und verarbeitet alle Partitionen gleichzeitig.
HINWEIS: Wenn Sie einen Profiljob ausführen, konvertiert der Datenintegrationsdienst den Profiljob in ein oder mehrere Mappings und kann diese Mappings dann in mehreren Partitionen ausführen.
Wenn Mappings umfangreiche Datasets verarbeiten oder Umwandlungen enthalten, die komplizierte Berechnungen durchführen, kann die Mapping-Verarbeitung viel Zeit in Anspruch nehmen und einen geringen Datendurchsatz zur Folge haben. Wenn Sie Partitionierung für diese Mappings aktivieren, verwendet der Datenintegrationsdienst zusätzliche Threads zum Verarbeiten des Mappings. Durch eine Erhöhung der Anzahl der Verarbeitungs-Threads steigt die Last auf dem Knoten, auf dem das Mapping ausgeführt wird. Wenn der Knoten eine ausreichende CPU-Bandbreite aufweist, kann die gleichzeitige Verarbeitung von Datenzeilen in einem Mapping die Mapping-Leistung optimieren.
Standardmäßig wird die Eigenschaft Maximaler Parallelismus für den Datenintegrationsdienst auf 1 festgelegt. Wenn der Datenintegrationsdienst ein Mapping ausführt, unterteilt er das Mapping in Pipeline-Stages und verwendet einen Thread zum Verarbeiten aller Stages. Diese Threads werden zum Lesen, Umwandeln und Schreiben von Aufgaben zugewiesen und parallel ausgeführt.
Wenn Sie den Wert für den maximalen Parallelismus erhöhen, aktivieren Sie die Partitionierung. Der Datenintegrationsdienst verwendet mehrere Threads, um alle Pipeline-Stages zu verarbeiten.
Der Datenintegrationsdienst kann Partitionen für Mappings mit physischen Daten als Eingabe und Ausgabe erstellen. Zudem kann der Datenintegrationsdienst mehrere Partitionen verwenden, um während der Ausführung eines Mappings die folgenden Aktionen auszuführen:
- •Lesen aus Einfachdatei-, IBM DB2 für LUW- oder Oracle-Quellen.
- •Ausführen von Umwandlungen.
- •Schreiben in Einfachdatei-, IBM DB2 für LUW- oder Oracle-Ziele.
Ein Thread für jede Pipeline-Stage
Wenn der maximale Parallelismus auf 1 festgelegt ist, so ist die Partitionierung deaktiviert. Der Datenintegrationsdienst trennt ein Mapping in Pipeline-Stages und verwendet einen Reader-Thread, einen Umwandlungs-Thread und einen Writer-Thread zur Verarbeitung jeder Stage.
Jedes Mapping enthält eine oder mehrere Pipelines. Eine Pipeline besteht aus einer Leseumwandlung und sämtlichen Umwandlungen, die Daten aus dieser Leseumwandlung empfangen. Der Datenintegrationsdienst teilt eine Mapping-Pipeline in Pipeline-Stages auf und führt dann Extrahierung, Umwandlung und Laden für jede Pipeline-Stage parallel durch.
Partitionspunkte markieren die Grenzen in einer Pipeline und teilen die Pipeline in Stages ein. Der Datenintegrationsdienst fügt für jede Mapping-Pipeline hinter der Leseumwandlung und vor der Schreibumwandlung einen Partitionspunkt ein, um mehrere Pipeline-Stages zu erstellen.
Jede Pipeline-Stage wird in einem der folgenden Threads ausgeführt:
- •Reader-Thread, das die vom Datenintegrationsdienst durchgeführte Extrahierung von Daten aus der Quelle steuert.
- •Umwandlungs-Thread, das die vom Datenintegrationsdienst durchgeführte Verarbeitung von Daten in der Pipeline steuert.
- •Writer-Thread, das den vom Datenintegrationsdienst durchgeführten Vorgang zum Laden von Daten in das Ziel steuert.
Die folgende Abbildung zeigt ein Mapping, das in eine Reader-, eine Umwandlungs- und eine Writer-Pipeline-Stage aufgeteilt wurde:
Da die Pipeline drei Stages enthält, kann der Datenintegrationsdienst gleichzeitig drei Zeilensätze verarbeiten und die Mapping-Leistung steigern. Während der Reader-Thread beispielsweise den dritten Zeilensatz verarbeitet, verarbeitet der Umwandlungs-Thread den zweiten Zeilensatz und der Writer-Thread den ersten Zeilensatz.
Die folgende Tabelle zeigt, wie mehrere Threads gleichzeitig drei Zeilensätze verarbeiten können:
Reader-Thread | Umwandlungs-Thread | Writer-Thread |
|---|
Zeilensatz 1 | - | - |
Zeilensatz 2 | Zeilensatz 1 | - |
Zeilensatz 3 | Zeilensatz 2 | Zeilensatz 1 |
Zeilensatz 4 | Zeilensatz 3 | Zeilensatz 2 |
Zeilensatz n | Zeilensatz (n-1) | Zeilensatz (n-2) |
Enthält die Mapping-Pipeline Umwandlungen, die komplizierte Berechnungen durchführen, kann die Verarbeitung der Umwandlungs-Pipeline-Stage sehr viel Zeit in Anspruch nehmen. Zur Optimierung der Leistung fügt der Datenintegrationsdienst Partitionspunkte vor bestimmten Umwandlungen ein, um eine weitere Umwandlungs-Pipeline-Stage zu erstellen.
Mehrere Threads für jede Pipeline-Stage
Ist der maximale Parallelismus auf einen Wert größer als 1 festgelegt, so ist die Partitionierung aktiviert. Der Datenintegrationsdienst unterteilt ein Mapping in Pipeline-Stages und verwendet mehrere Threads zur Verarbeitung der einzelnen Stages.
Wenn Sie Parallelismus maximieren, führt der Datenintegrationsdienst dynamisch folgende Aufgaben zur Laufzeit aus:
- Aufteilen der Daten in Partitionen.
- Der Datenintegrationsdienst teilt die zugrunde liegenden Daten dynamisch in Partitionen auf und führt die Partitionen gleichzeitig aus. Der Datenintegrationsdienst bestimmt die optimale Anzahl der Threads für jede Pipeline-Stage. Die Anzahl der für eine einzelne Pipeline-Stage verwendeten Threads darf nicht größer als der maximale Parallelismuswert sein. Der Datenintegrationsdienst kann eine unterschiedliche Anzahl von Threads für jede Pipeline-Stage verwenden.
- Verteilt Daten auf Partitionspunkten neu.
- Der Datenintegrationsdienst legt basierend auf den Umwandlungsanforderungen dynamisch die beste Methode zur Neuverteilung der Daten auf einem Partitionspunkt fest.
Die folgende Abbildung zeigt ein Beispiel-Mapping, das Daten für jede Pipeline-Stage auf mehrere Partitionen verteilt:
In der vorherigen Abbildung beläuft sich der maximale Parallelismus für den Datenintegrationsdienst auf drei. Der maximale Parallelismus für das Mapping ist „Auto“. Der Datenintegrationsdienst trennt die Mappings in vier Pipeline-Stages und verwendet zum Ausführen des Mappings insgesamt 12 Threads. Der Datenintegrationsdienst führt in jeder Pipeline-Stage die folgenden Aufgaben durch:
- •In der Reader-Pipeline-Stage fragt der Datenintegrationsdienst das Oracle-Datenbanksystem ab, um zu ermitteln, ob beide Quelltabellen, Quelle A und Quelle B, über zwei Datenbankpartitionen verfügen. Der Datenintegrationsdienst verwendet einen Reader-Thread pro Datenbankpartition.
- •In der ersten Umwandlungs-Pipeline-Stage verteilt der Datenintegrationsdienst die Daten neu, um Zeilen für die Join-Bedingung auf zwei Threads zu verteilen.
- •In der zweiten Umwandlungs-Pipeline-Stage legt der Datenintegrationsdienst fest, dass drei Threads optimal für die Aggregatorumwandlung sind. Der Dienst verteilt die Daten neu, um Zeilen für den Aggregatausdruck auf drei Threads zu verteilen.
- •In der Writer-Pipeline-Stage muss der Datenintegrationsdienst die Zeilen auf dem Zielpartitionspunkt nicht neu verteilen. Alle Zeilen in einer einzelnen Partition verbleiben in dieser Partition, nachdem der Zielpartitionspunkt überschritten wurde.
Richtlinien für maximalen Parallelismus
Maximaler Parallelismus bestimmt die maximale Zahl paralleler Threads, die einen einzelnen Pipeline-Abschnitt verarbeiten können. Konfigurieren Sie die Eigenschaft Maximaler Parallelismus für den Datenintegrationsdienst basierend auf den verfügbaren Hardware-Ressourcen. Sie können möglicherweise die Verarbeitungsdauer verringern, indem Sie den Wert für den maximalen Parallelismus erhöhen.
Beachten Sie beim Konfigurieren des maximalen Parallelismus die folgenden Richtlinien:
- Erhöhen Sie den Wert basierend auf der Anzahl der verfügbaren CPUs.
Erhöhen Sie den Wert für den maximalen Parallelismus basierend auf der Anzahl der CPUs, die auf den Knoten verfügbar sind, auf denen Mappings ausgeführt werden. Wenn Sie den Wert für den maximalen Parallelismus erhöhen, verwendet der Datenintegrationsdienst mehr Threads zur Ausführung von Mappings und nutzt mehr CPUs. Eine einfache Zuordnung wird in zwei Partitionen schneller ausgeführt, erfordert aber in der Regel die zweifache Menge an CPUs im Vergleich zur Ausführung der Zuordnung in einer einzelnen Partition.
- Beachten Sie die Gesamtanzahl der Verarbeitungs-Threads.
Beachten Sie die Gesamtanzahl der Verarbeitungs-Threads, wenn Sie den Wert für den maximalen Parallelismus festlegen. Wenn ein komplexes Mapping zu mehreren zusätzlichen Partitionspunkten führt, verwendet der Datenintegrationsdienst möglicherweise mehr Verarbeitungs-Threads, als die CPU verarbeiten kann.
Die Gesamtanzahl der Verarbeitungs-Threads ist gleich dem maximalen Parallelismuswert.
- Beachten Sie die anderen Jobs, die der Datenintegrationsdienst ausführen muss.
- Wenn Sie den maximalen Parallelismus so konfigurieren, dass jedes Mapping eine große Anzahl von Threads verwendet, sind für den Datenintegrationsdienst weniger Threads zur Ausführung zusätzlicher Jobs verfügbar.
- Optional können Sie den Wert für ein Mapping ändern.
Standardmäßig ist der maximale Parallelismus für jedes Mapping auf „Auto“ gesetzt. Jedes Mapping verwendet den für den Datenintegrationsdienst definierten Wert für maximalen Parallelismus.
Im Developer Tool können Entwickler den Wert für den maximalen Parallelismus in den Laufzeiteigenschaften des Mappings ändern, um einen maximalen Wert für ein bestimmtes Mapping zu definieren. Wenn der maximale Parallelismus für den Datenintegrationsdienst und das Mapping auf zwei unterschiedliche Ganzzahlwerte festgelegt wurde, verwendet der Datenintegrationsdienst den Mindestwert.
HINWEIS: Sie können den maximalen Parallelismuswert für Profile nicht mit dem Developer Tool ändern. Wenn der Datenintegrationsdienst einen Profiljob in ein oder mehrere Mappings konvertiert, verwenden die Mappings für den maximalen Mapping-Parallelismuswert immer die Einstellung „Auto“.
Aktivieren der Partitionierung für Mappings und Profile
Zum Aktivieren der Partitionierung für Mappings, Spaltenprofile und Datendomänenerkennung legen Sie den maximalen Parallelismus für den Datenintegrationsdienst auf einen Wert größer als 1 fest.
1Klicken Sie im Administrator Tool auf die Registerkarte Verwalten > Ansicht Dienste und Knoten.
2Wählen Sie im Domänennavigator den Datenintegrationsdienst aus.
3Klicken Sie im Inhaltsbereich auf die Ansicht Eigenschaften.
4Klicken Sie im Bereich Ausführungsoptionen auf Bearbeiten.
5Geben Sie für die Eigenschaft Maximaler Parallelismus einen Wert größer als 1 ein.
6Klicken Sie auf OK.
7Recyclen Sie den Datenintegrationsdienst, um die Änderungen zu übernehmen.
Optimieren von Cache- und Zielverzeichnissen für die Partitionierung
Konfigurieren Sie mehrere Cache-Verzeichnisse für den Datenintegrationsdienst, um während der Cache-Partitionierung eine optimale Leistung für Aggregator-, Joiner-, Rang- und Sortiererumwandlungen zu erzielen. Wenn mehrere Threads in ein Dateiziel schreiben, konfigurieren Sie mehrere Zielverzeichnisse für den Datenintegrationsdienst, um eine optimale Leistung zu erzielen.
Wenn mehrere Threads in ein einziges Verzeichnis schreiben, kann das Mapping aufgrund eines E/A-Konflikts auf einen Engpass stoßen. Ein E/A-Konflikt kann auftreten, wenn Threads Daten gleichzeitig in das Dateisystem schreiben.
Wenn Sie mehrere Verzeichnisse konfigurieren, legt der Datenintegrationsdienst das Ausgabeverzeichnis für jeden Thread im Round Robin-Verfahren fest. Sie konfigurieren beispielsweise ein Einfachdatei-Datenobjekt, um VerzeichnisA und VerzeichnisB als Zielverzeichnisse zu verwenden. Wenn der Datenintegrationsdienst vier Threads zum Schreiben in die Zieldatei verwendet, schreiben der erste und der dritte Writer-Thread Zieldateien in VerzeichnisA. Der zweite und vierte Writer-Thread schreiben Zieldateien in VerzeichnisB.
Wenn der Datenintegrationsdienst keine Cache-Partitionierung für Umwandlungen bzw. nicht mehrere Threads zum Schreiben in das Ziel verwendet, schreibt der Dienst die Dateien in das erste aufgelistete Verzeichnis.
Im Administrator Tool konfigurieren Sie mehrere Cache-Verzeichnisse und Zielverzeichnisse, indem Sie mehrere durch Semikola getrennte Verzeichnisse für die Ausführungseigenschaften des Datenintegrationsdiensts eingeben. Konfigurieren Sie die Verzeichnisse in den folgenden Ausführungseigenschaften:
- Cache-Verzeichnis
- Definiert die Cache-Verzeichnisse für Aggregator-, Joiner- und Rangumwandlungen. Die Umwandlungen greifen standardmäßig mithilfe des Systemparameters „CacheDir“ auf den im Datenintegrationsdienst definierten Cache-Verzeichniswert zu.
- Temporäre Verzeichnisse
- Definiert die Cache-Verzeichnisse für Sortiererumwandlungen. Die Sortiererumwandlungen greifen standardmäßig mithilfe des Systemparameters „TempDir“ auf den für den Datenintegrationsdienst definierten Wert im temporären Verzeichnis zu.
- Zielverzeichnis
- Definiert die Zielverzeichnisse für Einfachdateiziele. Die Einfachdateiziele greifen standardmäßig mithilfe des Systemparameters „TargetDir“ auf den für den Datenintegrationsdienst definierten Zielverzeichniswert zu.
Entwickler können mehrere für die Umwandlung bzw. das Einfachdatei-Datenobjekt im Developer Tool spezifische Verzeichnisse konfigurieren, statt die standardmäßigen Systemparameter zu verwenden.
HINWEIS: Eine Lookup-Umwandlung kann nur ein einziges Cache-Verzeichnis verwenden.