Integration von Apache Hadoop/Hive und SAP HANA

Überblick

Sensordaten, Wetterinformationen, Bilder, Videos und andere inhomogene Informationen stellen einen Albtraum für jede Systemlandschaft dar. Am Ende steht die Frage: Wie sollen die durch eine Digitalisierungsstrategie anfallenden Daten in die bestehende, oder geplante Systemlandschaft integriert werden? Eine mögliche Lösung ist die Kombination der Filebasierten Speicherung von Massendaten in einem Hadoop Filesystem und der relationalen Auswertung dieser Daten in einem standardisierten SAP Kontext auf Basis der SAP HANA Datenbank.

../Graph/Hadoop_HANA_Integration_Overview.png

Abbildung 1: Hadoop Integration Architektur Überblick

Die Verbindung beider Welten erfolgt über eine Kombination aus Apache Hive, einem Tool um nichtstrukturierte in strukturierte Information zu transformieren und dem SAP Dataprovisioning (DP-) Agent, der die Schnittstelle zu SAP HANA bereitstellt. Im HANA Kontext wird diese Variante der Datenintegration als Smart Data Access bezeichnet.

Hadoop/Hive Einführung

Die Basis des Hadoop Ökosystems bildet das Hadoop Filesystem (HDFS). Dieses wurde für die Anforderungen entwickelt, inhomogene Daten jeder Größe auf normaler Hardware zu speichern und auszuwerten. Um dies Umzusetzen gibt es im HDFS zwei Arten von Nodes. Name Nodes mit den Informationen wo Daten gespeichert sind und Data Nodes, welche die Daten speichern.

Abbildung 2: Kommunikation im HDFS

Um Daten strukturiert/relational verarbeiten zu können ist es nötig, eine Metaebene über dem HDFS aufzubauen, welche Informationen über die innere Struktur der Files trägt. Dies kann mit dem Hive Framework umgesetzt werden, welches die Hadoop eigenen Ressourcen bzgl. der Datenprozessierung, wie MapReduce nutzt, und somit dem Nutzer eine SQL ähnliche Schnittstelle bereitstellt.

Abbildung 3: Hive Ausführen eines Jobs

Durch die Erstellung einer Metaebene müssen die im HDFS gespeicherten Daten nicht dupliziert werden, da die Informationen über die Datenstruktur im Meta Store gespeichert werden. Diese Informationen, werden bei der Ausführung einer Query für die Transformation der Daten von unstrukturierter in strukturierte Form genutzt.

Mit dem Architekturbild (Abb. 1) vor Augen, ist die Erstellung einer Hive Tabelle, vor allem eine SQL-ähnliche Aufgabe. Als Beispiel dient ein Wetterdatensatz, bestehend aus *.csv Dateien. Dieser ist im HDFS abgespeichert.

Abbildung 4: Ordnerstruktur der Daten

Abbildung 5: Ordnerinhalt für den Flughafen EDDL

Die Dateien enthalten gängige Wetterinformationen wie z. B. Temperaturen, Niederschläge etc. pro Tag für die jeweiligen Messstationen.

Abbildung 6: Datenstruktur der Wetterdaten

Die Tabelle wird über die Hive UI mit folgender Query generiert:

CREATE EXTERNAL TABLE test.weather (
ID INT
,DATE_ STRING
,Max_TemperatureC DOUBLE
,Mean_TemperatureC DOUBLE
,Min_TemperatureC DOUBLE
,Dew_PointC DOUBLE
,MeanDew_PointC DOUBLE
,Min_DewpointC DOUBLE
,Max_Humidity DOUBLE
,Mean_Humidity DOUBLE
,Min_Humidity DOUBLE
,Max_Sea_Level_PressurehPa DOUBLE
,Mean_Sea_Level_PressurehPa DOUBLE
,Min_Sea_Level_PressurehPa DOUBLE
,Max_VisibilityKm DOUBLE
,Mean_VisibilityKm DOUBLE
,Min_VisibilitykM DOUBLE
,Max_Wind_SpeedKm_h DOUBLE
,Mean_Wind_SpeedKm_h DOUBLE
,Max_Gust_SpeedKm_h DOUBLE
,Precipitationmm DOUBLE
,CloudCover DOUBLE
,Events DOUBLE
,WindDirDegrees DOUBLE
,Station STRING)
PARTITIONED BY (airport STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 'hdfs:/user/analytics/'
TBLPROPERTIES ("skip.header.line.count"="1");

Die Operation für die Tabellenerstellung gliedert sich in folgende Schritte

  • Definition der Variablen
  • Definition der Partitionierung
  • Definition der Datenstruktur in den Files
  • Ort der Files im HDFS
  • Befehl zum Überspringen der ersten Zeile in jeder Datei

Mit diesem Befehl wird die Metastruktur der Tabelle erzeugt. Des Weiteren wird eine Partitionierung definiert, mit der es möglich ist, die Effizienz der Abfragen zu steigern. Die Partitionierung erfolgt über die Partitionierungsvariable airport.

Abbildung 7: Hive UI

Nach der Erstellung der Tabelle ist die Partitionierungsvariable noch nicht gefüllt.

Abbildung 8: Abfrage der Tabellenpartitionen

Um die Partitionen automatisiert zu füllen oder zu erweitern muss die Query:

MSCK REPAIR TABEL test.weather;

ausgeführt werden. Dabei wird die Partitionierung aus der Ordnerstruktur neu generiert.

Abbildung 9: Generierung der Partitionen und Ergebnisse

Werden der Ordnerstruktur neue Daten hinzugefügt, stehen diese direkt bei Abfragen bereit. Wird hingegen die Ordnerstruktur erweitert, muss die Partitionierung neu generiert werden.

Starten des DP-Servers in der SAP HANA

Für die Nutzung des Smart Data Access ist es nötig, den DP-Server in der SAP HANA zu starten. Dies erfolgt über das Konfigurationsmenü des HANA Servers, im HANA Studio.

Abbildung 10: Aktivieren des DP-Servers

Nachdem die Einstellungen des DP-Servers angepasst wurden, sollte unter Landscape der Prozess dpserver erscheinen. Der Start des Services kann einige Minuten in Anspruch nehmen.

Abbildung 11: Prozessübersicht im HANA Studio

Installation und Einrichtung Data Provisioning Agent

Der Data Provisioning Agent stellt das Bindeglied zwischen der Hive Schnittstelle und der SAP HANA Datenbank dar. Er verwaltet die Verbindung zu Hive und gibt die erhaltenen Daten über eine TCP Verbindung, an SAP HANA weiter. Der DP-Agent selber, sollte laut SAP nicht auf der gleichen Instanz wie SAP HANA installiert werden. Somit bestehen zwei mögliche Installationsszenarien:

  • die Installation auf einer separaten Instanz
  • die Installation auf einer Instanz des Hadoop Clusters.

Download

Der Data Provisioning Agent kann über das SAP Softwarecenter heruntergeladen werden: https://launchpad.support.sap.com/#/softwarecenter/

Das entscheidende Suchwort ist „dp agent“ unter der Kategorie Downloads. Danach kann in der Liste von Suchergebnissen, die passende Architektur gewählt werden. In unserem Beispiel, wurde der DP-Agent auf einem Linux 64bit System installiert.

Abbildung 12: Link zum Download des DP Agents

Installation

Nach dem Download, muss die *.SAR Datei mit dem Tool SAPCAR.EXE entpackt werden. Dieses wird ebenfalls im Softwarecenter zum Download angeboten. Sind die Dateien auf die Linux Instanz kopiert, kann die DP-Agent Datei wie folgt entpackt werden:

# ./SAPCAR_914-80000935.EXE –xvf IMDBDPAGENT10003P_110-70000174.SAR

Sollte die SAPCAR.EXE nicht starten, muss diese noch ausführbar gemacht werden.

# sudo chmod u+x SAPCAR_914-80000935.EXE

Nach dem Entpacken wir zur Installation der Ordner gewechselt

# cd HANA_DP_AGENT_20_LIN_X86_64/

Jetzt kann über

# ./hdbinst

die Installation gestartet werden.

Einrichten

Nach Abschluss der Installation ist es möglich in den Applikationsordner zu wechseln.

# cd /usr/sap/dataprovagent/

Um den DP-Agent starten zu können, muss zunächst der User dpagent angelegt werden.

# useradd dpagent

# passwd dpagent

Nun kann der dpagent gestartet werden.

# ./dpagent

Die Anwendung läuft in diesem Fall im Vordergrund. D.h. der Gesamte Output wird in die Konsole geschrieben.

Um den Konfigurator zu starten, muss eine neue Konsole geöffnet werden. Dann mit dem Befehl

# cd /usr/sap/dataprovagent/bin/

in den Ordner des Konfigurationstools wechseln. Bevor das Tool gestartet werden kann, muss noch die Umgebungsvariable DPA_INSTANCE gesetzt werden.

# export DPA_INSTANCE=/usr/sap/dataprovagent

Jetzt kann das Tool mit

# sh agentcli.sh --configAgent

gestartet werden.

Nach dem Start des Konfigurationstools muss eine Verbindung zur SAP HANA Datenbank hergestellt werden. Hierzu mit 5 in das SAP HANA Connection Menü wechseln und mit 2 eine TCP Verbindung erstellen.

Abbildung 13: SAP HANA Verbindung herstellen

Nachdem die Verbindung zur SAP HANA hergestellt wurde, kann der DP Agent in der Datenbank registriert werden.

Abbildung 14: DP Agent Registrierung

Nachdem der Agent erfolgreich registriert wurde, kann im nachfolgenden Schritt, der Hive Adapter registriert werden. Im Adapter Menü können über die Option 1 die mit dem DP-Agent ausgelieferten Adapter angezeigt werden.

Abbildung 15: DP-Agent Adapter Übersicht

Mit der Option 2 kann der Adapter in der SAP HANA registriert werden.

Abbildung 16: HiveAdapter registrieren

Um die Installation des DP Agents abzuschließen, müssen noch die passenden Hive JDBC Treiber in den Ordner

/usr/sap/dataprovagent/lib

kopiert werden. Die JDBC Treiber werden mit der passenden Hive Version mitgeliefert. Diese können unter https://hive.apache.org/downloads.html heruntergeladen werden. Die passenden Treiber sind dann im Archiv im Ordner

apache-hive-<Version>-bin/lib/

gespeichert.

Nach dem Kopieren der *.jar Files müssen folgende Dateien im DP-Agent Ordner vorhanden sein:

Abbildung 17: Hive Treiber im Library Ordner

Verbindung von SAP HANA zu Hive

Nachdem der Data Provisoning Agent an der HANA Datenbank registriert wurde, kann im nächsten Schritt, die Verbindung im HANA Studio zum Hive Server konfiguriert werden. Dazu wird unter DATENBANK >> Provisioning >> Remote Source >> New Remote Source… eine neue Quelle angelegt.

Abbildung : Hinzufügen einer neuen Smart Data Access Verbindung

Für die Konfiguration der Verbindung ist es zuerst nötig, der Verbindung einen Namen zu geben, einen Adapter und eine Source Location auszuwählen.

Abbildung : Adapter wählen

Der Adapter Name muss auf „HiveAdapter“ gesetzt werden. Die Source Location ist durch den Server gegeben, auf welchem der DP-Agent läuft. Wichtig ist an dieser Stelle, das nicht der „indexserver“ gewählt ist. In diesem Fall, wäre der DP-Agent nicht richtig an der Hana registriert.

Im zweiten Schritt können die Verbindungsdetails konfiguriert werden. Hierzu wird unter Connection der Verbindung zum Hive Server konfiguriert. Der Host kann per DNS Eintrag oder über die IP Adresse gewählt werden. Der Hive Standard Port ist 10000. Die Datenbank wird je nach Datenbankdefinition in Hive spezifiziert. Im Beispielfall geht die Verbindung auf die Datenbank test. Die Hive Version wird durch den installierten Treiber bestimmt, welcher wiederrum zur Hive Version auf dem Hive Server passen muss. Der String für die Version wird durch den Namen der *.jar Dateien bestimmt. Im Beispiel ist es die 1.2.1

Abbildung : Name des Hive Treibers im Filesystem

Nach der Konfiguration der anderen Parameter, muss noch der in Hive konfigurierte Nutzer und das Passwort eingegeben werden.

Abbildung : Konfiguration der Hive Verbindung

Wenn die Verbindung fertig spezifiziert wurde, kann die Konfiguration deployed werden.

Abbildung : Start des Deployments

Wenn das Deployment fehlerfrei abgelaufen ist, sollten zwei Logausgaben über die erfolgreiche Einrichtung informieren.

Abbildung : Logausgabe nach Deployment der Verbindung

Zugriffe auf Hive Tabellen über die SAP Hana

Um auf Tabellen aus der neu konfigurierten Verbindung zugreifen zu können, müssen virtuelle Tabellen in der SAP HANA angelegt werden. Dies ist über einen Rechtklick auf die Tabelle unter dem Schema in der Remote Source Verbindung möglich.

Abbildung : Hinzufügen einer virtuellen Tabelle

Um eine virtuelle Tabelle anzulegen, müssen Tabellenname und Zielschema definiert werden.

Abbildung : Letzte Konfiguration der virtuellen Tabelle

Die so erstellte Tabelle, ist jetzt im Schema als virtuelle Tabelle sichtbar:

Abbildung : Virtuelle Tabelle im Schema

Nutzung von virtuellen Hive Tabellen

Virtuelle Tabellen sind im Funktionsumfang gegenüber nativen Hana Tabellen und Views beschränkt. Es ist bspw. nicht möglich, GROUP BY Operationen auszuführen. Auch können WHERE Klauseln nur auf Partitionen angewendet werden. Im Beispiel ist die Partition der Key “airport“. Mithilfe dieses Keys kann die Größe des Datentransportes optimiert werden.

Abbildung : Quere mit WHERE Statment auf Patition

Um Daten aus der virtuellen Tabellen z.B. im SAP BO Design Studio als Datengrundlage zu nutzen, können Views angelegt werden. Dabei gilt die Einschränkung, dass nur Calculation Views auf virtuellen Tabellen erzeugt werden können.

Zusammenfassung

Der Smart Data Access der SAP Hana bietet die Möglichkeit, die unstrukturierte mit der strukturierten Welt über Hive und den DP-Agent zu verbinden. Durch die Anwendung der Stärken von Hadoop und Hive, wie etwa die automatische Partitionierung von Tabellen durch eine HDFS Ordnerstruktur, ist es möglich, in SAP Hana auf Datensätze zuzugreifen, welche physisch in einem HDFS gespeichert sind. Diese können effizient abgefragt, in Analysen integriert und an andere SAP Produkte weitergereicht werden.

Getagged mit: , , , , , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

*