domingo, 13 de diciembre de 2015

SAS y Hadoop

Una de las herramientas más maduras en el mundo Big Data es el framework de licencia libre Apache Hadoop. En este post exponemos de forma resumida la integración entre Hadoop y uno de los fabricantes líder en analítica de negocio: SAS.




En primer lugar listamos de forma resumida las principales herramientas de los entornos SAS y Hadoop.

SAS:

SAS ofrece un amplio abanico de soluciones analíticas aplicadas a diferentes sectores de actividad y a diferentes procesos analíticos cubriendo el ciclo del dato completo en una organización





En lo relativo soluciones orientadas a la analítica y tratamiento de datos SAS dispone de un amplio,
portfolio de productos,entre los que cabe destacar:

  • SAS Enterprise Guide es una herramienta intuitiva para crear flujos de procesos de analítica y reporting, permite programar en SAS BASE lenguaje de 4GL orientado al acceso y tratamiento de datos.
  • SAS Visual Analytics: es una herramienta de visualización analítica in-memory, permite hacer reporting y exploración de datos
  • SAS Enterprise Miner: herramienta de data mining, permite generar modelos avanzados para procesos de analítica descriptiva y predictiva
  • SAS Visual Statistics: herramienta orientada a data mining y analítica con potente interfaz visual y capacidad de proceso in-memory
  • SAS Data Management: herramienta orientada a los procesos de integración, calidad y gobierno de datos


Hadoop:

Hadoop es una de las herramientas más utilizadas en el entorno Big Data . Es un framework de licencia libre Apache Hadoop construido en Java.

Hadoop permite la ejecución de procesos de forma distribuida en un conjunto de nodos, permitiendo a las aplicaciones trabajar con volúmenes de datos muy altos (big data).  Se trata de una arquitectura que permite un escalado horizontal muy rápido.

El ecosistema Hadoop se compone de un amplio conjunto de herramientas entre las que cabe destacar:

  • HDFS:Sistema de ficheros distribuidos que sirve de área de almacenamiento del big data, tanto para datos estructurados, como no estructurados
  • MapReduce: Framework que da soporte a la ejecución en paralelo y permite procesar de forma distribuida grandes conjuntos de datos. La fase Map realiza operaciones de filtrado, tratamiento y ordenación, mientras que la fase Reduce realiza los agregados y la salida de datos
  • YARN: Gestor de recursos que gestiona y planifica jobs, supervisando su ejecución.
  • Pig: Lenguaje procedimental de alto nivel, que permite tratar conjuntos de datos almacenados en HDFS. Útil para realizar sencillos análisis o procesos ETL.
  • HiveQL: Lenguaje tipo SQL que facilita el tratamiento vía queries de conjuntos de datos almacenados en sistemas distribuidos
  • Sqoop: Herramienta para transferir información entre Hadoop y BBDD relacionales
  • Flume: Herramienta para carga de datos (alto volumen y streaming) en Hadoop 

Integración SAS - Hadoop:

Existen diferentes modos de conectar SAS con el ecosistema Hadoop dependiendo de la funcionalidad que se pretenda obtener:

  • Ejecutar procesos SAS dentro de los clusters de Hadoop
  • Extraer datos de Hadoop desde procesos SAS o volcar datos SAS a Hadoop
  • Procesos SAS in-memory  que acceden a datos Hadoop

1) Ejecutar procesos SAS dentro de los clusters Hadoop:

En esta arquitectura el código SAS es ejecutado directamente en los clusters de Hadoop. Se evita el movimiento de datos y se aprovecha la capacidad de proceso de Hadoop. Es una arquitectura apropiada para volúmenes muy altos de datos, en los que se necesita mucha capacidad de proceso y el movimiento de datos sería muy costoso. Los productos que trabajan bajo esta arquitectura

En esta arquitectura el código SAS es ejecutado directamente en los clusters de Hadoop. Se evita el movimiento de datos y se aprovecha la capacidad de proceso de Hadoop. Es una arquitectura apropiada para volúmenes muy altos de datos, en los que se necesita mucha capacidad de proceso y el movimiento de datos sería muy costoso.



Los productos que pueden trabajar bajo esta arquitectura:

  • SAS Data Loader: Orientado a usuarios de negocio, permite cargar datos en Hadoop, transformarlos y extraerlos. Tiene la posibilidad de procesar los datos en los clusters de Hadoop
  • SAS in-database Technology: Producto SAS para ejecutar código y procedimientos SAS dentro de la base de datos. Disponible para múltiples BBDD, es posible implementarlo también en Hadoop.
  • SAS ACCESS to Hadoop: Permite ejecutar sentencias HiveQL en Hadoop
  • Procedimiento SAS proc hadoop: Permite ejecutar comandos HDFS, llamar a procesos Pig y ejecutar procesos map-reduce.
proc haddop cfg= ...
HDFS <comandos hdfs>;
MAPREDUCE <opciones map-reduce>;
PIG <opciones PIG>;
run;
  • Procedimiento proc sqoop: Permite ejecutar comandos sqoop desde SAS
  • SAS Data Management: Procesos de integración y calidad de datos integrados en Hadoop. Permite emplear estructuras Hadoop como source o target de los procesos, así como integrar llamadas a Apache Hive, Pig, MapReduce y comandos HDFS como parte del flujo de proceso


2) Extraer datos de Hadoop desde procesos SAS o volcar datos SAS a Hadoop:

La forma tradicional de acceso consiste en procesos SAS que acceden a datos Hadoop que después son procesados en los servidores de SAS o bien datasets SAS que son volcados a Hadoop.


Los productos que pueden trabajar bajo esta arquitectura:

  • SAS/ACCESS to Hadoop: Permite extraer datos de Hadoop vía libname o proc sql conectando con HiveQL
         LIBNAME libref hadoop <cadena conexión> <opciones>
         proc sql; connect to hadoop (user=“user" pw="pwd" server=“server”);
  • Sentencia SAS filename: Permite acceder a ficheros HDFS
         FILENAME fileref hadoop ‘fichero hdfs’ <opciones>


3) Procesos SAS in-memory  que acceden a datos Hadoop :

Los productos SAS que trabajan in-memory procesan el servidor analítico en memoria (LASR). Estos servidores acceden a datos Hadoop procesan los datos en memoria y devuelven al servidor SAS el resultado final. El servidor LASR dispone de varias máquinas que trabajan en paralelo y sobre los que se distribuyen los datos. Existe la posibilidad que el servidor LASR trabaje directamente sobre los clusters de Hadoop.



  • SAS Visual Analytics: Herramienta para visualización analítica que procesa la información en un servidor LASR que puede acceder a datos Hadoop.
  • SAS Visual Statistics: Herramientavisual orientada a estadística avanzada que procesa la información en un servidor LASR que puede acceder a datos Hadoop
  • Procedimientos SAS High Performance (SAS/HPA): Procedimientos SAS orientados a analítica avanzada preparados para trabajar en entornos de alto rendimiento como el servidor LASR conectado a Hadoop.


Como resumen, señalar que la integración de SAS y Hadoop ha avanzado bastante, aunque se encuentra en continua evolución, buscando integrar lo mejor de los dos mundos: capacidad analítica en SAS con capacidad de proceso y crecimiento en Hadoop.

Imágenes obtenidas en: www.sas.com

Formación SAS

4 comentarios:

  1. Hola, estoy utilizando SAS Enterprise Guide y, cada vez que abro un proyecto, cuando tengo que asignar una librería en el servidor tengo que hacerlo utilizando el ratón y pinchando el botón derecho y asignar. A veces se me olvida y me saltan muchos errores ya que tengo colgadas muchas tablas que se utilizan en el servidor y si no se asigna la librería no las reconoce. Mi pregunta es, ¿existe alguna sentencia en código para asignarlas automáticamente sin necesidad de utilizar el ratón?

    Saludos y gracias.

    ResponderEliminar
    Respuestas
    1. Pregunta ya contestada en:
      https://sasybi.blogspot.com.es/2016/06/convocatoria-cursos-sas-en-septiembre.html

      Eliminar
  2. Hola, me parece muy pertinente tu articulo para un trabajo de la Universidad donde quiero explicar las ventajas y desventajas de usas Sas para bd Hadoop. Tienes más documentación de cómo hacer la conexion a través de Sas/acces. Para hacer un test de conexión, tendría que tener una base de datos hadoop en un ambiente hadoop. Tienes algún lugar donde se pueda descargar una base de datos hadoop ? Muchas gracias

    ResponderEliminar
  3. Hola Yenny, la conexión SAS a Hadoop con SAS/ACCESS lo puedes ver en: https://support.sas.com/resources/thirdpartysupport/v94/hadoop/hadoopbacg.pdf
    Para trabajar con Hadoop lo más sencillo es descargarte una máquina virtual de la página de Cloudera u otros fabricantes, supongo que hay otras opciones pero esta es sencilla.

    Lo que sucede es que para conectar SAS con Hadoop necesitas tener licencia del SAS/ACCESS, no me suena que haya nada gratuito.

    Mantenme informado de tus conclusiones,tu estudio es muy interesante.

    Si quieres escribeme a: formacion@datademy.es y te envío documentación por si te es de utilidad

    saludos

    ResponderEliminar