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:
- 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.
- Descomprimir, mover el directorio a
/opt
y, opcionalmente, cambiar propietarios y grupos (aroot
). - Crear un enlace blando para vagos:
sudo ln -s /opt/spark-1.0.1-bin-hadoop1/ /opt/spark
- 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:
Yo también estoy en ello. ¿Tienes pensado usar SparkR?
Un saludo.
Sí, ya lo tengo instalado. De eso hablaré pronto.
Perfecto!
Yo tuve problemas en hacerlo funcionar en Spark+YARN tengo que mirarlo con cluster sin YARN
Un saludo.
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
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…