Olá.
Existem muitos serviços na Internet que fornecem serviços em nuvem. Com a ajuda deles, você pode aprender a tecnologia do BigData.
Neste artigo, instalaremos o Apache Kafka, Apache Spark, Zookeeper, Spark-shell na plataforma EC2 AWS (Amazon Web Services) em casa e aprenderemos como usar tudo.
Apresentando o Amazon Web Services
Você precisará se registrar em
aws.amazon.com/console . Digite um nome e lembre-se da senha.
Configure instâncias do nó para os serviços Zookeeper e Kafka.
- Selecione "Serviços-> EC2" no menu. Em seguida, selecione a versão do sistema operacional da imagem da máquina virtual, selecione Ubuntu Server 16.04 LTS (HVM), tipo de volume SSD, clique em "Selecionar". Prosseguimos para configurar a instância do servidor: digite "t3.medium" com os parâmetros 2vCPU, 4 GB de memória, Uso Geral Clique em "Avançar: configurando detalhes da instância".
- Adicione o número de instâncias 1, clique em "Avançar: Adicionar armazenamento"
- Aceitamos o valor padrão para o tamanho do disco de 8 GB e alteramos o tipo para Magnetic (nas configurações de produção com base no volume de dados e no SSD de alto desempenho)
- Na seção "Tag Instances" em "Name", digite o nome da instância do nó "Home1" (onde 1 é apenas um número de série) e clique em "Next: ..."
- Na seção "Configurar grupos de segurança", selecione a opção "Usar grupo de segurança existente", selecionando o nome do grupo de segurança ("Spark_Kafka_Zoo_Project") e defina as regras para o tráfego recebido. Clique em "Next: ..."
- Role pela tela Revisão para verificar suas entradas e iniciar Iniciar.
- Para conectar-se aos nós do cluster, você deve criar (no nosso caso, usar o existente) um par de chaves públicas para identificação e autorização. Para fazer isso, selecione o tipo de operação "Usar par existente" na lista.
Criação de chave
- Faça o download do Putty (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) para o cliente ou use a conexão SSH no terminal.
- O arquivo de chave .pem usa o formato antigo por conveniência, convertemos para o formato ppk usado pelo Putty. Para fazer isso, execute o utilitário PuTTYgen, carregue a chave no formato .pem antigo no utilitário. Convertemos a chave e salvamos (Salvar chave privada) para uso posterior na pasta pessoal com a extensão .ppk.
Lançamento de cluster
Por conveniência, renomeie os nós do cluster na notação Node01-04. Para conectar-se a nós de cluster do computador local via SSH, é necessário determinar o endereço IP do nó e seu nome DNS público / privado, selecione cada um dos nós de cluster um por um e, para a instância selecionada, anote seu nome DNS público / privado para conectar-se via SSH e para instalação Software para o arquivo de texto HadoopAdm01.txt.
Exemplo: ec2-35-162-169-76.us-west-2.compute.amazonaws.com
Instale o Apache Kafka no modo SingleNode em um nó de cluster da AWS
Para instalar o software, selecione nosso nó (copie seu DNS público) para conectar-se via SSH. Nós configuramos a conexão através do SSH. Usamos o nome salvo do primeiro nó para configurar a conexão via SSH usando o par de chaves Privado / Público "HadoopUser01.ppk" criado na cláusula 1.3. Nós vamos para a seção Conexão / Autenticação através do botão Procurar e procuramos a pasta onde anteriormente salvamos o arquivo “HadoopUserXX.ppk”.
Nós salvamos a configuração da conexão nas configurações.
Estamos conectados ao nó e usamos o login: ubuntu.
- Usando privilégios de root, atualizamos pacotes e instalamos pacotes adicionais necessários para instalação e configuração adicionais do cluster.
sudo apt-get update sudo apt-get -y install wget net-tools netcat tar
- Instale o Java 8 jdk e verifique a versão do Java.
sudo apt-get -y install openjdk-8-jdk
- Para desempenho normal do nó do cluster, é necessário ajustar as configurações de troca de memória. Os swappines da VM são definidos como 60% por padrão, o que significa que, ao utilizar a memória em 60%, o sistema trocará ativamente os dados da RAM para o disco. Dependendo da versão do Linux, o parâmetro VM swappines pode ser definido como 0 ou 1:
sudo sysctl vm.swappiness=1
- Para salvar as configurações durante a reinicialização, adicione uma linha ao arquivo de configuração.
echo 'vm.swappiness=1' | sudo tee --append /etc/sysctl.conf
- Editar entradas no arquivo / etc / hosts para resolver convenientemente os nomes dos nós do cluster kafka e
zookeeper em endereços IP privados para os nós de cluster atribuídos.
echo "172.31.26.162 host01" | sudo tee --append /etc/hosts
Verificamos o reconhecimento correto dos nomes usando ping em qualquer uma das entradas.
- Faça o download das versões atuais mais recentes (http://kafka.apache.org/downloads) das distribuições kafka e scala e prepare o diretório com os arquivos de instalação.
wget http://mirror.linux-ia64.org/apache/kafka/2.1.0/kafka_2.12-2.1.0.tgz tar -xvzf kafka_2.12-2.1.0.tgz ln -s kafka_2.12-2.1.0 kafka
- Exclua o arquivo tgz, não precisaremos mais dele
- Vamos tentar iniciar o serviço Zookeeper, para isso:
~/kafka/bin/zookeeper-server-start.sh -daemon ~/kafka/config/zookeeper.properties
O Zookeeper inicia com as opções de inicialização padrão. Você pode verificar o log:
tail -n 5 ~/kafka/logs/zookeeper.out
Para garantir que o daemon do Zookeeper seja iniciado, após a reinicialização, precisamos iniciar o Zookeper como um serviço em segundo plano:
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
Para verificar o lançamento do Zookepper, verifique
netcat -vz localhost 2181
Configuramos o serviço Zookeeper e Kafka para o trabalho. Inicialmente, edite / crie o arquivo /etc/systemd/system/zookeeper.service (conteúdo do arquivo abaixo).
[Unit] Description=Apache Zookeeper server Documentation=http://zookeeper.apache.org Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple ExecStart=/home/ubuntu/kafka/bin/zookeeper-server-start.sh /home/ubuntu/kafka/config/zookeeper.properties ExecStop=/home/ubuntu/kafka/bin/zookeeper-server-stop.sh [Install] WantedBy=multi-user.target
Em seguida, para o Kafka, edite / crie o arquivo /etc/systemd/system/kafka.service (conteúdo do arquivo abaixo).
[Unit] Description=Apache Kafka server (broker) Documentation=http://kafka.apache.org/documentation.html Requires=zookeeper.service [Service] Type=simple ExecStart=/home/ubuntu/kafka/bin/kafka-server-start.sh /home/ubuntu/kafka/config/server.properties ExecStop=/home/ubuntu/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target
- Ativamos scripts systemd para os serviços Kafka e Zookeeper.
sudo systemctl enable zookeeper sudo systemctl enable kafka
- Verifique a operação dos scripts systemd.
sudo systemctl start zookeeper sudo systemctl start kafka sudo systemctl status zookeeper sudo systemctl status kafka sudo systemctl stop zookeeper sudo systemctl stop kafka
- Verificaremos a funcionalidade dos serviços Kafka e Zookeeper.
netcat -vz localhost 2181 netcat -vz localhost 9092
- Verifique o arquivo de log do tratador.
cat logs/zookeeper.out
Primeira alegria
Criamos nosso primeiro tópico no servidor kafka montado.
- É importante usar a conexão com "host01: 2181", conforme indicado no arquivo de configuração server.properties.
- Escrevemos alguns dados no tópico.
kafka-console-producer.sh --broker-list host01:9092 --topic first_topic
Ctrl-C - sai do console do tópico.
- Agora tente ler os dados do tópico.
kafka-console-consumer.sh --bootstrap-server host01:9092 --topic last_topic --from-beginning
- Vejamos a lista de tópicos kafka.
bin/kafka-topics.sh --zookeeper spark01:2181 --list
- Editando configurações do servidor kafka para ajustar a configuração de cluster único
# você precisa alterar o parâmetro ISR para 1.
bin/kafka-topics.sh --zookeeper spark01:2181 --config min.insync.replicas=1 --topic __consumer_offsets --alter
- Reiniciamos o servidor Kafka e tentamos conectar o ohm do consumidor novamente
- Vejamos a lista de tópicos.
bin/kafka-topics.sh --zookeeper host01:2181 --list
Configurar o Apache Spark em um cluster de nó único
Preparamos uma instância do nó com os serviços Zookeeper e Kafka instalados na AWS, agora você precisa instalar o Apache Spark, para isso:
Faça o download da distribuição mais recente do Apache Spark.
wget https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.6.tgz
- Descompacte a distribuição e crie um link simbólico para o spark e exclua os arquivos desnecessários.
tar -xvf spark-2.4.0-bin-hadoop2.6.tgz ln -s spark-2.4.0-bin-hadoop2.6 spark rm spark*.tgz
- Vá para o diretório sbin e execute o assistente do spark.
./start-master.sh
- Nós nos conectamos usando um navegador da web ao servidor Spark na porta 8080.
- Execute spark-slaves no mesmo nó
./start-slave.sh spark://host01:7077
- Execute o spark shell com o mestre no host01.
./spark-shell --master spark://host01:7077
- Se o lançamento não funcionar, adicione o caminho ao Spark no bash.
vi ~/.bashrc # SPARK_HOME=/home/ubuntu/spark export PATH=$SPARK_HOME/bin:$PATH
source ~/.bashrc
- Execute o spark shell novamente com o mestre no host01.
./spark-shell --master spark://host01:7077
Um cluster de nó único com Kafka, Zookeeper e Spark funciona. Viva!
Um pouco de criatividade
Faça o download do editor Scala-IDE (em
scala-ide.org ). Começamos e começamos a escrever código. Aqui não vou mais me repetir, pois há um
bom artigo sobre Habré .
Literatura e cursos úteis para ajudar:
cursos.hadoopinrealworld.com/courses/enrolled/319237data-flair.training/blogs/kafka-consumerwww.udemy.com/apache-spark-with-scala-hands-on-with-big-data