Mi laptop no puede con Big Data ¿Y ahora qué hago?

Hace algún tiempo, mi interés sobre la aplicación del análisis econométrico combinado con las técnicas multivariantes del Machine Learning, guían  mis pasos sobre un terreno no apto para impacientes, ya que todo parece un camino sin salida toda vez que clientes, alumnos, y yo mismo tratamos de manejar cantidades enormes de datos sin las herramientas ni la preparación adecuada del ordenador que usaremos.

Pero empecemos por definir que es cada cosa y luego expondremos qué soluciones reales tenemos al momento de ser consultores o investigadores apasionados al análisis de grandes bases de datos.

¿QUÉ ES BIG DATA? disculpe, ¿ESO SE COME?

Sí, se come, se come los pocos recursos informáticos que tengas a disposición, es mas voraz que una piraña en el amazonas, imaginemos a la piraña yendo a toda la velocidad que pueda, a por la comida, que puede ser un TOAD, o un Apache disfrazado de SERVER, un anarquista disfrazado de R, una Python, etc.

Las consultas a la base de datos por mas simples que sean, dependen de una máquina, con un hardware limitado por el presupuesto que invertimos en él, y que tiene un software que comparte los recursos físicos de esa máquina,(memoria, CPU, disco, red) con todas las aplicaciones que estén corriendo a la vez. Así las instrucciones que ejecutemos en la consola, generan una serie de efectos físicos, por los recursos que se utilizarán para devolver los resultados que estemos pidiendo; inmediatamente la memoria empieza a ser devorada y con ella su amiga la CPU, por si eso no bastara el disco sufre también lo suyo, (¿un buen recurso la Intel Optane P4800X?) ya que programas como R utilizan parte del disco como “memoria” para incrementar la resistencia a la voracidad de hambre por memoria que necesitan los programas de análisis de necesidad de recursos: como la comida a la piraña, los datos a la memoria.

¿ Entonces qué se entiende y qué tan grande es un conjunto de datos (valga la redundancia) “grande” y que los equipos que estamos manejando ahora soporte esa magnitud de requerimientos?

Podemos categorizar grandes conjuntos de datos que R maneja según estas categorías:

  • Medium sized archivos que se pueden cargar en R (dentro del límite de memoria, pero el procedimiento es engorroso (normalmente en el rango de 1-2 GB)
  • Archivos grandes que no se puede cargar debido a limitaciones de R / OS como se mencionó anteriormente. podemos dividir este grupo en 2 subgrupos
  • Large files – (típicamente 2 – 10 GB) que todavía se pueden procesar localmente usando algunas soluciones de trabajo con ordenadores de la gama que me asignaron.
  • Very Large files – (> 10 GB) que necesita la computación a gran escala distribuida, y necesita memoria de procesamiento.( es lo que tenemos)

Como ven, un archivo que supere la memoria convencional de equipos que normalmente están en nuestros hogares o en la oficina que con suerte llegan a 8G de RAM, no es suficiente.

Hay tres opciones para procesar conjuntos de datos muy grandes (> 10 GB) en R.

  1. Utilizar paquetes de entorno integrado como Rhipe para aprovechar el marco Hadoop MapReduce.
  2. Utilizar RHadoop directamente en el sistema distribuido hadoop.
  3. Almacenar archivos grandes en bases de datos y conectarse a través de DBI/ODBC llamadas desde R también es una opción que vale la pena considerar (aunque con petabytes ya es otro historia).

Para estas opciones hay que crear el entorno, en UNIX/LINUX que es la tendencia por la seguridad, facilidad y versatilidad de procesamiento que tiene, y que tengamos por supuesto un ordenador con más memoria (16G mínimo y 32 para adelante como lo más óptimo), ya que R (y otros programas) procesa en memoria los datos, hay formas de hacer más fácil el cargado como la de leer de un dispositivo externo como un buen disco duro y tratar de ejecutar en paralelo.

ENTONCES ¿CÓMO CONFIGURO MI MÁQUINA ESCLAVA?

Digo esclava porque este post está orientado a un usuario individual, entusiasta con el Big Data, por lo cual supongo que no todos pueden tener algo como…

Una configuración típica desde hace unos años es que el nodo esclavo tenga una configuración similar a:

  • Discos duros: 12x2TB SATA (sin RAID, configuración JBOD)
  • Red: 4x1Gb o 1x10Gb
  • Procesador: 2×6 cores
  • Memoria: 64GB o 96GB

Ahora mismo, esa configuración sería la básica en laptops (portátiles), sin mencionar marcas, las configuraciones que aparecen en el mercado (Español) que mas me gustan son.

  • 6GB 2133MHz LPDDR3 memory
  • 512GB SSD storage
  • Intel Core i7 processor
  • MacOS Sierra
  • Radeon Pro 560 along with 4GB memory

También:

  • Powerful 6th-generation Intel Core i7-6700HQ 2.6GHz
  • 1TB 7200RPM + 128GB M.2 SSD
  • 16 GB DDR4-SDRAM

O por último en esta gama.

  • Powerful Intel Core i7 processor
  • Memory 16GB DDR3L
  • Windows 10 Home 64-bit
  • 2TB 5400 RPM HDD

Y la con mas memoria.

  • Procesador Intel® Core™ i7-7700HQ (2,8GHz hasta 3,8 GHz, 8MB de caché, 4 núcleos)
  • Memoria RAM 32 GB DDR4 Memory (2×4 Slot ocupados)
  • Disco duro 256GB SSD + 1000 GB 2.5 inch 5400rpm 9.5mm HDD

Los cálculos Big Data raramente están limitados por la CPU, en general están limitados por la E/S a disco y a la red.

MÁQUINAS VIRTUALES.

Por otro lado podemos contratar servicios completos en la nube, 3 gigantes pugnan por el mercado.

AWS la solución de AMAZON.

https://aws.amazon.com/es/pricing/?nc2=h_ql_pr

Asure la solución de Microsoft.

https://azure.microsoft.com/es-es/pricing/details/virtual-machines/windows/

GOOGLE CLOUD PLATFORM la solución de Google.

https://cloud.google.com/solutions/big-data/?hl=es

Y AHORA COMO ME COMUNICO ENTRE BIG DATA Y LA MÁQUINA.

Todos los usuarios actuales (03/10/2017) parecen consensuar entre ETL’s como Talend, Oracle Data Integrator, Pentaho, SAS Data Integration Studio, SQL Server Integrated Service, y programas de análisis como RapidMiner Studio, IBM SPSS, Pyton o R.
Por otro lado están las herramientas REALES de tratamiento de BIG DATA, como Hadoop, Spark, Talend Open Studio, Pentaho, RapidMiner, Storm, H2O, MongoDB, Cludera.

El preferido (por la mayoría de los Data Scientist) Hadoop se sustenta en la forma en la que almacena y accede a los datos. Hadoop está formado por HDFS y MapReduce. La combinación de estos dos permite que los datos están replicados y distribuidos por N nodos beneficiando la capacidad de acceso a grandes volúmenes de datos, consultas y cálculos analíticos. Cuando queremos ejecutar alguna operación sobre estos datos como están distribuidos en diferentes nodos, Hadoop se encarga de procesar cada porción de los datos en el nodo que los contiene, aprovechando la localidad de tener los datos cerca de donde se van a procesar y permite escalar de forma casi lineal. Si queremos crecer en capacidad, añadimos más nodos y listo. Del almacenamiento se encarga HDFS y del procesamiento MapReduce.

No nos olvidemos de algunas herramientas como emEdit, Utra Edit, CSVed o el mismo Sublime Text, para leer los archivos en formato csv o txt.

No olviden de compartir y opinar.

Saludos!

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un sitio web o blog en WordPress.com

Subir ↑

A %d blogueros les gusta esto: