7 minuti di lettura

Introduzione alla scienza dei dati su Kubernetes - Jupyter e Zeppelin

Getting started with Data Science on Kubernetes - Jupyter and Zeppelin


Non è un segreto che la comunità dell'analisi dei dati si stia muovendo verso l'utilizzo di strumenti più open source e basati su cloud. I notebook Apache Zeppelin e Jupyter sono due degli strumenti più popolari utilizzati oggi dai data scientist. In questo post del blog, ti mostreremo come integrare facilmente Ilum con questi notebook in modo da poter eseguire i tuoi carichi di lavoro di analisi dei dati su k8s.

Kubernetes per l'analisi scientifica dei dati

Con l'aumento dei big data e delle applicazioni ad alta intensità di dati, la gestione e l'implementazione dei carichi di lavoro di data science è diventata sempre più complessa. È qui che entra in gioco Kubernetes, in quanto fornisce una piattaforma scalabile e flessibile per l'esecuzione di piattaforme informatiche interattive come Jupyter e Zeppelin.

La comunità della scienza dei dati utilizza i notebook Jupyter da molto tempo. Ma per quanto riguarda l'esecuzione della scienza dei dati su Kubernetes? Possiamo usare i notebook Jupyter su k8s? La risposta è sì! Questo post del blog illustra come eseguire Data Science in Kubernetes con i notebook Jupyter e Zeppelin.

Utilizzeremo le sessioni interattive di Apache Spark e Ilum per potenziare l'elaborazione. La funzione delle sessioni interattive ti consente di inviare il codice Spark e vedere i risultati in tempo reale. Questo è un ottimo modo per esplorare i dati e provare diversi algoritmi. Con Apache Spark è possibile elaborare facilmente grandi quantità di dati e la funzione di sessioni interattive di Ilum semplifica la prova di diversi frammenti di codice e la visualizzazione immediata dei risultati.

Ilum, Apache Livy e Sparkmagic

Ilum è stato creato per semplificare l'esecuzione di Spark su Kubernetes da parte di data scientist e ingegneri. Riteniamo che, semplificando questo processo, possiamo rendere più facile per gli utenti iniziare con queste tecnologie e aumentare l'adozione di k8s all'interno della comunità della Data Science.
Ilum implementa l'interfaccia rest Livy, quindi può essere utilizzata come un sostituto di Apache Livy in qualsiasi ambiente. Mostreremo come integrare Ilum con Sparkmagic.

Sia Ilum che Livy possono avviare contesti Spark a esecuzione prolungata che possono essere usati per più processi Spark, da più client. Tuttavia, ci sono alcune differenze fondamentali tra i due.

Ilum è un software ben mantenuto e sviluppato attivamente, aggiornato con nuove librerie e funzionalità. Livy, d'altra parte, ha una solida comunità che ha creato integrazioni con molte applicazioni. Sfortunatamente, lo sviluppo di Livy è in fase di stallo e per questo motivo Livy non è pronto per la trasformazione Cloud Native.

Ilum può facilmente scalare verso l'alto e verso il basso ed è altamente disponibile. Un grande vantaggio di Ilum rispetto a Livy è che funziona su Kubernetes. Consente inoltre l'integrazione con FILO .

Entrambi gli strumenti forniscono un'interfaccia Web facile da usare per il monitoraggio dei cluster Spark e delle applicazioni Spark, ma quella di Livy sembra essere obsoleta e molto limitata.

Quindi, perché non dovremmo sfruttare appieno Ilum e Livio?

Ilum-livy-proxy

Ilum ha un componente incorporato che implementa l'API Livy. Consente agli utenti di sfruttare contemporaneamente l'interfaccia REST di Livy e il motore Ilum.
Stiamo lavorando sodo per aggiungere Pitone supporto a Ilum, in aggiunta a quello esistente Scala appoggiare. Tieni d'occhio il nostro cartina stradale per rimanere aggiornato sui nostri progressi.

Zeppelin e Jupyter

Zeppelin e Jupyter sono notebook basati sul Web che consentono l'analisi interattiva dei dati e la creazione collaborativa di documenti in diverse lingue.

I notebook Jupyter sono particolarmente popolari tra gli utenti di Python. Il progetto si è evoluto dall'ambiente IPython ma ora vanta il supporto per molte lingue.

L'elenco dei kernel di Jupyter è enorme .

Zeppelin è ben integrato con gli strumenti di big data. In Zeppelin, è possibile combinare diversi interpreti in un unico notebook e poi eseguirli in paragrafi diversi.

Puoi vedere un elenco di interpreti supportati da Zeppelin qui

Integrazione dei notebook con Ilum


Installazione Ilum

Iniziamo avviando il cluster Apache Spark su Kubernetes. Con Ilum, è abbastanza facile farlo. Useremo minikube ai fini di questo articolo. La prima cosa che dobbiamo fare è eseguire un cluster Kubernetes:

minikube start --cpus 4 --memory 12288 --addons metrics-server 

Una volta che minikube è in esecuzione, possiamo passare all'installazione di Ilum. Innanzitutto, aggiungiamo un repository di grafici helm:

Timone repo aggiungere ilum https://charts.ilum.cloud 

Ilum include sia Zeppelin che Jupyter, ma devono essere abilitati manualmente nelle impostazioni di installazione insieme a ilum-livy-proxy.

helm install ilum ilum/ilum --set ilum-zeppelin.enabled=true --set ilum-jupyter.enabled=true --set ilum-livy-proxy.enabled=true 

L'inizializzazione di tutti i pod può richiedere del tempo. È possibile controllare lo stato con il comando:

kubectl get pods 

Giove


Cominciamo con:

kubectl port-forward svc/ilum-jupyter 8888:8888 

Ilum utilizza Sparkmagic per lavorare con Apache Spark nei notebook Jupyter. Per impostazione predefinita, Jupyter (con la libreria Sparkmagic installata) verrà eseguito sulla porta 8888. Per accedere al server, apri il browser e vai su localhost:8888. Dovrai accedere con una password dai registri, oppure puoi copiare e incollare l'intero URL con "localhost" sostituito dal dominio.

kubectl registra ilum-jupyter-85f6d9bfb8-t642d 

Una volta aperto il Jupyter, dobbiamo lanciare il notebook Python3:

Eseguiamo ora i comandi seguenti per caricare spark magic e configurare un endpoint.

1. Innanzitutto, dovremo caricare l'estensione spark magic. A tale scopo, è possibile eseguire il comando seguente:

%load_ext sparkmagic.magics 

2. Successivamente, dovremo impostare un endpoint. Un endpoint è semplicemente un URL che punta a un cluster Spark specifico. A tale scopo, è possibile eseguire il comando seguente:

%manage_spark 

Bundled Jupyter è pronto per l'uso immediato e ha un indirizzo endpoint predefinito, che punta a livy-proxy. Quello che devi fare è scegliere questo endpoint dall'elenco a discesa e fare clic sul pulsante di creazione sessione. Più semplice di così. Ora Jupyter si connetterà con ilum-core tramite ilum-livy-proxy per creare una sessione spark. Potrebbero essere necessari alcuni minuti prima che il contenitore Spark sia attivo e funzionante. Una volta che è pronto, si riceve l'informazione che è disponibile una sessione Spark.

Ora puoi utilizzare la tua sessione Ilum per eseguire il codice Spark su di essa. Il nome assegnato alla sessione verrà utilizzato nella sezione %%scintilla magica per eseguire il codice.

Apache Zeppelin


Cominciamo con:

Kubectl Port-Forward SVC/ILUM-Zeppelin 8080:8080 

Simile a Jupyter, abbiamo anche fornito in bundle il notebook Zeppelin con Ilum. Tieni presente che il tempo per la creazione del contenitore potrebbe essere prolungato, a causa dell'aumento delle dimensioni dell'immagine. Dopo che il contenitore è stato creato ed eseguito, sarà possibile accedere al notebook Zeppelin nel browser all'http://localhost:8080.

  1. Per eseguire il codice, dobbiamo creare una nota:

2. Poiché la comunicazione con Ilum viene gestita tramite livy-proxy, è necessario scegliere livy come interprete predefinito.

3. Ora apriamo la nota e inseriamo del codice nel paragrafo:


Come per Jupyter, anche Zeppelin ha una configurazione predefinita necessaria per Ilum. È possibile personalizzare facilmente le impostazioni. Basta aprire il menu contestuale nell'angolo in alto a destra e fare clic sul pulsante dell'interprete.

C'è un lungo elenco di interpreti e delle loro proprietà che potrebbero essere personalizzate.

Zeppelin offre 3 diverse modalità per eseguire il processo dell'interprete: condiviso, con ambito e isolato. Per ulteriori informazioni sulla modalità di binding dell'interprete qui .

Jupyter e Zeppelin sono due degli strumenti più popolari per la scienza dei dati e sono ora disponibili su k8s. Ciò significa che i data scientist possono ora utilizzare Kubernetes per gestire e distribuire le loro applicazioni di data science.

Ilum offre alcuni vantaggi per i data scientist che utilizzano Jupyter e Zeppelin. Innanzitutto, Ilum può fornire un ambiente gestito per Jupyter e Zeppelin. Ciò significa che i data scientist non devono preoccuparsi di gestire il proprio cluster Kubernetes. In secondo luogo, Ilum offre un modo semplice per iniziare con la scienza dei dati su Kubernetes. Con Ilum, i data scientist possono semplicemente avviare un'istanza Jupyter o Zeppelin e iniziare a esplorare i loro dati.

Quindi, se sei un data scientist che vuole iniziare con la scienza dei dati su Kubernetes, dai un'occhiata a Ilum. Con Ilum, puoi iniziare in modo rapido e semplice, senza doverti preoccupare di gestire il tuo cluster kubernetes.

Nel complesso, la scienza dei dati su Kubernetes può essere un ottimo modo per migliorare il proprio flusso di lavoro e consentire una maggiore collaborazione. Tuttavia, è importante iniziare con una conoscenza di base del sistema e di come funziona prima di immergersi troppo in profondità. Detto questo, Jupyter e Zeppelin sono due ottimi strumenti per iniziare con la scienza dei dati su Kubernetes.

ilum ferret

Kubernetes è davvero necessario per la scienza dei dati?


Kubernetes è un sistema open source per automatizzare il deployment, il ridimensionamento e la gestione delle applicazioni containerizzate. Raggruppa i contenitori che costituiscono un'applicazione in unità logiche per semplificare la gestione e l'individuazione.

La scienza dei dati è un processo di estrazione di conoscenze o intuizioni dai dati in varie forme, strutturate o non strutturate, che possono essere utilizzate per prendere decisioni o previsioni.

Quindi, Kubernetes è davvero necessario per la scienza dei dati? La risposta è sì e no. Sebbene k8s possa aiutare ad automatizzare l'implementazione e la gestione delle applicazioni di data science, non è strettamente necessario. I data scientist possono comunque utilizzare altri metodi per distribuire e gestire le applicazioni. Tuttavia, Kubernetes può semplificare la loro vita fornendo una piattaforma unificata per la gestione di più applicazioni di data science.