Plug-in Apache Spark - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Plug-in Apache Spark

Amazon EMR a intégré l'EMR afin de fournir un contrôle d'accès précis RecordServer pour SparkSQL. L'EMR RecordServer est un processus privilégié qui s'exécute sur tous les nœuds d'un cluster compatible avec Apache Ranger. Lorsqu'un pilote ou un exécuteur Spark exécute une instruction SparkSQL, toutes les métadonnées et demandes de données passent par le. RecordServer Pour en savoir plus sur l'EMR RecordServer, consultez la Composants d'Amazon EMR page.

Fonctionnalités prises en charge

Instruction SQL/action Ranger STATUS Version EMR pris en charge

SELECT

Pris en charge

À partir de 5.32

SHOW DATABASES

Pris en charge

À partir de 5.32

SHOW COLUMNS

Pris en charge

À partir de 5.32

SHOW TABLES

Pris en charge

À partir de 5.32

SHOW TABLE PROPERTIES

Pris en charge

À partir de 5.32

DESCRIBE TABLE

Pris en charge

À partir de 5.32

INSERT OVERWRITE

Pris en charge

À partir de 5.34 et 6.4

INSERT INTO Pris en charge À partir de 5.34 et 6.4

ALTER TABLE

Pris en charge

À partir de 6.4

CREATE TABLE

Pris en charge

Àpartir de 5.35 et 6.7

CREATE DATABASE

Pris en charge

Àpartir de 5.35 et 6.7

DROP TABLE

Pris en charge

Àpartir de 5.35 et 6.7

DROP DATABASE

Pris en charge

Àpartir de 5.35 et 6.7

DROP VIEW

Pris en charge

Àpartir de 5.35 et 6.7

CREATE VIEW

Non pris en charge

Les fonctionnalités suivantes sont prises en charge lors de l'utilisation de SparkSQL :

  • Un contrôle d'accès précis sur les tables du métastore Hive et des politiques peuvent être créées au niveau de la base de données, de la table et de la colonne.

  • Les politiques Apache Ranger peuvent inclure des politiques d'octroi et de refus pour les utilisateurs et les groupes.

  • Les événements d'audit sont soumis à CloudWatch Logs.

Redéployer la définition du service pour utiliser les instructions INSERT, ALTER ou DDL

Note

À partir d'Amazon EMR 6.4, vous pouvez utiliser Spark SQL avec les instructions : INSERT INTO, INSERT OVERWRITE ou ALTER TABLE. À partir d'Amazon EMR 6.7, vous pouvez utiliser Spark SQL pour créer ou supprimer des bases de données et des tables. Si vous disposez d'une installation existante sur le serveur Apache Ranger avec des définitions de service Apache Spark déployées, utilisez le code suivant pour redéployer les définitions de service.

# 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 de la définition du service

L'installation de la définition du service Apache Spark d'EMR nécessite la configuration du serveur d'administration Ranger. veuillez consulter Configuration du serveur d'administration Ranger.

Pour installer la définition du service Apache Spark, procédez comme suit :

Étape 1 : connexion SSH au serveur d'administration Apache Ranger

Par exemple :

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

Étape 2 : téléchargez la définition du service et le plug-in du serveur d'administration Apache Ranger

Dans un répertoire temporaire, téléchargez la définition de service. Cette définition de service est prise en charge par les versions 2.x de Ranger.

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

Étape 3 : installez le plug-in Apache Spark pour 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

Étape 4 : enregistrez la définition du service Apache Spark pour 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'

Si cette commande s'exécute correctement, un nouveau service appelé « AMAZON-EMR-SPARK » s'affiche dans votre interface utilisateur d'administration de Ranger, comme indiqué dans l'image suivante (la version 2.0 de Ranger est illustrée).

« AMAZON-EMR-SPARK » est enregistré dans Ranger Admin.

Étape 5 : créez une instance de l'application AMAZON-EMR-SPARK

Nom du service (s'il est affiché) : nom du service qui sera utilisé. La valeur suggérée est amazonemrspark. Notez le nom de ce service car il sera nécessaire lors de la création d'une configuration de sécurité EMR.

Nom d'affichage : nom à afficher pour cette instance. La valeur suggérée est amazonemrspark.

Nom commun du certificat : champ CN du certificat utilisé pour se connecter au serveur d'administration à partir d'un plug-in client. Cette valeur doit correspondre au champ CN de votre certificat TLS créé pour le plug-in.

Ranger Admin : service de création.
Note

Le certificat TLS pour ce plug-in doit avoir été enregistré dans le magasin de confiance sur le serveur Ranger Admin. Pour plus d’informations, consultez Certificat TLS.

Création de politiques SparkSQL

Lors de la création d'une nouvelle politique, les champs à remplir sont les suivants :

Nom de politique : le nom de cette politique.

Étiquette de politique : une étiquette que vous pouvez attribuer à cette politique.

Base de données : base de données à laquelle cette politique s'applique. Le caractère générique « * » représente toutes les bases de données.

Table : les tables auxquelles cette politique s'applique. Le caractère générique "*" représente toutes les tables.

Colonne EMR Spark : colonnes auxquelles s'applique cette politique. Le caractère générique "*" représente toutes les colonnes.

Description : description de cette stratégie.

Ranger Admin : détails de la politique de création de SparkSQL.

Pour spécifier les utilisateurs et les groupes, entrez les utilisateurs et les groupes ci-dessous pour accorder des autorisations. Vous pouvez également spécifier des exclusions pour les conditions autoriser et refuser.

Ranger Admin : détails de la politique SparkSQL, conditions d'autorisation.

Après avoir spécifié les conditions d'autorisation et de refus, cliquez sur Enregistrer.

Considérations

Chaque nœud du cluster EMR doit être en mesure de se connecter au nœud principal sur le port 9083.

Limites

Les limitations actuelles du plug-in Apache Spark sont les suivantes :

  • Le serveur d'enregistrement se connecte toujours à HMS s'exécutant sur un cluster Amazon EMR. Configurez HMS pour qu'il se connecte au mode distant, si nécessaire. Vous ne devez pas placer de valeurs de configuration dans le fichier de configuration Hive-site.xml d'Apache Spark.

  • Les tableaux créés à l'aide de sources de données Spark au format CSV ou Avro ne sont pas lisibles à l'aide de l'EMR. RecordServer Utilisez Hive pour créer et écrire des données, et lisez avec Record.

  • Les tables Delta Lake et Hudi ne sont pas prises en charge.

  • Les utilisateurs doivent avoir accès à la base de données par défaut. C'est une exigence pour Apache Spark.

  • Le serveur Ranger Admin ne prend pas en charge l'auto-complétion.

  • Le plug-in SparkSQL pour Amazon EMR ne prend pas en charge les filtres de lignes ni le masquage des données.

  • Lorsque vous utilisez ALTER TABLE avec Spark SQL, l'emplacement d'une partition doit être le répertoire enfant d'un emplacement de table. L'insertion de données dans une partition dont l'emplacement est différent de celui de la table n'est pas prise en charge.