Il provisioning dei cluster Dataproc può essere eseguito immagine personalizzata che includa i pacchetti preinstallati di un utente. I passaggi seguenti spiegano come creare un personalizzata e installarla su un cluster Dataproc.
Note:
- Le istruzioni in questo documento si applicano ai contratti operativi Linux solo per i sistemi informatici. In futuro potrebbero essere supportati altri sistemi operativi Release di Dataproc.
- Le build di immagini personalizzate richiedono di iniziare da un'immagine base Dataproc ( Immagini di base Debian, Rocky Linux e Ubuntu sono supportati).
- Con i componenti facoltativi: per impostazione predefinita, le immagini personalizzate ereditano tutti
Componenti facoltativi di Dataproc
(pacchetti e configurazioni del sistema operativo) dalle immagini di base,
personalizzare le versioni e le configurazioni predefinite dei pacchetti del sistema operativo, ma è necessario specificare
il nome del componente facoltativo quando crei il cluster (ad esempio,
eseguendo
gcloud dataproc clusters create --optional-components=COMPONENT_NAME
: vedi il comando Aggiunta di componenti facoltativi). Se il nome del componente non è specificato al momento della creazione del cluster, (inclusi eventuali pacchetti e configurazioni del sistema operativo personalizzati) verrà eliminato.
Prima di iniziare
Configura il progetto
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Dataproc API, Compute Engine API, and Cloud Storage.
- 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.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Dataproc API, Compute Engine API, and Cloud Storage.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Installa Python 3.11 o versioni successive
- Prepara uno script di personalizzazione che installi i pacchetti personalizzati e/o
configurazioni degli aggiornamenti, ad esempio:
#! /usr/bin/bash apt-get -y update apt-get install python-dev apt-get install python-pip pip install numpy
Crea un bucket Cloud Storage nel tuo progetto
- Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.
- Fai clic su Crea bucket.
- Nella pagina Crea un bucket, inserisci le informazioni del bucket. Per andare al passaggio successivo, fai clic su Continua.
- In Assegna un nome al bucket, inserisci un nome che soddisfi i requisiti di denominazione dei bucket.
-
Per Scegli dove archiviare i tuoi dati, segui questi passaggi:
- Seleziona un'opzione Tipo di località.
- Seleziona un'opzione Località.
- In Scegli una classe di archiviazione predefinita per i dati, seleziona una classe di archiviazione.
- Per Scegli come controllare l'accesso agli oggetti, seleziona un'opzione Controllo dell'accesso.
- In Impostazioni avanzate (facoltative), specifica un metodo di crittografia, un criterio di conservazione o le etichette dei bucket.
- Fai clic su Crea.
Genera un'immagine personalizzata
Utilizzerai generate_custom_image.py, un programma Python per creare un'immagine personalizzata di Dataproc.
Come funziona
Il programma generate_custom_image.py
avvia un'istanza temporanea
Istanza VM di Compute Engine con il valore Dataproc specificato
di base, quindi esegue lo script di personalizzazione all'interno dell'istanza VM per installare
e/o aggiornare le configurazioni. Dopo lo script di personalizzazione
viene arrestata, arresta l'istanza VM e crea una configurazione
dal disco dell'istanza VM. La VM temporanea viene eliminata dopo
viene creata un'immagine personalizzata. L'immagine personalizzata viene salvata e può essere utilizzata
creare cluster Dataproc.
Il programma generate_custom_image.py
utilizza gcloud CLI
per eseguire flussi di lavoro in più passaggi su Compute Engine.
Esegui il codice
Crea un fork o clona i file su GitHub nella sezione Immagini personalizzate di Dataproc.
Poi esegui il programma generate_custom_image.py
per fare in modo che Dataproc generi
e salva l'immagine personalizzata.
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]
Flag obbligatori
--image-name
: il nome dell'output dell'immagine personalizzata. Nota: il nome dell'immagine. deve corrispondere all'espressione regolare[a-z](?:[-a-z0-9]{0,61}[a-z0-9])
, ad esempio senza trattini bassi o spazi, meno di 64 caratteri.--dataproc-version
: la versione immagine Dataproc da utilizzare nell'immagine personalizzata. Specifica la versione in "x.y.z-os" o "x.y.z-rc-os" formato predefinito, ad esempio "2.0.69-debian10".--customization-script
: un percorso locale dello script che lo strumento eseguirà per installare i pacchetti personalizzati o eseguire altre personalizzazioni. Tieni presente che questo script viene eseguito solo sulla VM temporanea utilizzata per creare l'immagine personalizzata. Puoi specificare uno script di inizializzazione diverso per qualsiasi altra azione di inizializzazione che vuoi eseguire quando crei un cluster con la tua immagine personalizzata.--zone
: la zona di Compute Engine dovegenerate_custom_image.py
creerà una VM temporanea da utilizzare per creare la tua immagine personalizzata.--gcs-bucket
: un URI nel formatogs://BUCKET_NAME
, che indirizza al bucket Cloud Storage che hai creato nel passaggio Crea un bucket Cloud Storage nel progetto.generate_custom_image.py
scriverà i file di log in questo bucket.
Flag facoltativi
--family
: la famiglia di immagini per l'immagine. Le famiglie di immagini vengono utilizzate per raggruppare immagini simili e possono essere utilizzati durante la creazione di un cluster come puntatore l'immagine più recente della famiglia. Ad esempio, "custom-1-5-debian10".--no-smoke-test
: questo è un flag facoltativo che disattiva i test di fumo un'immagine personalizzata appena creata. Il test di fumo crea un test Dataproc con l'immagine appena creata, esegue un piccolo job e poi elimina cluster al termine del test. Il test di fumo viene eseguito per impostazione predefinita che l'immagine personalizzata appena creata può creare un progetto Dataproc funzionale in un cluster Kubernetes. Se disabiliti questo passaggio utilizzando il flag--no-smoke-test
, velocizza il processo di compilazione dell'immagine personalizzata, ma il suo utilizzo è sconsigliato.--subnet
: la subnet da utilizzare per creare la VM che crea l'immagine Dataproc personalizzata. Se il tuo progetto fa parte di In un VPC condiviso, devi specificare l'URL completo della subnet nel seguente formato:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
.
Per un elenco di flag facoltativi aggiuntivi, vedi Argomenti facoltativi su GitHub.
Se generate_custom_image.py
ha esito positivo, imageURI
dell'immagine personalizzata
essere elencato nell'output della finestra del terminale (l'intero imageUri
è mostrato in grassetto sotto):
... 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. #####################################################################
Etichette delle versioni dell'immagine personalizzate per utenti avanzati
Quando si utilizza lo strumento
per immagini personalizzate standard di Dataproc,
imposta automaticamente un'etichetta goog-dataproc-version
obbligatoria sul
personalizzata. L'etichetta riflette le funzionalità e i protocolli utilizzati
Dataproc per gestire il software nell'immagine.
Utenti avanzati che usano il proprio processo per creare un progetto Dataproc personalizzato un'immagine deve aggiungere manualmente l'etichetta all'immagine personalizzata, nel seguente modo:
Estrai l'etichetta
goog-dataproc-version
da Dataproc di base utilizzata per creare l'immagine personalizzata.gcloud compute images describe ${BASE_DATAPROC_IMAGE} \ --project cloud-dataproc \ --format="value(labels.goog-dataproc-version)"
Imposta l'etichetta sull'immagine personalizzata.
gcloud compute images add-labels IMAGE_NAME --labels=[KEY=VALUE,...]
Utilizza un'immagine personalizzata
Puoi specificare l'immagine personalizzata quando crei un cluster Dataproc. Un'immagine personalizzata è stata salvata in Cloud Compute Images e è valida per creare un cluster Dataproc per 365 giorni dal suo data di creazione (vedi Come creare un cluster con un'immagine personalizzata scaduta per utilizzare un'immagine personalizzata dopo la data di scadenza di 365 giorni).
URI immagine personalizzato
Passi il valore imageUri
dell'immagine personalizzata all'operazione di creazione del cluster.
Questo URI può essere specificato in tre modi:
- URI completo:
https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/`gs://`BUCKET_NAME`
- URI parziale:
projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME
- Nome breve: CUSTOM_IMAGE_NAME
Le immagini personalizzate possono essere specificate anche tramite l'URI della famiglia, che sceglie sempre l'immagine più recente all'interno della famiglia di immagini.
- URI completo:
https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/family/CUSTOM_IMAGE_FAMILY_NAME/var>
- URI parziale:
projects/PROJECT_ID/global/images/family/CUSTOM_IMAGE_FAMILY_NAME
Come trovare l'URI dell'immagine personalizzato
Comando gcloud
Esegui questo comando gcloud
per elencare i nomi delle tue immagini personalizzate:
gcloud compute images list
Passa il nome della tua immagine personalizzata al seguente comando gcloud
per elencare
l'URI (selfLink
) dell'immagine personalizzata:
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
- Apri l'app Compute Engine→Immagini nella console Google Cloud e fai clic sul nome dell'immagine. Puoi inserire una query nella casella di testo delle immagini con filtro per limitare il numero delle immagini visualizzate.
- Si apre la pagina dei dettagli dell'immagine. Fai clic su REST equivalente.
- La risposta REST elenca ulteriori informazioni sull'immagine, tra cui
selfLink
, che è l'URI dell'immagine.{ ... "name": "my-custom-image", "selfLink": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME", "sourceDisk": ..., ... }
Crea un cluster con un'immagine personalizzata
Puoi creare un cluster con
nodi master e worker che utilizzano un'immagine personalizzata con la riga di comando gcloud
lo strumento Google Cloud, l'API Dataproc o la console Google Cloud.
Comando gcloud
Puoi creare un cluster Dataproc con un'immagine personalizzata utilizzando Comando di creazione dei cluster dataproc con il flag--image
.
Esempio:
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM_IMAGE_URI \ --region=REGION \ ... other flags ...
API REST
Puoi creare un cluster con un'immagine personalizzata specificando un URI dell'immagine personalizzata nel InstanceGroupConfig.imageUri nel campomasterConfig
, workerConfig
e, se applicabile,
secondaryWorkerConfig
oggetto incluso in un
cluster.create
richiesta API.
Esempio: richiesta REST per creare uno standard Cluster Dataproc (un master, due nodi worker) con un'architettura dell'immagine.
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
- Nella console Google Cloud, apri Dataproc Crea un cluster . Il riquadro Configura cluster è selezionato.
- Nella sezione Controllo delle versioni, fai clic su MODIFICA. Seleziona la scheda IMMAGINE PERSONALIZZATA, scegli l'immagine personalizzata da utilizzare per il cluster Dataproc, quindi fai clic su SELEZIONA.
Quando invii il modulo Crea un cluster, le VM del cluster di cui è stato eseguito il provisioning con l'immagine personalizzata selezionata.
Esegui l'override delle proprietà del cluster Dataproc con un'immagine personalizzata
Puoi utilizzare immagini personalizzate per sovrascrivere proprietà del cluster durante la creazione del cluster. Se un utente crea un cluster con ma imposta proprietà del cluster diverse da quelle impostate con la tua immagine personalizzata, le impostazioni delle proprietà del cluster di immagini personalizzate hanno la precedenza.
Per impostare le proprietà del cluster con un'immagine personalizzata:
- Nell'immagine personalizzata
script di personalizzazione,
creare un file
dataproc.custom.properties
in/etc/google-dataproc
, quindi Impostare i valori delle proprietà del cluster nel file.- Contenuti di esempio del file
dataproc.custom.properties
:dataproc.conscrypt.provider.enable=VALUE dataproc.logging.stackdriver.enable=VALUE
- Contenuti di esempio del file
Esempio di snippet per la creazione di file dello script di personalizzazione per sostituire due proprietà del cluster:
cat <<EOF >/etc/google-dataproc/dataproc.custom.properties dataproc.conscrypt.provider.enable=true dataproc.logging.stackdriver.enable=false EOF
Come creare un cluster con un'immagine personalizzata scaduta
Per impostazione predefinita, le immagini personalizzate scadono 365 giorni dopo la data di creazione dell'immagine. Puoi creare un cluster che utilizza un'immagine personalizzata scaduta completando i seguenti passaggi.
Tentativo di creare un cluster Dataproc con un account personalizzato scaduto un'immagine personalizzata o un'immagine personalizzata che scadrà entro 10 giorni.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM-IMAGE-NAME \ --region=REGION \ ... other flags ...
L'gcloud CLI mostrerà un messaggio di errore che include nome proprietà del cluster
dataproc:dataproc.custom.image.expiration.token
e il valore del token.dataproc:dataproc.custom.image.expiration.token=TOKEN_VALUE
Copia il "valore del token" stringa negli appunti.Utilizza gcloud CLI per creare di nuovo il cluster Dataproc aggiungendo il "valore del token" copiato in precedenza come proprietà del 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 creazione del cluster con l'immagine personalizzata dovrebbe riuscire.