Les clusters Dataproc peuvent être provisionnés avec une image personnalisée incluant les packages pré-installés de l'utilisateur. Les étapes suivantes expliquent comment créer une image personnalisée et l'installer sur un cluster Dataproc.
Notes :
- Les instructions de ce document ne s'appliquent qu'aux systèmes d'exploitation Linux. D'autres systèmes d'exploitation pourraient être compatibles dans les prochaines releases de Dataproc.
- Pour créer des images personnalisées, vous devez commencer par une image de base Dataproc ( Images de base Debian, Rocky Linux et Ubuntu ne sont pas pris en charge).
- Utiliser des composants facultatifs Par défaut, les images personnalisées héritent de tous les Composants Dataproc facultatifs (Packages et configurations de système d'exploitation) à partir de leurs images de base. Vous pouvez personnaliser les versions et les configurations de package du système d'exploitation par défaut, mais vous devez spécifier le nom du composant facultatif lorsque vous créez votre cluster (par exemple, en exécutant la commande
gcloud dataproc clusters create --optional-components=COMPONENT_NAME
– voir Ajouter des composants facultatifs). Si le nom du composant n'est pas spécifié lors de la création du cluster, le composant (y compris les packages et configurations d'OS personnalisés) est supprimé. <ph type="x-smartling-placeholder">
Avant de commencer
Configurer votre projet
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API, Compute Engine API, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API, Compute Engine API, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Installez Python 3.11+
- Préparez un script de personnalisation qui installe des packages personnalisés et/ou met à jour les configurations, par exemple :
#! /usr/bin/bash apt-get -y update apt-get install python-dev apt-get install python-pip pip install numpy
Créer un bucket Cloud Storage dans votre projet
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
- For Name your bucket, enter a name that meets the bucket naming requirements.
-
For Choose where to store your data, do the following:
- Select a Location type option.
- Select a Location option.
- For Choose a default storage class for your data, select a storage class.
- For Choose how to control access to objects, select an Access control option.
- For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
- Click Create.
Générer une image personnalisée
Pour créer une image personnalisée Dataproc, vous allez utiliser generate_custom_image.py, un programme Python.
Fonctionnement
Le programme generate_custom_image.py
lance une instance de VM Compute Engine temporaire avec l'image de base Dataproc spécifiée, puis exécute le script de personnalisation dans l'instance de VM pour installer des packages personnalisés et/ou mettre à jour les configurations. Une fois le script de personnalisation terminé, il arrête l'instance de VM et crée une image Dataproc personnalisée à partir du disque de l'instance de VM. La VM temporaire est supprimée après la création de l'image personnalisée. L'image personnalisée est enregistrée et peut être utilisée pour créer des clusters Dataproc.
Le programme generate_custom_image.py
utilise gcloud CLI
pour exécuter des workflows en plusieurs étapes sur Compute Engine.
Exécuter le code
Divisez ou clonez les fichiers sur GitHub dans Images personnalisées Dataproc.
Exécutez ensuite le programme generate_custom_image.py
pour que Dataproc génère et enregistre votre image personnalisée.
python3 generate_custom_image.py \ --image-name=CUSTOM_IMAGE_NAME \ [--family=CUSTOM_IMAGE_FAMILY_NAME] \ --dataproc-version=IMAGE_VERSION \ --customization-script=LOCAL_PATH \ --zone=ZONE \ --gcs-bucket=gs://BUCKET_NAME \ [--no-smoke-test]
Indicateurs requis
--image-name
: nom de sortie de votre image personnalisée. Remarque : Le nom de l'image doit correspondre à l'expression régulière[a-z](?:[-a-z0-9]{0,61}[a-z0-9])
(par exemple, pas de traits de soulignement ni d'espaces de moins de 64 caractères).--dataproc-version
: version de l'image Dataproc à utiliser dans votre image personnalisée. Spécifiez la version dans "x.y.z-os" ou "x.y.z-rc-os" le format, par exemple, "2.0.69-debian10".--customization-script
: chemin d'accès local au script que l'outil exécutera pour installer vos packages personnalisés ou effectuer d'autres personnalisations. Veuillez prendre en compte que ce script n'est exécuté que sur la VM temporaire permettant de créer l'image personnalisée. Vous pouvez spécifier un script d'initialisation différent pour toutes les autres actions d'initialisation que vous souhaitez effectuer lorsque vous créez un cluster avec votre image personnalisée.--zone
: zone Compute Engine oùgenerate_custom_image.py
va créer une VM temporaire à utiliser pour créer votre image personnalisée.--gcs-bucket
: URI, au formatgs://BUCKET_NAME
, qui pointe vers le bucket Cloud Storage que vous avez créé dans la section Créer un bucket Cloud Storage dans votre projet.generate_custom_image.py
va écrire des fichiers journaux dans ce bucket.
Indicateurs facultatifs
--family
: famille de l'image. Les familles d'images permettent de regrouper des images similaires et peuvent être utilisées lors de la création d'un cluster en tant que pointeur vers l'image la plus récente de la famille. Par exemple, "custom-1-5-debian10".--no-smoke-test
: option facultative qui désactive le test de confiance de l'image personnalisée nouvellement créée. Le test de confiance crée un cluster de test Dataproc avec l'image nouvellement créée, exécute une petite tâche, puis supprime le cluster à la fin du test. Le test de confiance s'exécute par défaut pour vérifier que l'image personnalisée nouvellement créée est en mesure de créer un cluster Dataproc fonctionnel. La désactivation de cette étape à l'aide de l'option--no-smoke-test
accélère le processus de création d'image personnalisée, mais son utilisation n'est pas recommandée.--subnet
: sous-réseau à utiliser pour créer la VM qui crée l'image Dataproc personnalisée. Si votre projet fait partie d'un VPC partagé, vous devez spécifier l'URL complète du sous-réseau au format suivant :projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
.
Pour obtenir la liste des indicateurs facultatifs supplémentaires, consultez Arguments facultatifs sur GitHub.
Si generate_custom_image.py
aboutit, le imageURI
de l'image personnalisée est répertorié dans le résultat de la fenêtre du terminal (le imageUri
complet est affiché en gras ci-dessous) :
... managedCluster: clusterName: verify-image-20180614213641-8308a4cd config: gceClusterConfig: zoneUri: ZONE masterConfig: imageUri: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME ... INFO:__main__:Successfully built Dataproc custom image: CUSTOM_IMAGE_NAME INFO:__main__: ##################################################################### WARNING: DATAPROC CUSTOM IMAGE 'CUSTOM_IMAGE_NAME' WILL EXPIRE ON 2018-07-14 21:35:44.133000. #####################################################################
Libellés des versions d'images personnalisées pour les utilisateurs avancés
Lorsque vous utilisez l'outil standard de création d'image personnalisée de Dataproc, un libellé goog-dataproc-version
obligatoire est automatiquement défini sur l'image personnalisée créée. Le libellé reflète les fonctionnalités et les protocoles de la caractéristique utilisés par Dataproc pour gérer le logiciel sur l'image.
Les utilisateurs avancés qui utilisent leur propre processus pour créer une image Dataproc personnalisée doivent ajouter le libellé manuellement à leur image personnalisée, comme suit :
Extrayez le libellé
goog-dataproc-version
de l'image Dataproc de base utilisée pour créer l'image personnalisée.gcloud compute images describe ${BASE_DATAPROC_IMAGE} \ --project cloud-dataproc \ --format="value(labels.goog-dataproc-version)"
Définissez le libellé sur l'image personnalisée.
gcloud compute images add-labels IMAGE_NAME --labels=[KEY=VALUE,...]
Utiliser une image personnalisée
Vous spécifiez l'image personnalisée lorsque vous créez un cluster Dataproc. Une image personnalisée est enregistrée dans les Images Cloud Compute. Elle permet de créer un cluster Dataproc pendant 365 jours à compter de sa date de création (consultez la section Créer un cluster avec une image personnalisée arrivée à expiration si vous souhaitez utiliser une image personnalisée au-delà de cette période de 365 jours).
URI de l'image personnalisée
Vous transmettez l'URI de l'image personnalisée imageUri
à l'opération de création de cluster.
Cet URI peut être spécifié de l'une des trois manières suivantes :
- URI complet :
https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/`gs://`BUCKET_NAME`
- URI partiel :
projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME
- Nom abrégé : CUSTOM_IMAGE_NAME
Les images personnalisées peuvent également être spécifiées par leur URI de famille, qui choisit toujours l'image la plus récente de la famille d'images.
- URI complet :
https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/family/CUSTOM_IMAGE_FAMILY_NAME/var>
- URI partiel :
projects/PROJECT_ID/global/images/family/CUSTOM_IMAGE_FAMILY_NAME
Pour trouver l'URI de l'image personnalisée, procédez comme suit :
Commande gcloud
Exécutez la commande gcloud
suivante pour répertorier les noms de vos images personnalisées :
gcloud compute images list
Transmettez le nom de votre image personnalisée à la commande gcloud
suivante pour répertorier l'URI (selfLink
) de votre image personnalisée :
gcloud compute images describe custom-image-name
... name: CUSTOM_IMAGE_NAME selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME ...
Console
- Ouvrez le Compute Engine→Images de la console Google Cloud, puis cliquez sur le nom de l'image. Vous pouvez insérer une requête dans la zone de texte filter-images pour limiter le nombre d'images affichées.
- La page des détails d'images s'affiche. Cliquez sur Équivalent REST.
- La réponse REST répertorie des informations supplémentaires sur l'image, y compris
selfLink
, qui est l'URI de l'image.{ ... "name": "my-custom-image", "selfLink": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME", "sourceDisk": ..., ... }
Créer un cluster avec une image personnalisée
Vous pouvez créer un cluster avec des nœuds maîtres et des nœuds de calcul qui utilisent une image personnalisée avec l'outil de ligne de commande gcloud
, l'API Dataproc ou la console Google Cloud.
Commande gcloud
Vous pouvez créer un cluster Dataproc avec une image personnalisée à l'aide de la commande dataproc clusters create et l'option--image
.
Exemple :
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM_IMAGE_URI \ --region=REGION \ ... other flags ...
API REST
Vous pouvez créer un cluster avec une image personnalisée en spécifiant un URI d'image personnalisé dans le champ InstanceGroupConfig.imageUri des objetsmasterConfig
, workerConfig
et, le cas échéant, secondaryWorkerConfig
inclus dans une requête d'API cluster.create.Exemple : requête REST pour créer un cluster Dataproc standard (un maître, deux nœuds de calcul) avec une image personnalisée.
POST /v1/projects/PROJECT_ID/regions/REGION/clusters/ { "clusterName": "CLUSTER_NAME", "config": { "masterConfig": { "imageUri": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME" }, "workerConfig": { "imageUri": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME" } } }
Console
- Dans la console Google Cloud, ouvrez la page Dataproc Créer un cluster. Le panneau "Configurer un cluster" est sélectionné.
- Dans la section "Gestion des versions", cliquez sur MODIFIER. Sélectionnez l'onglet IMAGE PERSONNALISÉE, choisissez l'image personnalisée à utiliser pour votre cluster Dataproc, puis cliquez sur SÉLECTIONNER.
Lorsque vous envoyez le formulaire Créer un cluster, les VM de votre cluster seront provisionnées avec l'image personnalisée sélectionnée.
Remplacer les propriétés de cluster Dataproc par une image personnalisée
Vous pouvez utiliser des images personnalisées pour écraser toutes les propriétés de cluster définies lors de la création du cluster. Si un utilisateur crée un cluster avec votre image personnalisée, mais définit des propriétés de cluster différentes de celles que vous avez définies avec l'image personnalisée, vos paramètres de propriété des clusters d'images personnalisées sont prioritaires.
Pour définir les propriétés de cluster avec votre image personnalisée :
- Dans votre script de personnalisation d'image personnalisée, créez un fichier
dataproc.custom.properties
dans/etc/google-dataproc
, puis définissez les valeurs de propriété du cluster dans le fichier.- Exemple de contenu de fichier
dataproc.custom.properties
:dataproc.conscrypt.provider.enable=VALUE dataproc.logging.stackdriver.enable=VALUE
- Exemple de contenu de fichier
Exemple d'extrait de fichier de création de script de personnalisation pour remplacer deux propriétés de cluster :
cat <<EOF >/etc/google-dataproc/dataproc.custom.properties dataproc.conscrypt.provider.enable=true dataproc.logging.stackdriver.enable=false EOF
Créer un cluster avec une image personnalisée arrivée à expiration
Par défaut, les images personnalisées expirent 365 jours après leur date de création. Pour créer un cluster utilisant une image personnalisée arrivée à expiration, procédez comme suit :
Essayez de créer un cluster Dataproc avec une image personnalisée arrivée à expiration ou qui expirera dans les 10 jours.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM-IMAGE-NAME \ --region=REGION \ ... other flags ...
La gcloud CLI génère un message d'erreur incluant le paramètre nom de la propriété du cluster
dataproc:dataproc.custom.image.expiration.token
et la valeur du jeton. Copiez la valeur du jeton dans le presse-papiers.dataproc:dataproc.custom.image.expiration.token=TOKEN_VALUE
Utilisez la gcloud CLI pour recréer le cluster Dataproc. en ajoutant la "valeur du jeton" copiée ci-dessus en tant que propriété de cluster.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM-IMAGE-NAME \ --properties=dataproc:dataproc.custom.image.expiration.token=TOKEN_VALUE \ --region=REGION \ ... other flags ...
La création du cluster avec l'image personnalisée devrait réussir.