2017-02-06 3 views
1

Dites que votre cluster spark qui s'exécute sur Amazon EMR doit accéder à une base de données postgresql. Quel est le meilleur moyen de lui donner son identifiant et son mot de passe? Ce sont des moyens que nous avons essayé:Comment passer les mots de passe à étincelle sur EMR

  • Avez fichier de configuration sur S3 avec des informations (pas idéal puisque le mot de passe est en clair sur S3)
  • passer comme variable d'environnement comme une partie d'étincelles env sur Paramètres EMR (ne fonctionne pas puisque les exécuteurs n'ont pas accès aux variables d'environnement.) Il peut être défini dans spark config avec spark.executorEnv. [EnvironmentVariableName], mais cela nécessiterait une nouvelle saisie du mot de passe dans le fichier spark config devrait également être en S3).

Y at-il un meilleur moyen qui me manque?

Répondre

0

Vous pouvez utiliser les métadonnées d'instance EC2 pour augmenter le secret de chaque instance ec2, utilisez les appels GET pour le récupérer. Idéalement, créez un login/mot de passe valable uniquement pour la durée de vie du cluster EMR, en le supprimant (ou au moins en réinitialisant le mot de passe) après l'avoir détruit.

AFAIK il n'y a pas un soutien explicite à cet effet dans Spark, mais si vous obtenez le SDK AWS sur le chemin de classe, vous pouvez utiliser EC2MetadataUtils pour travailler avec elle

+0

Y at-il des documents sur la façon de pousser les métadonnées EC2 instance? Je n'ai rien trouvé. – user2944397