7 min de lecture

Premiers pas avec la science des données sur Kubernetes - Jupyter et Zeppelin

Getting started with Data Science on Kubernetes - Jupyter and Zeppelin


Ce n’est un secret pour personne que la communauté de l’analyse de données s’oriente vers l’utilisation d’outils plus open source et basés sur le cloud. Les notebooks Apache Zeppelin et Jupyter sont deux des outils les plus populaires utilisés par les data scientists aujourd’hui. Dans cet article de blog, nous allons vous montrer comment intégrer facilement Ilum à ces notebooks afin que vous puissiez exécuter vos charges de travail d’analyse de données sur des k8s.

Kubernetes pour la science des données

Avec l’essor du Big Data et des applications gourmandes en données, la gestion et le déploiement des charges de travail de science des données sont devenus de plus en plus complexes. C’est là qu’intervient Kubernetes, car il fournit une plate-forme évolutive et flexible pour l’exécution de plates-formes informatiques interactives telles que Jupyter et Zeppelin.

La communauté de la science des données utilise les notebooks Jupyter depuis longtemps. Mais qu’en est-il de l’exécution de la science des données sur Kubernetes ? Peut-on utiliser des notebooks Jupyter sur les k8 ? La réponse est oui ! Cet article de blog vous montrera comment exécuter la science des données sur Kubernetes avec des notebooks Jupyter et Zeppelin.

Nous utiliserons des sessions interactives Apache Spark et Ilum pour stimuler le calcul. La fonction de sessions interactives vous permet de soumettre du code Spark et de voir les résultats en temps réel. C’est un excellent moyen d’explorer les données et d’essayer différents algorithmes. Avec Apache Spark, vous pouvez facilement traiter de grandes quantités de données, et la fonction de sessions interactives d’Ilum permet d’essayer facilement différents extraits de code et de voir les résultats immédiatement.

Ilum, Apache Livy et Sparkmagic

Ilum a été créé pour faciliter l’exécution de Spark sur Kubernetes par les scientifiques et les ingénieurs des données. Nous pensons qu’en simplifiant ce processus, nous pouvons faciliter la prise en main de ces technologies par les utilisateurs et augmenter l’adoption des k8 au sein de la communauté de la science des données.
Ilum implémente l’interface de repos Tite-Live, elle peut donc être utilisée comme un remplaçant pour Apache Livy dans n’importe quel environnement. Nous allons montrer comment intégrer Ilum à Sparkmagic.

Ilum et Livy peuvent tous deux lancer des contextes Spark de longue durée qui peuvent être utilisés pour plusieurs tâches Spark, par plusieurs clients. Cependant, il existe quelques différences clés entre les deux.

Ilum est un logiciel bien maintenu et activement développé, mis à jour avec de nouvelles bibliothèques et fonctionnalités. Tite-Live, quant à lui, dispose d’une communauté solide qui a créé des intégrations avec de nombreuses applications. Malheureusement, le développement de Livy est au point mort et, à cause de cela, Livy n’est pas prêt pour la transformation Cloud Native.

Ilum peut facilement évoluer vers le haut et vers le bas et est hautement disponible. Un grand avantage qu’Ilum a sur Livy est qu’il fonctionne sur Kubernetes. Il permet également l’intégration avec FIL .

Les deux outils fournissent une interface Web facile à utiliser pour surveiller les clusters Spark et les applications Spark, mais celui de Tite-Live semble être obsolète et très limité.

Alors, pourquoi ne devrions-nous pas profiter pleinement d’Ilum et de Tite-Live ?

Ilum-livy-proxy

Ilum a un composant intégré qui implémente l’API Livy. Il permet aux utilisateurs de profiter simultanément de l’interface REST de Tite-Live et du moteur Ilum.
Nous travaillons d’arrache-pied pour ajouter Python à Ilum, en plus des Scala soutien. Gardez un œil sur notre Feuille de route pour rester au courant de nos progrès.

Zeppelin et Jupyter

Zeppelin et Jupyter sont des notebooks basés sur le Web qui permettent l’analyse interactive des données et la création collaborative de documents dans différentes langues.

Les notebooks Jupyter sont particulièrement populaires parmi les utilisateurs de Python. Le projet a évolué à partir de l’environnement IPython mais prend désormais en charge de nombreuses langues.

La liste des noyaux de Jupyter est énorme .

Zeppelin est bien intégré aux outils de big data. Dans Zeppelin, il est possible de combiner différents interprètes dans un seul bloc-notes, puis de les exécuter dans différents paragraphes.

Vous pouvez voir une liste des interprètes pris en charge par Zeppelin ici

Intégration de notebooks avec Ilum


Configuration d’Ilum

Commençons par lancer le cluster Apache Spark sur Kubernetes. Avec Ilum, c’est assez facile de le faire. Nous utiliserons minikube dans le cadre de cet article. La première chose que nous devons faire est d’exécuter un cluster Kubernetes :

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

Une fois que minikube est en cours d’exécution, nous pouvons passer à l’installation d’Ilum. Tout d’abord, ajoutons un référentiel de graphiques Helm :

helm repo add ilum https://charts.ilum.cloud 

Ilum inclut à la fois Zeppelin et Jupyter, mais ils doivent être activés manuellement dans les paramètres d’installation avec 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’initialisation de tous les pods peut prendre un certain temps. Vous pouvez vérifier l’état avec la commande :

kubectl get pods 

Jupyter


Commençons par :

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

Ilum utilise Sparkmagic pour travailler avec Apache Spark dans les notebooks Jupyter. Par défaut, Jupyter (avec la bibliothèque Sparkmagic installée) s’exécutera sur le port 8888. Pour accéder au serveur, ouvrez votre navigateur et allez dans localhost :8888. Vous devrez vous connecter avec un mot de passe à partir des journaux, ou vous pouvez copier et coller l’URL entière avec « localhost » substitué au domaine.

kubectl journaux ilum-jupyter-85f6d9bfb8-t642d 

Une fois le Jupyter ouvert, il faut lancer le notebook Python3 :

Exécutons maintenant les commandes suivantes pour charger Spark Magic et configurer un point de terminaison.

1. Tout d’abord, nous devrons charger l’extension spark magic. Pour ce faire, exécutez la commande suivante :

%load_ext sparkmagic.magics 

2. Ensuite, nous devrons configurer un point de terminaison. Un point de terminaison est simplement une URL qui pointe vers un cluster Spark spécifique. Pour ce faire, exécutez la commande suivante :

%manage_spark 

Jupyter est prêt à l’emploi et dispose d’une adresse de point de terminaison prédéfinie, qui pointe vers livy-proxy. Ce que vous avez à faire est de choisir ce point de terminaison dans la liste déroulante et de cliquer sur le bouton Créer une session. Aussi simple que cela. Maintenant, Jupyter se connectera à ilum-core via ilum-livy-proxy pour créer une session Spark. Le déploiement du conteneur Spark peut prendre plusieurs minutes. Une fois qu’il est prêt, vous recevez l’information qu’une session Spark est disponible.

Vous pouvez maintenant utiliser votre session Ilum pour exécuter du code Spark sur celle-ci. Le nom que vous avez attribué à la session sera utilisé dans le %%étincelle magique pour exécuter le code.

Apache Zeppelin


Commençons par :

kubectl port-forward svc/ilum-zeppelin 8080:8080 

À l’instar de Jupyter, nous avons également fourni le carnet Zeppelin avec Ilum. Veuillez noter que le temps de création du conteneur peut être prolongé en raison de l’augmentation de la taille de l’image. Une fois le conteneur créé et en cours d’exécution, vous pourrez accéder au bloc-notes Zeppelin dans votre navigateur à l’http://localhost:8080.

  1. Pour exécuter du code, nous devons créer une note :

2. Comme la communication avec Ilum est gérée via livy-proxy, nous devons choisir livy comme interpréteur par défaut.

3. Ouvrons maintenant la note et mettons un peu de code dans le paragraphe :


Pareil pour Jupyter, Zeppelin a également une configuration prédéfinie qui est nécessaire pour Ilum. Vous pouvez facilement personnaliser les paramètres. Il suffit d’ouvrir le menu contextuel dans le coin supérieur droit et de cliquer sur le bouton de l’interpréteur.

Il existe une longue liste d’interprètes et de leurs propriétés qui pourraient être personnalisés.

Zeppelin propose 3 modes différents pour exécuter le processus d’interpréteur : partagé, étendu et isolé. Vous pouvez en savoir plus sur le mode de liaison de l’interpréteur ici .

Jupyter et Zeppelin sont deux des outils les plus populaires pour la science des données, et ils sont désormais disponibles sur les k8. Cela signifie que les data scientists peuvent désormais utiliser Kubernetes pour gérer et déployer leurs applications de science des données.

Ilum offre quelques avantages aux data scientists qui utilisent Jupyter et Zeppelin. Tout d’abord, Ilum peut fournir un environnement géré pour Jupyter et Zeppelin. Cela signifie que les data scientists n’ont pas à se soucier de la gestion de leur propre cluster Kubernetes. Deuxièmement, Ilum offre un moyen facile de se lancer dans la science des données sur Kubernetes. Avec Ilum, les data scientists peuvent simplement lancer une instance Jupyter ou Zeppelin et commencer à explorer leurs données.

Donc, si vous êtes un scientifique des données qui souhaite se lancer dans la science des données sur Kubernetes, consultez Ilum. Avec Ilum, vous pouvez démarrer rapidement et facilement, sans avoir à vous soucier de la gestion de votre propre cluster kubernetes.

Dans l’ensemble, la science des données sur Kubernetes peut être un excellent moyen d’améliorer son flux de travail et de permettre une plus grande collaboration. Cependant, il est important de commencer par une compréhension de base du système et de son fonctionnement avant de plonger trop profondément. Cela dit, Jupyter et Zeppelin sont deux excellents outils pour vous aider à vous lancer dans la science des données sur Kubernetes.

ilum ferret

Kubernetes est-il vraiment nécessaire pour la science des données ?


Kubernetes est un système open source permettant d’automatiser le déploiement, la mise à l’échelle et la gestion d’applications conteneurisées. Il regroupe les conteneurs qui composent une application en unités logiques pour faciliter la gestion et la découverte.

La science des données est un processus d’extraction de connaissances ou d’informations à partir de données sous diverses formes, structurées ou non structurées, qui peuvent être utilisées pour prendre des décisions ou des prédictions.

Alors, Kubernetes est-il vraiment nécessaire pour la science des données ? La réponse est oui et non. Bien que k8s puisse aider à automatiser le déploiement et la gestion des applications de science des données, ce n’est pas strictement nécessaire. Les data scientists peuvent toujours utiliser d’autres méthodes pour déployer et gérer leurs applications. Cependant, Kubernetes peut leur faciliter la vie en fournissant une plateforme unifiée pour la gestion de plusieurs applications de science des données.