Apache Spark Plugin - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Apache Spark Plugin

Amazon EMR hat integriert EMR RecordServer , um eine differenzierte Zugriffskontrolle für Spark bereitzustellen. SQL EMR's RecordServer ist ein privilegierter Prozess, der auf allen Knoten eines Apache Ranger-fähigen Clusters ausgeführt wird. Wenn ein Spark-Treiber oder -Executor eine SQL Spark-Anweisung ausführt, durchlaufen alle Metadaten und Datenanfragen den. RecordServer Weitere Informationen EMR RecordServer dazu finden Sie auf der EMRAmazon-Komponenten Seite.

Unterstützte Features

SQLAuskunft/Aktion des Rangers STATUS Unterstützte Version EMR

SELECT

Unterstützt

Ab 5.32

SHOW DATABASES

Unterstützt

Ab 5.32

SHOW COLUMNS

Unterstützt

Ab 5.32

SHOW TABLES

Unterstützt

Ab 5.32

SHOW TABLE PROPERTIES

Unterstützt

Ab 5.32

DESCRIBE TABLE

Unterstützt

Ab 5.32

INSERT OVERWRITE

Unterstützt

Ab 5.34 und 6.4

INSERT INTO Unterstützt Ab 5.34 und 6.4

ALTER TABLE

Unterstützt

Ab 6.4

CREATE TABLE

Unterstützt

Ab 5.35 und 6.7

CREATE DATABASE

Unterstützt

Ab 5.35 und 6.7

DROP TABLE

Unterstützt

Ab 5.35 und 6.7

DROP DATABASE

Unterstützt

Ab 5.35 und 6.7

DROP VIEW

Unterstützt

Ab 5.35 und 6.7

CREATE VIEW

Nicht unterstützt

Die folgenden Funktionen werden bei der Verwendung von Spark unterstütztSQL:

  • Eine detaillierte Zugriffskontrolle für Tabellen im Hive-Metastore und Richtlinien können auf Datenbank-, Tabellen- und Spaltenebene erstellt werden.

  • Die Richtlinien von Apache Ranger können Richtlinien für die Gewährung und die Ablehnung von Benutzern und Gruppen beinhalten.

  • Prüfereignisse werden an CloudWatch Logs übermittelt.

Stellen Sie die Servicedefinition erneut bereit, um Anweisungen INSERTALTER, oder DDL zu verwenden

Anmerkung

Ab Amazon EMR 6.4 können Sie Spark SQL mit den Anweisungen: INSERT INTO INSERTOVERWRITE, oder verwenden ALTERTABLE. Ab Amazon EMR 6.7 können Sie Spark verwenden, SQL um Datenbanken und Tabellen zu erstellen oder zu löschen. Wenn Sie bereits über eine Installation auf dem Apache Ranger-Server mit bereitgestellten Apache Spark-Servicedefinitionen verfügen, verwenden Sie den folgenden Code, um die Servicedefinitionen erneut bereitzustellen.

# Get existing Spark service definition id calling Ranger REST API and JSON processor curl --silent -f -u <admin_user_login>:<password_for_ranger_admin_user> \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/name/amazon-emr-spark' | jq .id # Download the latest Service definition wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-spark.json # Update the service definition using the Ranger REST API curl -u <admin_user_login>:<password_for_ranger_admin_user> -X PUT -d @ranger-servicedef-amazon-emr-spark.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/<Spark service definition id from step 1>'

Installation der Servicedefinition

Für die Installation EMR der Apache Spark-Servicedefinition muss der Ranger Admin-Server eingerichtet werden. Siehe Richten Sie den Ranger-Admin-Server ein.

Gehen Sie wie folgt vor, um die Apache-Spark-Servicedefinition zu installieren:

Schritt 1: SSH In den Apache Ranger Admin-Server

Beispielsweise:

ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal

Schritt 2: Die Servicedefinition und das Apache-Ranger-Admin-Server-Plugin herunterladen

Laden Sie die Servicedefinition in einem temporären Verzeichnis herunter. Diese Servicedefinition wird von Ranger-2.x-Versionen unterstützt.

mkdir /tmp/emr-spark-plugin/ cd /tmp/emr-spark-plugin/ wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-spark-plugin-2.x.jar wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-spark.json

Schritt 3: Installieren Sie das Apache Spark-Plugin für Amazon EMR

export RANGER_HOME=.. # Replace this Ranger Admin's home directory eg /usr/lib/ranger/ranger-2.0.0-admin mkdir $RANGER_HOME/ews/webapp/WEB-INF/classes/ranger-plugins/amazon-emr-spark mv ranger-spark-plugin-2.x.jar $RANGER_HOME/ews/webapp/WEB-INF/classes/ranger-plugins/amazon-emr-spark

Schritt 4: Registrieren Sie die Apache Spark-Servicedefinition für Amazon EMR

curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-spark.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'

Wenn dieser Befehl erfolgreich ausgeführt wird, sehen Sie in Ihrer Ranger-Admin-Benutzeroberfläche einen neuen Dienst namens "AMAZON- EMR - SPARK „, wie in der folgenden Abbildung gezeigt (Ranger-Version 2.0 wird gezeigt).

"AMAZON- EMR -SPARK" ist in Ranger Admin registriert.

Schritt 5: Erstellen Sie eine Instanz der AMAZON - EMR - SPARK -Anwendung

Servicename (falls angezeigt): Der Servicename, der verwendet wird. Der vorgeschlagene Wert ist amazonemrspark. Notieren Sie sich diesen Dienstnamen, da er bei der Erstellung einer EMR Sicherheitskonfiguration benötigt wird.

Anzeigename: Der Name, der für diese Instance angezeigt werden soll. Der vorgeschlagene Wert ist amazonemrspark.

Allgemeiner Name für das Zertifikat: Das CN-Feld innerhalb des Zertifikats, das verwendet wird, um von einem Client-Plugin aus eine Verbindung zum Admin-Server herzustellen. Dieser Wert muss mit dem CN-Feld in Ihrem TLS Zertifikat übereinstimmen, das für das Plugin erstellt wurde.

Ranger-Admin erstellt einen Service.
Anmerkung

Das TLS Zertifikat für dieses Plugin sollte im Trust Store auf dem Ranger Admin-Server registriert worden sein. Weitere Details finden Sie unter TLSZertifikate.

SQLSpark-Richtlinien erstellen

Beim Erstellen einer neuen Richtlinie müssen folgende Felder ausgefüllt werden:

Richtlinienname: Der Name dieser Richtlinie.

Richtlinienbezeichnung: Eine Bezeichnung, die Sie dieser Richtlinie hinzufügen können.

Datenbank: Die Datenbank, für die diese Richtlinie gilt. Der Platzhalter „*“ steht für alle Tabellen.

Tabelle: Die Tabellen, für die diese Richtlinie gilt. Der Platzhalter „*“ steht für alle Tabellen.

EMRSpark-Spalte: Die Spalten, für die diese Richtlinie gilt. Der Platzhalter „*“ steht für alle Spalten.

Beschreibung: Eine Beschreibung dieser Richtlinie.

Ranger Admin erstellt SQL Spark-Richtliniendetails.

Um die Benutzer und Gruppen anzugeben, geben Sie die Benutzer und Gruppen unten ein, um Berechtigungen zu erteilen. Sie können auch Ausnahmen für die Bedingungen Zulassen und Verweigern angeben.

Ranger Admin SQL Spark-Richtliniendetails ermöglichen Bedingungen.

Nachdem Sie die Bedingungen für das Zulassen und Verweigern angegeben haben, klicken Sie auf Speichern.

Überlegungen

Jeder Knoten innerhalb des EMR Clusters muss in der Lage sein, eine Verbindung zum Hauptknoten auf Port 9083 herzustellen.

Einschränkungen

Die folgenden Einschränkungen gelten derzeit für das Apache-Spark-Plugin:

  • Der Record Server stellt immer eine Verbindung zur HMS Ausführung auf einem EMR Amazon-Cluster her. Konfigurieren HMS Sie bei Bedarf die Verbindung zum Remote-Modus. Sie sollten keine Konfigurationswerte in die Apache-Spark-Konfigurationsdatei Hive-site.xml einfügen.

  • Tabellen, die mit Spark-Datenquellen auf CSV oder Avro erstellt wurden, können mit nicht gelesen werden. EMR RecordServer Verwenden Sie Hive, um Daten zu erstellen und zu schreiben, und lesen Sie sie mit Record.

  • Delta Lake- und Hudi-Tabellen werden nicht unterstützt.

  • Benutzer müssen Zugriff auf die Standarddatenbank haben. Dies ist eine Voraussetzung für Apache Spark.

  • Der Ranger-Admin-Server unterstützt die automatische Vervollständigung nicht.

  • Das SQL Spark-Plugin für Amazon unterstützt EMR keine Zeilenfilter oder Datenmaskierung.

  • Bei der Verwendung ALTER TABLE mit Spark SQL muss ein Partitionsspeicherort das untergeordnete Verzeichnis einer Tabellenposition sein. Das Einfügen von Daten in eine Partition, deren Partitionsspeicherort sich von der Tabellenposition unterscheidet, wird nicht unterstützt.