Contrôle d'une instance Amazon EMR Spark à l'aide d'un bloc-notes - Amazon SageMaker

Contrôle d'une instance Amazon EMR Spark à l'aide d'un bloc-notes

Vous pouvez utiliser une instance de bloc-notes créée avec un script de configuration de cycle de vie personnalisé pour accéder aux services AWS à partir de votre bloc-notes. Par exemple, vous pouvez créer un script qui vous permet d'utiliser votre bloc-notes avec Sparkmagic pour contrôler d'autres ressources AWS, telles qu'une instance Amazon EMR. Vous pouvez ensuite utiliser l'instance Amazon EMR pour traiter vos données au lieu d'exécuter l'analyse des données sur votre bloc-notes. Cela vous permet de créer une instance de bloc-notes plus petite, car vous n'utilisez pas l'instance pour traiter les données. Cette approche est particulièrement utile lorsque vous disposez de vastes ensembles de données qui nécessiteraient une instance de bloc-notes volumineuse pour traiter les données.

Le processus implique trois étapes avec la console Amazon SageMaker :

  • Création de l'instance Amazon EMR Spark

  • Création du bloc-notes Jupyter

  • Test de la connexion bloc-notes vers Amazon EMR

Pour créer une instance Amazon EMR Spark pouvant être contrôlée à partir d'un bloc-notes à l'aide de Sparkmagic

  1. Ouvrez la console Amazon EMR à l'adresse https://console.aws.amazon.com/elasticmapreduce/.

  2. Dans le volet de navigation, choisissez Create rules (Créer des règles).

  3. Sur la page Create Cluster - Quick Options (Créer un cluster - Options rapides) sous Software configuration (Configuration logicielle), choisissez Spark: Spark 2.4.4 on Hadoop 2.8.5 YARN with Ganglia 3.7.2 and Zeppelin 0.8.2 (Spark : Spark 2.4.4 sur Hadoop 2.8.5 YARN avec Ganglia 3.7.2 et Zeppelin 0.8.2).

  4. Définissez des paramètres supplémentaires sur la page, puis choisissez Create cluster (Créer le cluster).

  5. Sur la page Cluster, choisissez le nom du cluster que vous avez créé. Notez le DNS public maître, le groupe de sécurité du maître EMR, ainsi que le nom du VPC et l'ID de sous-réseau où le cluster EMR a été créé. Vous aurez besoin de ces valeurs lorsque vous créerez un bloc-notes.

Pour créer un bloc-notes qui utilise Sparkmagic pour contrôler une instance Amazon EMR Spark

  1. Ouvrez la console Amazon SageMaker à l'adresse https://console.aws.amazon.com/sagemaker/.https://console.aws.amazon.com/sagemaker/

  2. Dans le volet de navigation, sous Notebook instances (Instances de bloc-notes), choisissez Create notebook (Créer un bloc-notes).

  3. Entrez le nom de l'instance du bloc-notes et choisissez le type d'instance.

  4. Choisissez Additional configuration (Configuration supplémentaire), puis, sous Lifecycle configuration (Configuration du cycle de vie), choisissez Create a new lifecycle configuration (Créer une configuration du cycle de vie).

  5. Ajoutez le code suivant au script de configuration du cycle de vie :

    # OVERVIEW # This script connects an Amazon EMR cluster to an Amazon SageMaker notebook instance that uses Sparkmagic. # # Note that this script will fail if the Amazon EMR cluster's master node IP address is not reachable. # 1. Ensure that the EMR master node IP is resolvable from the notebook instance. # One way to accomplish this is to have the notebook instance and the Amazon EMR cluster in the same subnet. # 2. Ensure the EMR master node security group provides inbound access from the notebook instance security group. # Type - Protocol - Port - Source # Custom TCP - TCP - 8998 - $NOTEBOOK_SECURITY_GROUP # 3. Ensure the notebook instance has internet connectivity to fetch the SparkMagic example config. # # https://aws.amazon.com/blogs/machine-learning/build-amazon-sagemaker-notebooks-backed-by-spark-in-amazon-emr/ # PARAMETERS EMR_MASTER_IP=your.emr.master.ip cd /home/ec2-user/.sparkmagic echo "Fetching Sparkmagic example config from GitHub..." wget https://raw.githubusercontent.com/jupyter-incubator/sparkmagic/master/sparkmagic/example_config.json echo "Replacing EMR master node IP in Sparkmagic config..." sed -i -- "s/localhost/$EMR_MASTER_IP/g" example_config.json mv example_config.json config.json echo "Sending a sample request to Livy.." curl "$EMR_MASTER_IP:8998/sessions"
  6. Dans la section PARAMETERS du script, remplacez your.emr.master.ip par le nom de serveur DNS public du nœud principal de l'instance Amazon EMR.

  7. Choisissez Create configuration (Créer une configuration).

  8. Sur la page Create notebook (Créer un bloc-notes), choisissez Network - optional (Réseau - facultatif).

  9. Choisissez le VPC et le sous-réseau où se trouve l'instance Amazon EMR.

  10. Choisissez le groupe de sécurité utilisé par le nœud principal Amazon EMR.

  11. Choisissez Créer une instance de bloc-notes.

Pendant la création de l'instance de bloc-notes, le statut indique Pending (En attente). Une fois l'instance créée et le script de configuration du cycle de vie exécuté avec succès, l'état passe à InService (En service).

Note

Si l'instance de bloc-notes ne parvient pas à se connecter à l'instance Amazon EMR, SageMaker ne peut pas créer l'instance de bloc-notes. La connexion peut échouer si l'instance Amazon EMR et le bloc-notes ne sont pas dans le même VPC et le même sous-réseau, si le groupe de sécurité Amazon EMR principal n'est pas utilisé par le bloc-notes ou si le nom DNS public principal dans le script est incorrect.

Pour tester la connexion entre l'instance Amazon EMR et le bloc-notes

  1. Lorsque l'état du bloc-notes est InService (En service), choisissez Open Jupyter (Ouvrir Jupyter) pour ouvrir le bloc-notes.

  2. Choisissez New (Nouveau), puis choisissez Sparkmagic (PySpark).

  3. Dans la cellule de code, entrez %%info et exécutez-la.

    La sortie doit ressembler à ce qui suit.

    Current session configs: {'driverMemory': '1000M', 'executorCores': 2, 'kind': 'pyspark'}
                        No active sessions.