Ejercicios de Spark RDD

Importar librerías para trabajar con RDD

1. Crear un RDD a partir de array de números y contar los elementos del RDD.

2. Crear un RDD a partir de array de caracteres y devolver el primer elemento.

3. Crear un RDD a partir de un fichero y mirar si contiene la palabra “BigData”.

4. Cuanta el número de elementos de un RDD agrupados por clave.

5. Cuanta en número de elementos de un RDD agrupados por valor.

6. Cuenta personas agrupándolos por nombre y ordénalos ascendentemente.

7. Crea un array de números busca el mayor, el menor, suma todos los valores y saca la media.

8. Cuentas las palabras que hay en el archivo LoremIpsum.txt, muestra por pantallas las 10 palabras con más apariciones.

9. Con el RDD de LoremIpsum nos tenemos que quedar con aquellas palabras que de tamaño sean 6 o superior.

10. Transformar el RDD anterior en mayusculas y visualiza únicamente el 25% de las palabras (la acción que se usa es sample(remplazo, porcentaje, semilla))

11. Dado un array de números visualiza el array ordenado ascendentemente p.e Array (5,4,6,10,7,3,1,9)

12. Dado un array de números comprendidos entre 0 y 20 devolver dos listas; el primero con los números mayores de 10 y otro con los números menores de 10.

13. Dado un array p.e Array(“a b c”, “d f e”, “h i”) pintar por pantalla las letras ordenadas alfabéticamente

14. Dado dos arrays de números crear un solo array ordenado y visualizarlo por pantalla.

15. Crear una función que dado un string devuelva la frase: la palabra escrita es “string”. Crear un rdd con palabras y por cada una de las palabras sacar por pantalla la frase que escribe la funcion

16. Crear dos rdd con los siguientes datos (“garazi”, 6), (“oihan”, 3), (“ane”, 6) y otro con (“oihan”, 5), (“mikel”, 3). El primer campo es la persona y el segundo el numero de apariciones. Visualizar por pantalla el número de apariciones de cada una de las personas por orden descendente.

17. Dado un array de la forma Array((2,3), (1,2), (5,6), (4,5), (8,9), (7,8)). Visualizar que números están repetido y cuales no.

18. Guardar en un acumulador el número de elementos del array anterior con persistecia en disco. Visualizar el valor en pantalla.

  1. Instalar en un servidor Zookeper
  2. Instalar en 3 servidores diferentes Kafka
  3. Configurar server.propertis de cada servidor Kafka para que accedan al servidor de Zookeeper. 
    1. zookeeper.connect=zookeeper_ip:2181
  4. Configurar cada uno de los kafka para cada uno de ellos tenga un id diferente.
    1. broker.id=1
    2. broker.id=2
    3. broker.id=3
  5. Configurar el listener con el protocolo: PLAINTEXT y que escuche desde todas las ip
    1. listener=PLAINTEXT://0.0.0.0:9092
  6. Configurar para que tenga id automáticos reservando los primeros 1000 como estáticos.
    1. broker.id.generation.enable=true
    2. reserved.broker.max.id=1000
  7. Comprobar que en zookeeper se han registrado automáticamente los brokers
    1. bin/zkCli.sh -server zookeper_ip:2181
    2. ls /brokers/ids
  8. Comprobar que contiene el primer bróker
    1. get /brokers/ids/1
  9. Comprobar los topics que tiene, si no tiene crea uno
    1. ls /brokers/topics 
  10. Comprobar las particiones de ese topic
    1. ls /brokers/topics/new_topic/partition
  11. Entrar en el state de la primera partición.
    1. ls /brokers/topics/new_topic/partition/0/state
  12. Crear un topic  que tenga 2 particiones y un factor de replicación de 1
    1. bin/kafkatopics.sh zookeeper zookeeper_id:2181 create topic mi_topic partitions 2 replicationfactor 1
  13. Visualízalo con –describe y explica los datos que devuelve
    1. bin/kafkatopics.sh zookeeper zookeeper_id:2181 -describe topic mi_topic 
    2. Se habrá creado un leader por cada broker. Como no tenemos réplicas nos dice que la réplica está en el broker donde esta el leader y que está en sincronía con sigo mismo.
  14. Crear un topic con tu nombre_replica que tenga 3 particiones y factor de replicación de 3.
    1. bin/kafkatopics.sh zookeeper zookeeper_id:2181 create topic mi_topic_3 partitions 2 replicationfactor 3
  15. Visualiza con –describe y explica los datos que devuelve
    1. bin/kafkatopics.sh zookeeper zookeeper_id:2181 -describe topic mi_topic_2 
    2. Se habra creado un leader en cada broker. Y en replicas nos aparece los id donde hay una réplica. Y todas ellas están en sincronía porque aun no se han producido mensajes.
  16. Para uno de los servidores de Kafka y vuelve visualizar resultado. Explica los datos que devuelve.
    1. bin/kafka-server-stop.sh
    2. bin/kafkatopics.sh zookeeper zookeeper_id:2181 -describe topic mi_topic_2 
    3. Cambian los leader porque hay un broker que no está disponible. La sincronía también cambia con los dos broker disponible.
  17. Levanta el servidores de Kafka y vuelve a visualizar los resultados. Explica los datos que devuelve.
    1. Se han recuperado las réplicas pero los leaders no se han balanceado. Kafka balancea los leaders cada x tiempo aunque también se puede forzar. Como lo leaders no están balanceados perdemos la alta disponibilidad.