7 min de leitura

Introdução à Ciência de Dados no Kubernetes - Jupyter e Zeppelin

Getting started with Data Science on Kubernetes - Jupyter and Zeppelin


Não é segredo que a comunidade de análise de dados está se movendo em direção ao uso de ferramentas mais de código aberto e baseadas em nuvem. Os notebooks Apache Zeppelin e Jupyter são duas das ferramentas mais populares usadas pelos cientistas de dados atualmente. Nesta postagem do blog, mostraremos como integrar facilmente o Ilum a esses notebooks para que você possa executar suas cargas de trabalho de análise de dados em k8s.

Kubernetes para ciência de dados

Com o surgimento de big data e aplicativos com uso intensivo de dados, o gerenciamento e a implantação de cargas de trabalho de ciência de dados tornaram-se cada vez mais complexos. É aqui que entra o Kubernetes, pois fornece uma plataforma escalável e flexível para executar plataformas de computação interativas, como Jupyter e Zeppelin.

A comunidade de ciência de dados usa notebooks Jupyter há muito tempo. Mas e quanto à execução da ciência de dados no Kubernetes? Podemos usar notebooks Jupyter em k8s? A resposta é sim! Esta postagem do blog mostrará como executar o Data Science no Kubernetes com notebooks Jupyter e Zeppelin.

Usaremos sessões interativas do Apache Spark e do Ilum para aumentar a computação. O recurso de sessões interativas permite que você envie o código do Spark e veja os resultados em tempo real. Esta é uma ótima maneira de explorar dados e experimentar diferentes algoritmos. Com o Apache Spark, você pode processar facilmente grandes quantidades de dados, e o recurso de sessões interativas do Ilum facilita a experimentação de diferentes trechos de código e a visualização imediata dos resultados.

Ilum, Apache Livy e Sparkmagic

O Ilum foi criado para facilitar a execução do Spark no Kubernetes por cientistas e engenheiros de dados. Acreditamos que, ao simplificar esse processo, podemos tornar mais fácil para os usuários começarem a usar essas tecnologias e aumentar a adoção de k8s na comunidade de Ciência de Dados.
O Ilum implementa a interface de descanso Livy, para que possa ser usado como um substituto para o Apache Livy em qualquer ambiente. Mostraremos como integrar o Ilum com o Sparkmagic.

Tanto o Ilum quanto o Livy podem iniciar contextos do Spark de longa duração que podem ser usados para vários trabalhos do Spark, por vários clientes. No entanto, existem algumas diferenças importantes entre os dois.

O Ilum é um software bem mantido e desenvolvido ativamente, atualizado com novas bibliotecas e recursos. O Livy, por outro lado, possui uma comunidade robusta que criou integrações com muitos aplicativos. Infelizmente, o desenvolvimento do Livy estagnou e, por isso, o Livy não está pronto para a transformação nativa da nuvem.

O Ilum pode ser facilmente ampliado e reduzido e é altamente disponível. Uma grande vantagem que o Ilum tem sobre o Livy é que ele funciona no Kubernetes. Também permite a integração com FIO .

Ambas as ferramentas fornecem uma interface da Web fácil de usar para monitorar clusters e aplicativos do Spark, mas a do Lívio parece estar desatualizada e muito limitada.

Então, por que não devemos aproveitar ao máximo Ilum e Tito Lívio?

Ilum-livy-proxy

O Ilum possui um componente incorporado que implementa a API Livy. Ele permite que os usuários aproveitem a interface REST do Lívio e o mecanismo Ilum simultaneamente.
Estamos trabalhando duro para adicionar Pitão apoio à Ilum, além das existentes Scala apoio. Fique de olho em nosso Roteiro para nos mantermos atualizados com o nosso progresso.

Zeppelin e Jupyter

O Zeppelin e o Jupyter são notebooks baseados na web que permitem a análise interativa de dados e a criação colaborativa de documentos com diferentes idiomas.

Os notebooks Jupyter são especialmente populares entre os usuários do Python. O projeto evoluiu do ambiente IPython, mas agora possui suporte para muitos idiomas.

A lista de kernels do Jupyter é enorme .

O Zeppelin está bem integrado com ferramentas de big data. No Zeppelin, é possível combinar diferentes interpretadores em um notebook e executá-los em parágrafos diferentes.

Você pode ver uma lista de intérpretes suportados pelo Zeppelin aqui

Integrando notebooks com Ilum


Configurar Ilum

Vamos começar iniciando o cluster do Apache Spark no Kubernetes. Com o Ilum, é muito fácil fazer isso. Usaremos o minikube para o propósito deste artigo. A primeira coisa que precisamos fazer é executar um cluster Kubernetes:

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

Assim que o minikube estiver em execução, podemos passar para a instalação do Ilum. Primeiro, vamos adicionar um repositório de gráficos do Helm:

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

O Ilum inclui Zeppelin e Jupyter, mas eles devem ser habilitados manualmente nas configurações de instalação junto com o ilum-livy-proxy.

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

Pode levar algum tempo para inicializar todos os pods. Você pode verificar o status com o comando:

kubectl obter pods 

Jupyter


Vamos começar com:

SVC/ILUM-JUPYTER de encaminhamento de porta kubectl 8888:8888 

A Ilum usa o Sparkmagic para trabalhar com o Apache Spark em notebooks Jupyter. Por padrão, o Jupyter (com a biblioteca Sparkmagic instalada) será executado na porta 8888. Para acessar o servidor, abra seu navegador e vá para localhost:8888. Você precisará fazer login com uma senha dos logs ou pode copiar e colar todo o URL com "localhost" substituído pelo domínio.

kubectl logs ilum-jupyter-85f6d9bfb8-t642d 

Uma vez que o Jupyter esteja aberto, temos que iniciar o notebook Python3:

Vamos agora executar os seguintes comandos para carregar o spark magic e configurar um endpoint.

1. Primeiro, precisaremos carregar a extensão mágica da faísca. Você pode fazer isso executando o seguinte comando:

%load_ext sparkmagic.magics 

2. Em seguida, precisaremos configurar um endpoint. Um ponto de extremidade é simplesmente uma URL que aponta para um cluster específico do Spark. Você pode fazer isso executando o seguinte comando:

%manage_spark 

O Jupyter empacotado está pronto para funcionar imediatamente e tem um endereço de endpoint predefinido, que aponta para livy-proxy. O que você precisa fazer é escolher esse endpoint na lista suspensa e clicar no botão criar sessão. Tão simples quanto isso. Agora, o Jupyter se conectará ao ilum-core por meio de ilum-livy-proxy para criar uma sessão do Spark. Pode levar vários minutos para que o contêiner de faísca esteja funcionando. Quando estiver pronto, você receberá informações de que uma sessão do Spark está disponível.

Agora você pode usar sua sessão do Ilum para executar o código do Spark nele. O nome que você atribuiu à sessão será usado no %%faísca mágica para executar o código.

Apache Zeppelin


Vamos começar com:

SVC/ILUM-ZEPPELIN 8080:8080 DO PORTA-FORWARD KUBECTL 

Semelhante ao Jupyter, também incluímos o notebook Zeppelin com o Ilum. Esteja ciente de que o tempo para a criação do contêiner pode ser estendido, devido ao aumento do tamanho da imagem. Depois que o contêiner for criado e executado, você poderá acessar o bloco de anotações do Zeppelin em seu navegador em http://localhost:8080.

  1. Para executar o código, precisamos criar uma nota:

2. Como a comunicação com o Ilum é tratada via livy-proxy, precisamos escolher o livy como interpretador padrão.

3. Agora vamos abrir a nota e colocar algum código no parágrafo:


O mesmo para o Jupyter, o Zeppelin também tem uma configuração predefinida que é necessária para o Ilum. Você pode personalizar as configurações facilmente. Basta abrir o menu de contexto no canto superior direito e clicar no botão do intérprete.

Há uma longa lista de intérpretes e suas propriedades que podem ser personalizadas.

O Zeppelin fornece 3 modos diferentes para executar o processo do interpretador: compartilhado, com escopo e isolado. Você pode saber mais sobre o modo de vinculação do intérprete aqui .

Jupyter e Zeppelin são duas das ferramentas mais populares para ciência de dados e agora estão disponíveis no k8s. Isso significa que os cientistas de dados agora podem usar o Kubernetes para gerenciar e implantar seus aplicativos de ciência de dados.

O Ilum oferece algumas vantagens para cientistas de dados que usam Jupyter e Zeppelin. Primeiro, o Ilum pode fornecer um ambiente gerenciado para Jupyter e Zeppelin. Isso significa que os cientistas de dados não precisam se preocupar em gerenciar seu próprio cluster do Kubernetes. Em segundo lugar, o Ilum oferece uma maneira fácil de começar a usar a ciência de dados no Kubernetes. Com o Ilum, os cientistas de dados podem simplesmente iniciar uma instância Jupyter ou Zeppelin e começar a explorar seus dados.

Portanto, se você é um cientista de dados que deseja começar a usar a ciência de dados no Kubernetes, confira o Ilum. Com o Ilum, você pode começar de forma rápida e fácil, sem ter que se preocupar em gerenciar seu próprio cluster kubernetes.

No geral, a ciência de dados no Kubernetes pode ser uma ótima maneira de melhorar o fluxo de trabalho e permitir mais colaboração. No entanto, é importante começar com uma compreensão básica do sistema e como ele funciona antes de mergulhar muito fundo. Com isso dito, Jupyter e Zeppelin são duas ótimas ferramentas para ajudar a começar a usar a Ciência de Dados no Kubernetes.

ilum ferret

O Kubernetes é realmente necessário para a ciência de dados?


O Kubernetes é um sistema de código aberto para automatizar a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres. Ele agrupa contêineres que compõem um aplicativo em unidades lógicas para facilitar o gerenciamento e a descoberta.

A ciência de dados é um processo de extração de conhecimento ou insights de dados em várias formas, estruturadas ou não estruturadas, que podem ser usadas para tomar decisões ou previsões.

Então, o Kubernetes é realmente necessário para a ciência de dados? A resposta é sim e não. Embora o k8s possa ajudar a automatizar a implantação e o gerenciamento de aplicativos de ciência de dados, ele não é estritamente necessário. Os cientistas de dados ainda podem usar outros métodos para implantar e gerenciar seus aplicativos. No entanto, o Kubernetes pode facilitar sua vida, fornecendo uma plataforma unificada para gerenciar vários aplicativos de ciência de dados.