BigData hecho en casa. Parte 1. Práctica de Spark Streaming en un clúster de AWS

Hola

Hay muchos servicios en Internet que brindan servicios en la nube. Con su ayuda, puede aprender la tecnología de BigData.

En este artículo, instalaremos Apache Kafka, Apache Spark, Zookeeper, Spark-shell en la plataforma EC2 AWS (Amazon Web Services) en casa y aprenderemos cómo usarlo todo.

imagen


Presentación de los servicios web de Amazon


Deberá registrarse en aws.amazon.com/console . Ingrese un nombre y recuerde la contraseña.

Configure instancias de nodo para los servicios de Zookeeper y Kafka.

  • Seleccione "Servicios-> EC2" en el menú. A continuación, seleccione la versión del sistema operativo de la imagen de la máquina virtual, seleccione Ubuntu Server 16.04 LTS (HVM), tipo de volumen SSD, haga clic en "Seleccionar". Procedemos a configurar la instancia del servidor: escriba "t3.medium" con los parámetros 2vCPU, 4 GB de memoria, uso general Haga clic en "Siguiente: Configurar detalles de la instancia".
  • Agregue el número de instancias 1, haga clic en "Siguiente: Agregar almacenamiento"
  • Aceptamos el valor predeterminado para el tamaño de disco de 8 GB y cambiamos el tipo a Magnético (en la configuración de Producción en función del volumen de datos y SSD de alto rendimiento)
  • En la sección "Instancias de etiqueta" para "Nombre", ingrese el nombre de la instancia del nodo "Inicio1" (donde 1 es solo un número de serie) y haga clic en "Siguiente: ..."
  • En la sección "Configurar grupos de seguridad", seleccione la opción "Usar grupo de seguridad existente" seleccionando el nombre del grupo de seguridad ("Spark_Kafka_Zoo_Project") y establezca las reglas para el tráfico entrante. Haga clic en "Siguiente: ..."
  • Desplácese por la pantalla Revisar para verificar sus entradas e inicie Iniciar.
  • Para conectarse a los nodos del clúster, debe crear (en nuestro caso, usar el existente) un par de claves públicas para identificación y autorización. Para hacer esto, seleccione el tipo de operación "Usar par existente" en la lista.

Creación de clave


  • Descargue Putty (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) para el cliente o utilice la conexión SSH desde el terminal.
  • El archivo de clave .pem usa el formato antiguo por conveniencia, lo convertimos al formato ppk utilizado por Putty. Para hacer esto, ejecute la utilidad PuTTYgen, cargue la clave en el antiguo formato .pem en la utilidad. Convertimos la clave y la guardamos (Guardar clave privada) para su uso posterior en la carpeta de inicio con la extensión .ppk.

Lanzamiento de clúster


Para mayor comodidad, cambie el nombre de los nodos del clúster en la notación Nodo01-04. Para conectarse a los nodos del clúster desde la computadora local a través de SSH, debe determinar la dirección IP del nodo y su nombre DNS público / privado, seleccionar cada uno de los nodos del clúster uno por uno y para la instancia seleccionada, anote su nombre DNS público / privado para conectarse a través de SSH y para la instalación Software para el archivo de texto HadoopAdm01.txt.

Ejemplo: ec2-35-162-169-76.us-west-2.compute.amazonaws.com

Instale Apache Kafka en modo SingleNode en un nodo de clúster de AWS


Para instalar el software, seleccione nuestro nodo (copie su DNS público) para conectarse a través de SSH. Configuramos la conexión a través de SSH. Usamos el nombre guardado del primer nodo para configurar la conexión a través de SSH usando el par de claves Privado / Público "HadoopUser01.ppk" creado en la cláusula 1.3. Vamos a la sección Conexión / Autenticación a través del botón Examinar y buscamos la carpeta donde guardamos previamente el archivo "HadoopUserXX.ppk".

Guardamos la configuración de conexión en la configuración.

Estamos conectados al nodo y usamos login: ubuntu.

  • Utilizando los privilegios de root, actualizamos los paquetes e instalamos paquetes adicionales necesarios para una mayor instalación y configuración del clúster.

    sudo apt-get update sudo apt-get -y install wget net-tools netcat tar 
  • Instale Java 8 jdk y verifique la versión de Java.

     sudo apt-get -y install openjdk-8-jdk 
  • Para el rendimiento normal del nodo del clúster, debe ajustar la configuración de intercambio de memoria. VM swappines está configurado en 60% de forma predeterminada, lo que significa que cuando se utiliza la memoria en 60%, el sistema intercambiará activamente datos de RAM a disco. Dependiendo de la versión de Linux, el parámetro VM swappines se puede establecer en 0 o 1:

     sudo sysctl vm.swappiness=1 

  • Para guardar la configuración durante el reinicio, agregue una línea al archivo de configuración.

     echo 'vm.swappiness=1' | sudo tee --append /etc/sysctl.conf 

  • Edición de entradas en el archivo / etc / hosts para la resolución conveniente de los nombres de nodo del clúster kafka y
    Zookeeper en direcciones IP privadas a los nodos de clúster asignados.

     echo "172.31.26.162 host01" | sudo tee --append /etc/hosts 

    Verificamos el reconocimiento correcto de los nombres usando ping en cualquiera de las entradas.

  • Descargue las últimas versiones actuales (http://kafka.apache.org/downloads) de las distribuciones kafka y scala y prepare el directorio con los archivos de instalación.

     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 

  • Elimine el archivo tgz, ya no lo necesitaremos

  • Intentemos iniciar el servicio Zookeeper, para esto:

     ~/kafka/bin/zookeeper-server-start.sh -daemon ~/kafka/config/zookeeper.properties 

    Zookeeper comienza con las opciones de inicio predeterminadas. Puedes consultar el registro:

     tail -n 5 ~/kafka/logs/zookeeper.out 

    Para garantizar que se inicia el demonio Zookeeper, después de reiniciar, necesitamos iniciar Zookeper como un servicio en segundo plano:

     bin/zookeeper-server-start.sh -daemon config/zookeeper.properties 

    Para verificar el lanzamiento de Zookepper, verifique

     netcat -vz localhost 2181 

    Configuramos el servicio Zookeeper y Kafka para el trabajo. Inicialmente, edite / cree el archivo /etc/systemd/system/zookeeper.service (contenido del archivo a continuación).

     [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 

    A continuación, para Kafka, edite / cree el archivo /etc/systemd/system/kafka.service (contenido del archivo a continuación).

     [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 

  • Activamos scripts systemd para los servicios de Kafka y Zookeeper.

     sudo systemctl enable zookeeper sudo systemctl enable kafka 

  • Verifique el funcionamiento de los 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 la funcionalidad de los servicios de Kafka y Zookeeper.

     netcat -vz localhost 2181 netcat -vz localhost 9092 

  • Verifique el archivo de registro del cuidador del zoológico.

     cat logs/zookeeper.out 

Primera alegría


Creamos nuestro primer tema en el servidor kafka ensamblado.

  • Es importante utilizar la conexión a "host01: 2181" como indicó en el archivo de configuración server.properties.
  • Escribimos algunos datos en el tema.

     kafka-console-producer.sh --broker-list host01:9092 --topic first_topic     

    Ctrl-C: sale de la consola de temas.

  • Ahora intente leer los datos del tema.

     kafka-console-consumer.sh --bootstrap-server host01:9092 --topic last_topic --from-beginning 

  • Veamos la lista de temas de kafka.

     bin/kafka-topics.sh --zookeeper spark01:2181 --list 

  • Edición de la configuración del servidor kafka para ajustar la configuración de un solo clúster
    # necesita cambiar el parámetro ISR a 1.

     bin/kafka-topics.sh --zookeeper spark01:2181 --config min.insync.replicas=1 --topic __consumer_offsets --alter 

  • Reiniciamos el servidor Kafka e intentamos conectar el consumidor ohm nuevamente

  • Veamos la lista de temas.

     bin/kafka-topics.sh --zookeeper host01:2181 --list 

Configure Apache Spark en un clúster de nodo único


Preparamos una instancia del nodo con los servicios Zookeeper y Kafka instalados en AWS, ahora necesita instalar Apache Spark, para esto:

Descargue la última distribución de Apache Spark.

 wget https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.6.tgz 


  • Descomprima la distribución y cree un enlace simbólico para provocar y elimine los archivos innecesarios.

     tar -xvf spark-2.4.0-bin-hadoop2.6.tgz ln -s spark-2.4.0-bin-hadoop2.6 spark rm spark*.tgz 

  • Vaya al directorio sbin y ejecute el asistente de chispa.

     ./start-master.sh 

  • Nos conectamos mediante un navegador web al servidor Spark en el puerto 8080.

  • Ejecute esclavos de chispa en el mismo nodo

     ./start-slave.sh spark://host01:7077 

  • Ejecute el shell de chispa con el maestro en host01.

     ./spark-shell --master spark://host01:7077 

  • Si el inicio no funciona, agregue la ruta a Spark en bash.

     vi ~/.bashrc #      SPARK_HOME=/home/ubuntu/spark export PATH=$SPARK_HOME/bin:$PATH 

     source ~/.bashrc 

  • Ejecute el shell de chispa nuevamente con el maestro en host01.

     ./spark-shell --master spark://host01:7077 

    Un clúster de nodo único con Kafka, Zookeeper y Spark funciona. ¡Hurra!

Un poco de creatividad


Descargue el editor Scala-IDE (en scala-ide.org ). Comenzamos y comenzamos a escribir código. Aquí ya no me repetiré más, ya que hay un buen artículo sobre Habré .

Literatura útil y cursos para ayudar:

cursos.hadoopinrealworld.com/courses/enrolled/319237
data-flair.training/blogs/kafka-consumer
www.udemy.com/apache-spark-with-scala-hands-on-with-big-data

Source: https://habr.com/ru/post/452752/


All Articles