jueves, 31 de agosto de 2017

Un paseo general por el mundo del Big Data y Hadoop…

Hoy en día escuchar de Big Data, Analytics, Machine Learning, Inteligencia Artificial, Iot; son términos que van dominando el mundo de la tecnología.

Altos volúmenes de datos y alta velocidad, no son garantía de un Big Data exitoso. Su variedad o diversidad enriquecido por las distintas fuentes organizadas y armonizadas, en realidad le otorgarán su potencial real que es la generación y/o manejo del valor empresarial.

Gartner define el big data como grandes volúmenes, alta velocidad y gran variedad de activos de información. Añadiendo la no estructura original y alto crecimiento, estaría un poco más completa.

En los últimos dos años una mayor cantidad de empresas comenzó la recolección y almacenamiento de todo tipo de formatos y tamaños de datos con y sin estructura, además de extraer cierto valor de estos. Con una diversidad de arquitecturas, tecnologías, modelos.


Esto va más allá de lo que conocemos hoy, esto es, si bien el big data subyace en clusters y procesamiento paralelo; su verdadero potencial será puesto a prueba con las arquitecturas cuánticas. Aunado a la integración del IoT(Internet de las cosas), las nubes y los algoritmos de inteligencia artificial que evolucionan. Centrando en las herramientas analíticas el reto de exponenciar su valor. Hoy en día su balanceo con Streaming y Lagos de Datos lleva a las arquitecturas más balanceadas para su administración y explotación.

En esta ocasión nos centraremos en Hadoop y el entorno que lo envuelve, considerando que es uno de los medios de gestión de Big data más populares y open source. Sin dejar de lado el paso que las herramientas abren para brindar mejores resultados y no depender solo de Hadoop. No olvidemos como el boom de los XML para integrar fue relevado por la no estructura de JSON.

En poco tiempo se estima un crecimiento importante de la arquitectura y sistemas para almacenar, organizar y gestionar grandes volúmenes de datos, madurarán los marcos de referencia y seguridad para facilitar la explotación y análisis. Más aún importante es la capacidad de reconocimiento de patrones y aprendizaje de estos datos.

La convivencia con distintas fuentes y medios de información se armonizan y los esquemas estructurados solo son una parte del potencial real que incluso va mucho más allá de tener dashboards, dando paso a los acelerados y lenguajes que simplifican su uso y explotación más aún si están proyectados para interactuar en tiempo real con dispositivos y aplicativos que explotan el estudio de los patrones de comportamiento, para predecir, aprender, etc.

Hadoop
Apache Hadoop es software de código abierto que sirve para almacenar y analizar cantidades masivas de datos, tanto estructurados como no estructurados: terabytes o más de correo electrónico, lecturas de sensores, registros de servidor, fuentes de Twitter, señales de GPS, etc; cualquier tipo de datos que pueda imaginar. Con Hadoop puede procesar grandes conjuntos de datos desordenados y obtener conocimiento y respuestas a partir de ellos, de ahí la expectación creada.

Apache Hadoop es un framework de software que soporta aplicaciones distribuidas bajo una licencia libre.1​ Permite a las aplicaciones trabajar con miles de nodos y petabytes de datos. Hadoop se inspiró en los documentos Google para MapReduce y Google File System (GFS).

Una funcionalidad clave es que para la programación efectiva de trabajo, cada sistema de archivos debe conocer y proporcionar su ubicación: el nombre del rack (más precisamente, del switch) donde está el nodo trabajador. Las aplicaciones Hadoop pueden usar esta información para ejecutar trabajo en el nodo donde están los datos y, en su defecto, en el mismo rack/switch, reduciendo así el tráfico de red troncal (backbone traffic).

El Hadoop Distributed File System (HDFS) es un sistema de archivos distribuido, escalable y portátil escrito en Java para el framework Hadoop. Cada nodo en una instancia Hadoop típicamente tiene un único nodo de datos; un clúster de datos forma el clúster HDFS. La situación es típica porque cada nodo no requiere un nodo de datos para estar presente. Cada nodo sirve bloques de datos sobre la red usando un protocolo de bloqueo específico para HDFS. El sistema de archivos usa la capa TCP/IP para la comunicación; los clientes usan RPC para comunicarse entre ellos.

La lista de sistemas de archivos soportados incluye:
  • HDFS: El sistema propio de Hadoop. Está diseñado para la escala de decenas petabytes de almacenamiento y funciona sobre los sistemas de archivos de base.
  • Amazon S3. Éste se dirige a clusters almacenados en la infraestructura del servidor bajo demanda Amazon Elastic Compute Cloud. No hay conciencia de racks en este sistema de archivos, porque todo él es remoto.
  • CloudStore (previamente llamado Kosmos Distributed File System), el cual es consciente de los racks.
  • FTP: éste almacena todos sus datos en un servidor FTP accessible remotamente.
  • HTTP y HTTPS de solo lectura.
Hadoop puede trabajar directamente con cualquier sistema de archivos distribuido, el cual puede ser montado por el sistema operativo subyacente simplemente usando la URL file://, sin embargo esto tiene un precio: la pérdida de la localidad. Para reducir el tráfico de red, Hadoop necesita saber qué servidores están más próximos a los datos; esta información la pueden proporcionar los puentes específicos del sistema de archivos específico de Hadoop.

Spark
Apache Spark ™ es un motor rápido y general para el procesamiento de datos a gran escala, cuenta con un avanzado motor de ejecución de DAG que soporta el flujo de datos acíclicos y la computación en memoria.

Spark ofrece más de 80 operadores de alto nivel que facilitan la creación de aplicaciones paralelas. Y se puede utilizar de forma interactiva de la Scala, Python y R shells. Potencia una pila de bibliotecas incluyendo SQL y DataFrames , MLlib para aprendizaje automático, GraphX y Spark Streaming . Puede combinar estas bibliotecas de forma transparente en la misma aplicación.

 Puede ejecutar Spark utilizando su modo de agrupación independiente , en EC2 , en Hadoop YARN o en Apache Mesos . Acceda a datos en HDFS , Cassandra , HBase , Hive , Tachyon y cualquier fuente de datos de Hadoop.


Pig
Apache Pig es una plataforma para el análisis de grandes conjuntos de datos que consiste en un lenguaje de alto nivel para expresar los programas de análisis de datos, junto con la infraestructura para evaluar estos programas. La propiedad más destacada de los programas de Pig es que su estructura es susceptible de una gran paralelización, lo que a su vez les permite manejar conjuntos de datos muy grandes.

En la actualidad, la capa de infraestructura de Pig consiste en un compilador que produce secuencias de programas Map-Reduce, para los cuales ya existen implementaciones en paralelo a gran escala (por ejemplo, el subproyecto Hadoop). La capa lingüística de Pig se compone actualmente de un lenguaje textual llamado Pig Latin, que tiene las siguientes propiedades clave:



Facilidad de programación. Es trivial lograr la ejecución paralela de tareas de análisis de datos simples, "embarazoso paralelo". Las tareas complejas compuestas de múltiples transformaciones de datos interrelacionadas se codifican explícitamente como secuencias de flujo de datos, haciéndolas fáciles de escribir, comprender y mantener.

Scala
Scala es un híbrido funcional y orientado a objetos de lenguaje de programación que se ejecuta en JVM (Java Virtual Machine). El nombre es un acrónimo de Lenguaje escalable. Está diseñado para la simultaneidad, la expresividad y la escalabilidad.

Se utiliza en algunos de los componentes del ecosistema de Hadoop como Apache Spark, Apache Kafka, etc. Así que sería realmente útil para alguien desarrollar aplicaciones usando Scala que usa Hadoop y los proyectos de ecosistemas.

Una arquitectura big data de Shah y Sqwant:


En esta primera aproximación al Big data, llegamos hasta aquí.
Sin duda alguna en un siguiente artículo modelaremos algo de Lambda, Kappa y las arquitecturas comúnes del mercado para su implementación On Premise o Cloud.

Por Jorge Mercado

JMCoach
@JormerMx


Il miglioramento continuo funziona?

 Molte volte abbiamo sentito parlare di miglioramento continuo e non ne vediamo i reali benefici, questo forse è dovuto alla scarsa conoscen...