È possibile eseguire il provisioning dei cluster Dataproc con un'immagine personalizzata che include i pacchetti preinstallati da un utente. I seguenti passaggi spiegano come creare un'immagine personalizzata e installarla su un cluster Dataproc.
Note:
- Le istruzioni contenute in questo documento si applicano solo ai sistemi operativi Linux. Altri sistemi operativi potrebbero essere supportati nelle future release di Dataproc.
- Le build delle immagini personalizzate richiedono l'avvio da un'immagine di base di Dataproc (sono supportate le immagini di base Debian, Rocky Linux e Ubuntu).
- Utilizzo dei componenti facoltativi: per impostazione predefinita, le immagini personalizzate ereditano tutti i componenti facoltativi Dataproc (pacchetti e configurazioni del sistema operativo) dalle relative immagini di base. Puoi personalizzare le versioni e le configurazioni del pacchetto del sistema operativo predefinito, ma devi specificare il nome facoltativo del componente quando crei il cluster (ad esempio, eseguendo il comando
gcloud dataproc clusters create --optional-components=COMPONENT_NAME
; aggiungi componenti facoltativi). Se il nome del componente non viene specificato durante la creazione del cluster, il componente (inclusi eventuali pacchetti e configurazioni di sistemi operativi 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.
-
Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
-
Abilita le API Dataproc API, Compute Engine API, and Cloud Storage.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
-
Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
-
Abilita le API Dataproc API, Compute Engine API, and Cloud Storage.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
- Installare Python 2.7 e versioni successive
- Prepara uno script di personalizzazione che installa i pacchetti personalizzati e/o aggiorna le configurazioni, 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 progetto
- Nella console, vai alla pagina Browser Cloud Storage.
- Fai clic su Crea bucket.
- Nella pagina Crea un bucket, inserisci le informazioni sul bucket. Per andare al passaggio successivo, fai clic su Continua.
- Per Assegna un nome al bucket, inserisci un nome che soddisfi i requisiti per la denominazione dei bucket.
-
Per scegliere dove archiviare i dati, segui questi passaggi:
- Seleziona un'opzione Tipo di località.
- Seleziona un'opzione Località.
- Per Scegliere una classe di archiviazione predefinita per i tuoi dati, seleziona una classe di archiviazione.
- In Scegli come controllare l'accesso agli oggetti, seleziona un'opzione di Controllo dell'accesso.
- (Facoltativo) Per le Impostazioni avanzate, specifica un metodo di crittografia, un criterio di conservazione o etichette di bucket.
- Fai clic su Crea.
Genera un'immagine personalizzata
Utilizzerai generate_custom_image.py, un programma Python per creare un'immagine personalizzata Dataproc.
Come funziona
Il programma generate_custom_image.py
avvia un'istanza VM temporanea di Compute Engine con l'immagine di base Dataproc specificata, quindi esegue lo script di personalizzazione all'interno dell'istanza VM per installare i pacchetti personalizzati e/o aggiornare le configurazioni. Al termine dello script di personalizzazione, arresta l'istanza VM e crea un'immagine Dataproc personalizzata dal disco dell'istanza VM. La VM temporanea viene eliminata dopo la creazione dell'immagine personalizzata. L'immagine personalizzata viene salvata e può essere utilizzata per creare cluster Dataproc.
Il programma generate_custom_image.py
utilizza l'interfaccia a riga di comando gcloud per eseguire flussi di lavoro in più passaggi su Compute Engine.
Esegui il codice
Crea un fork o clona i file su GitHub con le immagini personalizzate Dataproc.
Quindi, esegui il programma generate_custom_image.py
per fare in modo che Dataproc generi e salvi l'immagine personalizzata.
python 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 alla regex[a-z](?:[-a-z0-9]{0,61}[a-z0-9])
, ad esempio non contenere trattini bassi o spazi e contenere meno di 64 caratteri.--dataproc-version
: la versione immagine Dataproc da utilizzare nell'immagine personalizzata. Specifica la versione nel formato "x.y.z-os" o "x.y.z-rc-os", ad esempio "1.5.35-debian10".--customization-script
: un percorso locale verso lo 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 tutte le altre azioni di inizializzazione che vuoi eseguire quando crei un cluster con la tua immagine personalizzata.--zone
: la zona di Compute Engine in cuigenerate_custom_image.py
creerà una VM temporanea da utilizzare per creare l'immagine personalizzata.--gcs-bucket
: un URI, nel formatogs://BUCKET_NAME
, che rimanda al bucket Cloud Storage che hai creato in Creare 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. Le famiglie di immagini vengono utilizzate per raggruppare immagini simili e possono essere utilizzate quando si crea un cluster come puntatore all'immagine più recente della famiglia. Ad esempio, "custom-1-5-debian10".--no-smoke-test
: questo è un flag facoltativo che disabilita il test di fumo per la nuova immagine personalizzata. Il test del fumo crea un cluster di test Dataproc con l'immagine appena creata, esegue un piccolo job e poi elimina il cluster alla fine del test. Il test del fumo viene eseguito per impostazione predefinita per verificare che l'immagine personalizzata appena creata possa creare un cluster Dataproc funzionale. La disattivazione di questo passaggio tramite il flag--no-smoke-test
accelera la procedura di compilazione delle immagini personalizzate, ma l'utilizzo non è consigliato.
Per un elenco di flag facoltativi aggiuntivi, consulta gli argomenti facoltativi su GitHub.
Se generate_custom_image.py
ha esito positivo, la imageURI
dell'immagine personalizzata sarà elencata nell'output della finestra del terminale (la versione imageUri
completa è mostrata in grassetto di seguito):
... 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 personalizzate della versione immagine per gli utenti avanzati
Quando utilizzi lo strumento immagine standard standard di Dataproc, lo strumento imposta automaticamente un'etichetta goog-dataproc-version
obbligatoria sull'immagine personalizzata creata. L'etichetta riflette le funzionalità e i protocolli delle funzionalità utilizzati da Dataproc per gestire il software nell'immagine.
Gli utenti avanzati che utilizzano il proprio processo per creare un'immagine Dataproc personalizzata devono aggiungere l'etichetta manualmente all'immagine personalizzata nel modo seguente:
Estrai l'etichetta
goog-dataproc-version
dall'immagine 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
Specifica l'immagine personalizzata quando crei un cluster Dataproc. Un'immagine personalizzata viene salvata in Cloud Compute Image ed è valida per creare un cluster Dataproc per 60 giorni dalla data di creazione (consulta Come creare un cluster con un'immagine personalizzata scaduta per utilizzare un'immagine personalizzata dopo la data di scadenza di 60 giorni).
URI immagine personalizzato
Passa il imageUri
dell'immagine personalizzata all'operazione di creazione del cluster.
Questo URI può essere specificato in uno dei tre modi seguenti:
- 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 dall'URI della famiglia, che sceglie sempre l'immagine più recente all'interno della famiglia.
- 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 personalizzata
Comando gcloud
Esegui questo comando gcloud
per elencare i nomi delle immagini personalizzate:
gcloud compute images list
Passa il nome della tua immagine personalizzata al seguente comando gcloud
per elencare l'URI (selfLink
) della tua 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 la pagina Compute Engine → Immagini nella console Google Cloud e fai clic sul nome dell'immagine.
Puoi inserire una query nella casella di testo delle immagini filtrate per limitare il numero di immagini visualizzate.
- Si apre la pagina dei dettagli dell'immagine. Fai clic su REST equivalente.
- La risposta REST elenca ulteriori informazioni sull'immagine, incluso
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 lo strumento a riga di comando gcloud
, l'API Dataproc o la console Google Cloud.
Comando gcloud
Puoi creare un cluster Dataproc con un'immagine personalizzata utilizzando il comando create 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 l'URI dell'immagine personalizzata nel campo InstanceGroupConfig.imageUri inmasterConfig
, workerConfig
e, se applicabile, nell'oggetto secondaryWorkerConfig
incluso in una richiesta API cluster.create.
Esempio: richiesta REST per creare un cluster Dataproc standard (un master, due nodi worker) con un'immagine personalizzata.
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 la pagina Crea un cluster di Dataproc. Viene selezionato il riquadro Configura cluster.
- 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, verrà eseguito il provisioning delle VM del cluster con l'immagine personalizzata selezionata.
Esegui l'override delle proprietà del cluster Dataproc con un'immagine personalizzata
Puoi utilizzare le immagini personalizzate per sovrascrivere eventuali proprietà del cluster impostate durante la creazione del cluster. Se un utente crea un cluster con l'immagine personalizzata, ma imposta proprietà del cluster diverse da quelle che imposti con l'immagine personalizzata, le impostazioni della proprietà cluster personalizzate avranno la precedenza.
Per impostare le proprietà del cluster con l'immagine personalizzata:
- Nello script di personalizzazione dell'immagine personalizzata, crea un file
dataproc.custom.properties
in/etc/google-dataproc
, quindi imposta i valori della proprietà del cluster nel file.- Esempio di contenuti del file
dataproc.custom.properties
:dataproc.conscrypt.provider.enable=VALUE dataproc.logging.stackdriver.enable=VALUE
- Esempio di contenuti del file
Esempio di snippet di creazione del file di personalizzazione per eseguire l'override di due proprietà del cluster:
cat <<EOF >/etc/google-dataproc/dataproc.custom.properties dataproc.conscrypt.provider.enable=true dataproc.logging.stackdriver.enable=false EOF
a creare un cluster con un'immagine personalizzata scaduta
Per impostazione predefinita, le immagini personalizzate scadono 60 giorni dopo la data di creazione dell'immagine. Puoi creare un cluster che utilizza un'immagine personalizzata scaduta completando i seguenti passaggi.
Prova a creare un cluster Dataproc con un'immagine personalizzata scaduta o un'immagine personalizzata che scadrà entro 10 giorni.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM-IMAGE-NAME \ --region=REGION \ ... other flags ...
L'interfaccia a riga di comando gcloud emetterà un messaggio di errore che include il nome della proprietà
dataproc:dataproc.custom.image.expiration.token
e il valore del token del cluster.dataproc:dataproc.custom.image.expiration.token=TOKEN_VALUE
Copia la stringa "valore token" negli appunti.Utilizza l'interfaccia a riga di comando gcloud per creare di nuovo il cluster Dataproc, aggiungendo il "valore 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.