En serio con Spark: instalación

Me he puesto en modo estoy serio con Spark. Lo instalé en mi ya manida máquina virtual (voy a subir una nueva versión de ella pronto), pero hoy la voy a instalar en mi portátil. Y con la idea de, en los próximos días, montar un clúster en condiciones.

Los pasos son los siguientes:

  1. Ir a la página de descargas y seleccionar una versión ya precompilada. Hay varias porque Spark se enlaza con librerías relacionadas con Hadoop (aunque uno puede utilizar Spark perfectamente sin él) y hay varias versiones mutuamente incompatibles de Hadoop. Como no tengo ninguna instalada en el portátil, cualquiera me vale.
  2. Descomprimir, mover el directorio a /opt y, opcionalmente, cambiar propietarios y grupos (a root).
  3. Crear un enlace blando para vagos: sudo ln -s /opt/spark-1.0.1-bin-hadoop1/ /opt/spark
  4. Arrancarlo (usando la interfaz para Python): /opt/spark/bin/pyspark

En la consola, ahora, se puede ejecutar:

from random import random

def sample(p):
    x, y = random(), random()
    return 1 if x*x + y*y < 1 else 0

NUM_SAMPLES = 10000000

count = sc.parallelize(xrange(0, NUM_SAMPLES)).map(sample).reduce(lambda a, b: a + b)

print "Pi is roughly %f" % (4.0 * count / NUM_SAMPLES)

Esta captura de htop lo dice todo:

htop_spark

5 comentarios sobre “En serio con Spark: instalación

  1. Jorge A. 20 julio, 2014 12:09

    Yo también estoy en ello. ¿Tienes pensado usar SparkR?
    Un saludo.

  2. Jorge A. 21 julio, 2014 9:24

    Perfecto!
    Yo tuve problemas en hacerlo funcionar en Spark+YARN tengo que mirarlo con cluster sin YARN
    Un saludo.

  3. Luis 25 agosto, 2014 17:21

    Hola, ¿cómo va el uso de Spark + R? Una de las limitaciones con las que me estoy encontrando yo al usar Spark (en este caso con Scala), es el manejo de estructuras de datos tipo “data.frame” o “data.table”, en las que tener datos tabulares con nombres de campos a los que poder acceder. ¿Te has encontrado con esto? ¿Se solucionaría al usar SparkR en caso de poder utilizar las estructuras de datos propias del lenguaje?
    Saludos

  4. Carlos J. Gil Bellosta 25 agosto, 2014 17:30

    Efectivamente, hay cierto desalineamiento entre la manera en que Spark y R están diseñados. En R estamos acostumbrados a usar la estrategia de segmentar-aplicar-combinar a la plyr. Y eso es ajeno a Spark.

    He preguntado a los autores del paquete SparkR sin éxito. Lo mejor que he llegado a hacer es construir un DF enorme, partirlo usando split (que es lentísimo) y entonces sí, paralelizarlo y aplicar mi función en los bloques. Debería existir una manera más natural de utilizar Spark para R pero…

Los comentarios están desabilitados.