Como instalar o Apache Flink 1.7.2 em Multi-Node Cluster no Ubuntu 18.04 usando VirtualBox

--

Introdução

O Apache Flink é a ferramenta de ultima geração do Big Data, conhecido como o 4G do Big Data.

  • É uma true stream processing framework , ou seja não corta a stream em micro-batches.
  • O kernel ou core do Flink é um streaming runtime que também tem a capacidade de processamento distribuído, tolerância a falhas, etc.
  • O Flink processa eventos a uma velocidade elevada constante com baixa latência.
  • É uma framework de processamento de dados de larga escala com capacidade de processar dados gerados a grandes velocidades.

O Apache Flink é uma plataforma open source que pode responder aos seguintes requisitos de forma efectiva:

  • Batch Processing
  • Interactive processing
  • Real-time stream processing
  • Graph Processing
  • Iterative Processing
  • In-memory processing

O Flink é uma alternativa ao MapReduce, consegue processar dados 100 vezes mais rápido que o Mapreduce. É independente do Hadoop mas pode utilizar o HDFS para ler, escrever, guardar e processar dados. O Flink não tem um sistema de armazenamento de dados. Ele retira os dados do armazenamento distribuído.

Hierarquia do Apache Flink

Neste tutorial vamos instalar Apache Flink 1.7.2 em Multi-Node Cluster no Ubuntu 18.04 usando VirtualBox.

Pré-requisitos:

Hardware:

Processador com mais de 3 cores e +4GB de RAM.

Software:

É necessário que tenha o VirtualBox instalado.

Criar Rede Interna

Procurar a pasta de instalação da VirtualBox

Shift + Botão direito do rato

Colocar o seguinte comando

VBoxManage dhcpserver add --netname intnet --ip 10.0.1.1 --netmask 255.255.255.0 --lowerip 10.0.1.2 --upperip 10.0.1.200 --enable

Criar Máquina Virtual

Dentro da virtual box criar uma máquina Virtual

Após criar a máquina virtual colocar um adaptador de rede interna

Instalar o Ubuntu 18.04

Instale o Ubuntu com requisitos minimos

Instalar componentes

Após iniciar o Ubuntu, abrir o terminal

Passo 1. Instalar net utilities

sudo apt install net-tools

Passo 2. Instalar python-software-properties

sudo apt-get install software-properties-common

Passo 3. Adicionar repositório

sudo add-apt-repository ppa:webupd8team/java

Passo 4. Actualizar o source list

sudo apt-get update

Passo 5. Instalar o Java

sudo apt-get install oracle-java8-installer

Aceite as próximas 2 opções

Configurar SSH

Passo 1. Instalar o Open SSH Server-Client

sudo apt-get install openssh-server openssh-client

Passo 2. Gerar Key Pairs

ssh-keygen -t rsa -P ""

Passo 3. Configurar SSH sem password

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

Instalar o Apache Flink

Passo 1. Descarregar o Flink

sudo wget -P /home/flink/Desktop https://archive.apache.org/dist/flink/flink-1.7.2/flink-1.7.2-bin-hadoop28-scala_2.11.tgz

Passo 2. Mudar para o local onde descarregamos o Flink, neste caso o ambiente de trabalho

cd /home/flink/Desktop

Passo 3. Descompactar o ficheiro

sudo tar xzf flink-1.7.2-bin-hadoop28-scala_2.11.tgz

Passo 4. Mover o Flink para a pasta do utilizador

sudo mv flink-1.7.2 /home/flink/flink

Configurar o Apache Flink

Passo 1. Editar o ficheiro de configuração

Mudar para o seguinte directório e editar o ficheiro flink-conf.yaml

cd /home/flink/flink/conf
sudo gedit flink-conf.yaml

Para verificarmos o ip da placa de rede interna nossa máquina virtual usamos o comando

ifconfig

Colocar o ip do Master Node após jobmanager.rpc.address: e alterar os valores dos heap sizes do jobmanager e do taskmanager em flink-conf.yaml

jobmanager.rpc.address: 10.0.1.3
jobmanager.heap.size: 256m
taskmanager.heap.size: 256m

Passo 2. Clonar a Máquina Virtual para criar os 2 Slaves

Passo 3. Adicionar os ips de todos os Worker Nodes ou Slaves em conf/slaves em todas as máquinas.

cd /home/flink/flink/conf
sudo gedit slaves

Passo 4. Mudar o hostname dos Slaves

sudo gedit /etc/hostname

Colocar em cada um o respectivo hostname

flinkslave1flinkslave2

Passo 5. Reiniciar os Slaves

sudo reboot

Passo 6. Testar o ssh com todas as máquinas

ssh ip_do_master 10.0.1.3
exit
ssh ip_do_slave_1 10.0.1.4
exit
ssh ip_do_slave_2 10.0.1.6
exit

Iniciar o Apache Flink

No Master:

cd /home/flink/flink/
bin/start-cluster.sh

Verificar os daemons no Master

jps

Verificar os daemons nos Slaves

jps

Aceder a http://localhost:8081 no browser para visualizarmos o Dashboard

Se tudo estiver a correr bem, vamos ter 2 task managers com as duas slots livres.

Para terminar o cluster basta usar

bin/stop-cluster.sh

Exemplo: WordCount

Passo 1. Criar pasta data no desktop, criar e editar um ficheiro de texto sample

cd /home/flink/Desktop
sudo mkdir data
cd data
sudo gedit sample.txt

Passo 2. Adicionar o seguinte texto

Olá , com este ficheiro nos vamos testar se o flink consegue correr o Wordcount.
O Wordcount é o “hello world” dos sistemas distribuidos.

Passo 3. Correr o WordCount

Vamos usar o ficheiro sample.txt como input e um ficheiro output

bin/flink run /examples/batch/WordCount.jar --input /home/flink/Desktop/data/sample.txt --output /home/flink/Desktop/data/output

O output aparecerá na Máquina que ficou encarregue de executar o trabalho.

Verifique os Desktops de ambas as máquinas.

Resultado do WordCount:

Com isto terminamos o tutorial.

--

--

Leonardo “WildLeoKnight” Lourenço

Pixel artist, Game Dev, Computer Science Engineer. Passionate about Martial Arts namely Shotokan Karate. Tenacious and hardworking person.