Desarrollo de Hadoop y Spark

CHULETA DE DESARROLLO DE HADOOP Y SPARK

Introducción A HADOOP

HDFS:


Es el sistema de archivos distribuido que almacena toda la información del cluster

YARN + MapReduce2:


 Asigna los recursos en los nodos, y buscar ordenar, agrupar la Información.

Tez:


Es Tecnología nueva para hacer lo del mapreduce.

Hive:


Interactual a través de sentencias HSQL

HBase:


Base de Datos Columnar incluida en el Ecología del Ecosistema Hadoop

Pig:


Lenguaje scripting para manipular la información

Sqoop:


Me permite conectar a diferentes bases de datos a través de ODBC

Oozie:


Cron programador de tareas, ejecuta tareas. No se cruza con los recursos del servidor.

Falcón:


Cron programador de tareas de manera visual. Trabaja de la mano de Oozie

Zookeeper:


Parte del Cluster, valida que todo este operando.

Storm:


Procesamiento de datos en tiempo real

Ambari Metrics:


Se encarga de monitorear el cluster, y revisar el funcionamiento de los nodos

Spark:


Me permite trabajar con big data en memoria.

Zeppelin Notebook:


Trabaja con Python, ODBC, y origines de datos extraer, para hacer con graficas y reportes.

Ecosistema Hadoop

A pesar de que Hadoop es mejor conocido por MapReduce y su sistema de archivos distribuido HDFS, el término también es usado por una familia de proyectos que residen bajo la sombra de una infraestructura para la computación distribuida y el procesamiento de datos a gran escala. Casi la totalidad de los proyectos elite cubiertos son hospedados por la Apache Software Foundation, la cual provee soporte para una comunidad de proyectos de software de código abierto. A medida que el ecosistema de Hadoop sigue creciendo, más proyectos, no necesariamente apadrinados por Apache, siguen apareciendo. Cada uno de ellos ofrece servicios complementarios a Hadoop, como también pueden estar construidos sobre el core para agregar niveles de abstracción más altos.

Herramientas de administración de datos

Contar con una administración de datos eficaz es una condición esencial para abordar el procesamiento de información de forma distribuida y el análisis de grandes cantidades de datos de manera óptima y con resultados satisfactorios. Para hacer frente a este reto, Hadoop cuenta con sus dos pilares principales, explicados a fondo anteriormente: HDFS y YARN.

Herramientas de acceso a los datos

Con respecto a este tópico, el ecosistema de Hadoop incluye un conjunto de herramientas que proporcionan el acceso a los datos y la interacción necesaria con los mismos para explotar las capacidades de Hadoop y concentrar más esfuerzos en los procesos de análisis.

Apache Accumulo

Apache Accumulo es un almacén estructurado altamente escalable basado en el sistema de almacenamiento de datos BigTable de Google. Accumulo está escrito en Java y opera sobre HDFS. Aparte, apoya el almacenamiento eficiente y la recuperación de data estructurada, incluyendo consultas por rangos. También permite la capacidad de usar sus tablas propias como entrada y salida de jobs MapReduce, proporciona balanceo de carga y particionamiento automático, compresión de data y etiquetas de seguridad de grano fino.

Accumulo provee un modelo de datos más capaz que los almacenes simples de tipo clave- valor, sin embargo, no puede considerarse como una base de datos relacional. La data es representada como pares clave-valor, donde la clave y el valor están compuestos por múltiples elementos.

Apache HBase

HBase es una base de datos de tipo NoSQL que en gran medida puede considerarse una base de datos distribuida. Técnicamente hablando, HBase está realmente más orientada a ser un Data Store que una Base de Datos, debido a la falta de muchas funcionalidades que pueden encontrarse en un RDBMS, tales como índices secundarios, triggers y lenguajes avanzados de consultas. [49]

Sin embargo, HBase posee muchas funcionalidades que apoyan tanto la escalabilidad linear como la escalabilidad modular. Los clúster HBase se expanden mediante la adición de “RegionServers”, los cuales están instanciados en servidores de capacidades comunes. Si, por ejemplo, un clúster se expande desde 10 a 20 RegionServers, la capacidad de almacenamiento y procesamiento se duplica a la vez. En cambio, un RDBMS puedes escalar de buena forma pero solo hasta cierto punto, concretamente sobre el tamaño de un único servidor de base de datos; y para el mejor rendimiento necesitaría de dispositivos de hardware y almacenamiento especializado. [49]

Apache Hive

Apache Hive es el estándar de facto para las consultas SQL que tienen más de petabytes de datos en Hadoop. Es un motor integral y compatible que ofrece la gama más amplia de la semántica de SQL para Hadoop, proporcionando un potente conjunto de herramientas para los analistas y desarrolladores para acceder a los datos de Hadoop.

Entre las carácterísticas mas relevantes de Hive se encuentran las siguientes:

No precisa de un formato propio para la lectura o escritura de datos. Hive trabaja igualmente bien sobre Thrift como con formatos de datos convencionales o especializados.

Las tablas en Hive son similares a las tablas de una base de datos relacional y sus unidades de datos están organizadas en una taxonomía que va desde las unidades más grandes hasta las más granuladas.

Las bases de datos se componen de tablas, la cuales a su vez se componen de particiones.

Los datos pueden ser accedidos mediante un lenguaje de consultas simple.

Existe soporte para la sobrescritura y agregación de datos.

Dentro de una base de datos particular. La data de las tablas es serializada y cada tabla suele corresponder a un directorio del HDFS, donde cada una de sus particiones determinan como la data es distribuida dentro de los subdirectorios.

Hive soporta todos los formatos de datos primitivos, tales como: BIGINT, BINARY, BOOLEAN, CHAR, DECIMAL, DOUBLE, FLOAT, INT, SMALLINT, STRING, TIMESTAMP y TINYINT. Además, los analistas pueden combinar tipos de datos primitivos para formar tipos de datos complejos como registros, mapas y arrays.

Apache Spark

Apache Spark es un motor de procesamiento de datos caracterizado por su velocidad, ejecución en memoria y sus API’s elegantes y expresivas que permiten a los desarrolladores realizar con eficiencia transmisiones de datos, machine learning o cargas SQL que requieran accesos rápidos y repetitivos sobre conjuntos de datos. La arquitectura de Hadoop basada en YARN provee los fundamentos que permiten a Spark y a otras aplicaciones compartir un clúster y conjunto de datos mientras se aseguran los niveles de consistencia de servicio y respuesta.

Spark está diseñado para la ciencia de datos y su abstracción facilita este tipo de tareas. Los científicos de datos suelen usar algoritmos de machine learning, los cuales se caracterizan por ser repetitivos. La habilidad de Spark para mantener en memoria un conjunto de datos incrementa considerablemente la velocidad de procesamiento, haciendo a Spark el motor ideal para la implementación de este tipo de algoritmos.

Apache Spark consiste en un núcleo y un conjunto de librerías. El core es el motor de ejecución distribuida y las API’s de Java, Scala y Python ofrecen una plataforma para el desarrollo de aplicaciones distribuidas de extracción, transformación y carga. También existen librerías, desarrolladas sobre el motor, que ofrecen diversas cargas de trabajo para el streaming, SQL y machine learning.

  • Spark SQL:


    permite unificar el acceso a data estructurada, la cual puede venir de distintas fuentes. Spark SQL permite la unificación de dicha data en un solo sitio. Tiene compatibilidad con Hive y conexiones mediante JDBC.
  • MLlib:


    librería escalable de Spark que contiene algoritmos de Machine-Learning.

  • GraphX:

    API facilitado por Spark para la manipulación de grafos.

  • Spark Streaming:

    Provee a los usuarios la capacidad de recuperar trabajos que no pudieron ser finalizados junto con su último estado.

Apache Storm

Storm es framework de computación distribuida en tiempo real de código libre. Permite que sea más fácil procesar corrientes ilimitadas de datos de manera fiable, haciendo para el procesamiento en tiempo real lo que Hadoop hace para el procesamiento por lotes.

Existen dos tipos de nodos en un clúster de Storm: el nodo maestro y los nodos trabajadores. El nodo maestro ejecuta un programa demonio llamado “Nimbus” que es similar al JobTracker de Hadoop. Nimbus es el responsable de distribuir el código a través del clúster, asignando tareas a las máquinas y monitoreando posibles fallas.

Cada nodo trabajador corre un programa demonio llamado “Supervisor”. El Supervisor se mantiene en escucha por el trabajo asignado a su nodo y comienza y detiene los procesos cuando sea necesario acorde a lo que Nimbus le haya asignado. Cada nodo trabajador ejecuta un subconjunto de topologías.

Apache Pig

Pig es una plataforma de alto nivel para extraer, transformar y analizar datasets de gran tamaño.Pig incluye un lenguaje de scripting procedimental que permite agregar y añadir estructura a los datos analizados. Esta herramienta también provee a los analistas de datos la facilidad de poder descubrir nuevos valores sobre el cluster

Apache Solr

Solr es una plataforma distribuida de búsqueda capaz de indexar capacidades de hasta petabytes. Esta plataforma facilita las búsquedas interactivas sobre los datos además de ayudar a entrar patrones de datos, relaciones y correlaciones a través de estos datos.

Apache Phoenix

Phoenix es una capa SQL que funciona sobre HBase y provee acceso directo y de baja latencia hacia HBase.

Herramientas de integración, gobernabilidad y flujo de trabajo

Las herramientas de integración permiten crear niveles de abstracción con el fin de facilitar actividades como la extracción, transformación, retención y replicación de los datos entre distintas herramientas pertenecientes al ecosistema.

Apache Falcón

Falcón es un sistema de procesamiento y gestión de alimentación destinada a facilitar dichas tareas sobre a los consumidores finales sobre un clúster Hadoop. Falcón simplifica el desarrollo y gestión de tuberías de procesamiento de datos con mayor nivel de abstracción, evitando el uso de código extenuante y complejo en las aplicaciones de procesamiento de datos al ofrecer servicios inmediatos de gestión de data. Esto simplifica la configuración y orquestación del flujo de datos, recuperación de fallas y flujos de retención de datos.

Algunas de las carácterísticas de Falcón son:

  • Manejo de la replicación de los datos: Falcón replica los archivos del HDFS y las tablas de Hive a través de diferentes clústers para recuperarse en caso de fallos. 
  • Manejo del ciclo de vida del dato:
    Falcón maneja las políticas de cuánto tiempo debe existir un dato en específico. Estas políticas son también conocidas como políticas de desalojo.
  • Linaje y trazado de los datos: Falcón maneja muy bien las relaciones entre entidades, permitiendo a los usuarios ver el linaje de los datos de grano grueso.
  • Coordinación y programación de procesos: Falcón se encarga de forma automática de la lógica compleja de los manejos tardíos de datos y los posibles reintentos.
  • Programación de procesos de datos declarativos: Falcón introduce abstracciones de alto nivel con el fin de separar la lógica del negocio de la lógica de aplicación, maximizando la reutilización y la consistencia cuando se construye una tubería de procesamiento de datos.
  • Aprovecha servicios existentes de Hadoop: Falcón se apoya de otros servicios de Hadoop, como Apache Oozie, para coordinar y planificar de forma transparente los flujos de datos existentes.

Apache Atlas

Es la herramienta de manejo de metadatos por excelencia en Hadoop. Es un sistema escalable que provee servicios de gobierno de datos a nivel de metadatos sobre los datos almacenados en Hadoop.

Apache Sqoop

Apache Sqoop es una herramienta diseñada para transferir datos de manera eficiente entre fuentes de datos estructurados, semiestructurados y no estructurados. Por ejemplo, las bases de datos relacionales poseen un esquema bien definido para el almacenamiento, por lo tanto se clasifican como fuentes de datos estructuradas. Por otro lado, Cassandra y Hbase son ejemplos de fuentes de datos semiestructurados. Por último, HDFS es un claro ejemplo de fuentes de datos no estructurados. Apache Sqoop es capaz de soportar cada una de estas fuentes.

Sqoop provee un mecanismo opcional para alcanzar altos niveles de conectividad con sistemas externos. El API de extensión de Sqoop provee un framework conveniente para construir nuevos conectores, los cuales pueden integrarse fácilmente a Sqoop y conectarlo con distintos sistemas.

Sqoop, por sí mismo, viene ligado a varios conectores de distintas bases de datos populares. Entre ellas se pueden mencionar: Hive, Hbase, Teradata, Netezza, Oracle, MySQL, Postgres y HSQLDB. Una vez conectado con algún sistema externo, Sqoop puede usar su API CLI para la manipulación de los datos.

Apache Flume

Aplicación distribuida, confiable y con alta disponibilidad para obtener, agregar y mover datos que necesiten ser obtenidos como streaming. Como aplicación puede ser distribuida entre múltiples nodos. Todos los componentes en flume fueron diseñados para prevenir la perdida de datos.

Apache Kafka

Sistema de mensajería escalable, rápido y tolerante a fallos. Funcionalidad de sistema de publicación y suscripción de canales. Ofrece una alta tasa de salida, confiabilidad y replicación.

Herramientas de seguridad

Las herramientas de administración y monitoreo capaces de proveer distintos niveles de seguridad sobre un clúster son indispensables para el ecosistema Hadoop. Algunas de las funcionalidades deseadas de estas herramientas son la administración de seguridad centralizada, servicios de autenticación, autorización, auditoria y protección de los datos.

Apache Knox

Apache Knox consiste en una interfaz para interactuar con un clúster Hadoop mediante un API REST. Knox provee un mismo punto de acceso para todas las interacciones de tipo REST con el clúster Hadoop.

Knox es capaz de proveer funcionalidades para ayudar en el control, integración, monitoreo y automatización de tareas críticas de administrativas y seguridad del clúster, tales como:

  • Autenticación (LDAP y Active Directory Authentication Provider).
  • Federación/SSO (cabecera HTTP basada en Identity Federation).
  • Autorización (autorización a nivel de servicios).
  • Auditoria.

Para la autenticación, Knox tiene distintos proveedores responsables de recolectar las credenciales presentadas por el API, validarlas y comunicar la respuesta de éxito o fallo de la autenticación al cliente o al resto de la cadena de proveedores. Apache Knox utiliza por defecto el proveedor de autenticación Shiro. Este proveedor está basado en el proyecto de Apache Shiro, el cual tiene el propósito de autenticar credenciales contra un servicio de usuarios LDAP. Knox también tiene soporte para OpenLDAP, ApacheDS y Microsoft Active Directory.

Con respecto a la Federación/SSO para los clientes que requieren credenciales sobre un conjunto limitado de entidades de confianza dentro de la organización, Knox puede ser configurado para federar la identidad autenticada de un evento de autenticación externo. Esto se hace a través de proveedores cuyo rol es de federación. El proveedor de federación por defecto de Knox es un simple mecanismo de propagación de identidad a través de cabeceras HTTP que especifiquen el nombre de usuario y grupo para el usuario autenticado.

El papel de autorización es usado por proveedores que toman decisiones de acceso para ciertos recursos en base al contexto de la identidad del usuario. Este contexto de identidad esdeterminado por el proveedor de autenticación y las reglas de mapeo del proveedor de afirmación de identidad. La evaluación del contexto de identidad para un usuario o grupo de usuarios contra ciertas políticas de acceso es realizada por el proveedor de autorización con el fin de determinar si el acceso debería darse para ese usuario y para esos recursos en específico. Knox por defecto provee una autorización basada en un proveedor ACL que evalúa reglas comprendidas para nombres de usuario, grupos y direcciones IP.

Para la auditoria, la cual consiste la actividad de determinar qué acciones fueron hechas por quienes durante qué periodo de tiempo, Knox incorpora una extensión del framework Log4j y puede ser extendido o reemplazado con cualquier otra implementación de acuerdo a ciertas necesidades.

Apache Ranger

Apache Ranger ofrece un framework de seguridad centralizada para manejar el control de acceso de grano fino sobre los componentes de acceso de datos de Hadoop como Apache Hive y Hbase. Usando la consola de Ranger, los administradores pueden manejar fácilmente las políticas de acceso para un recurso, ya sean archivos, carpetas, bases de datos, tablas, columnas, entre otros. Estas políticas pueden ser definidas para un usuario o grupo en particular para luego aplicarlas dentro de Hadoop.

Los administradores de seguridad también pueden usar a Ranger para gestionar auditorias y análisis de políticas para lograr un control más profundo sobre el entorno. Ranger también permite delegar la administración de ciertos datos a otro grupo de dueños, con el objetivo de descentralizar la propiedad de los datos.

Entre las características de Ranger se pueden destacar:

  • Soporte para Apache Storm, Apache Knox, Hadoop HDFS, HBase, Hive, bases de datos Oracle, entre otros.
  • API’s REST para el manejador de políticas.
  • Autorizaciones de grano fino que permiten realizar una acción y/o operación específica sobre una herramienta o componente de Hadoop, las cuales son gestionadas a través de una herramienta de administración central.
  • Métodos estandarizados de acceso para todos los componentes de Hadoop.
  • Soporte para distintos métodos de autorización: control de acceso basado en roles o atributos, entre otros.

Apache Ranger tiene una arquitectura descentralizada con los siguientes componentes internos:

  • Ranger portal:


    Es la interfaz central de administración de seguridad. Los usuarios pueden crear y actualizar políticas, las cuales son guardadas en una base de datos de políticas.

  • Ranger Plugins:

    Son programas de Java livianos que se incrustan dentro de procesos para cada componente del clúster. Estos plugins arrastran políticas de un servidor central y las guardan localmente en un archivo. Cuando una petición de un usuario viene a través de un componente, estos plugins interceptan la petición y la evalúan contra la política de seguridad. Los plugins también recolectan datos acerca de la petición y los envían al servidor de auditoria.

  • Sincronización de grupos de usuario:

    Apache Ranger provee una utilidad de sincronización para traer usuarios y grupos de Unix o de LDAP o Active Directory. La información del usuario o grupo es guardada en el portal de Ranger y usada para la definición de políticas.

Herramientas operacionales

A continuación, se mencionaran distintas herramientas del ecosistema que permiten administrar, monitorear y realizar operaciones sobre un clúster Hadoop. En este conjunto de herramientas podemos encontrar funciones como la planificación de tareas, instalación de otras herramientas, monitoreo del clúster y la comunicación de las configuraciones de distintos nodos para realizar tareas automatizadas.

Apache Ambari

Ambari es un proyecto de Apache, cuya finalidad es facilitar las tareas que permiten al usuario gestionar, monitorizar e instalar clústers de Hadoop. Ambari proporciona una manera sencilla de gestionar mediante una interfaz web y sus API’s restful un clúster Hadoop.

  • Las facilidades que proporciona a los administradores de sistemas son las siguientes:
  • Instalación paso a paso de los servicios de Hadoop en un número ilimitado de máquinas.
  • Configuración distribuida para el clúster de todos los servicios de Hadoop.
  • Gestión centralizada para arrancar, detener o reconfigurar los servicios Hadoop en todo el clúster.
  • Panel de Control para monitorizar el estado así como la disponibilidad del clúster Hadoop.
  • Métricas de monitorización con servicios Ganglia.
  • Alertas de sistema y envío de correos mediante el sistema Nagios cuando es necesario, por ejemplo, cuando un nodo no responde, cuando la situación del espacio en disco es crítica, cuando uno de los nodos deja de ofrecer un servicio, entre otros eventos.

Apache Oozie

Oozie es un planificador de flujos de trabajos de Apache que permite gestionar trabajos para Hadoop. Esta aplicación nos da la posibilidad de encadenar varios trabajos de diferentes tipos (MapReduce, Java, Shell, Pig, Hive…), así como de programar su ejecución, ya sea periódica o puntual. Los trabajos pueden ser parametrizados. Esta funcionalidad nos permite tener configurados ciertos trabajos para Hadoop que posteriormente pueden ser ejecutados por usuarios que no tienen por qué conocer su implementación.

No solo soporta herramientas del entorno Hadoop, también permite la programación de tareas específicas como ejecución de programas o shell script. Como la mayoría de las herramientas que se encuentran en un entorno Hadoop, es escalable, confiable y provee capacidades para añadir mayores funcionalidades.

En Oozie se manejan dos tipos básicos de jobs:

  1. Oozie Workflow: flujo de trabajo representado como un grafo dirigido y acíclico. Existirán tareas las cuales estarán atadas a un control de dependencia, para ser ejecutadas primero deben ser ejecutadas otras en cadena hasta llegar al turno de la tarea la cual estuvo esperando.
  2. Oozie Coordinator: las distintas tareas a ejecutar son flujos de trabajos completos los cuales pueden ser ejecutados según una fecha/hora específica o según la disponibilidad que exista de los datos a utilizar.

Los flujos de trabajo son ejecutados por Oozie, pero las tareas en específico son ejecutadas por Map-Reduce. Lo cual permite a Oozie confiar en las capacidades de Hadoop para manejar las tareas a través del clúster y balancear la carga.

Apache Zookeeper

Apache ZooKeeper es un proyecto de software de la Apache Software Foundation, que provee un servicio de configuración, mantenimiento, sincronización y servicios centralizados para grandes sistemas distribuidos. ZooKeeper es un subproyecto de Apache Hadoop. ZooKeeper tiene como objetivo proporcionar un núcleo simple y de alto rendimiento para la construcción de primitivas de coordinación más complejas en el cliente. La interfaz de ZooKeeper permite un alto rendimiento en la implementación del servicio. Las solicitudes que recibe ZooKeeper se ejecutan de forma FIFO (primero en entrar, primero en salir).

El servicio de Zookeeper permite a un conjunto de servidores que utilicen replicación lograr alta disponibilidad y rendimiento. Su alto rendimiento permite a un gran número de procesos utilizar la coordinación que provee el kernel para manejar todos los aspectos de dicha coordinación.


HDFS

hdfs dfs –
ls -> Lista el contenido de los directorios
count ->cuenta el numero de directorios, ficheros y bytes en un directorios
chgrp, chown y chmod -> Cambia los permiso de ficheros y directorios
help -> Muestra la ayuda
cat y text -> Muestra el contenido de los ficheros
tail -> Muestra el ultimo 1KB del contenido del ficheros
get y copyToLocal -> Copia un fichero o directorio desde HDFS al sistema de fichero
put y copyFromLocal –> Copia un fichero o directorio desde el sistema de ficheros local a HDFS
getMerge -> Obtiene una mezcla de dos ficheros en único fichero y lo almacenado en el sistema local
mv -> Mueve ficheros y directorios en HDFS
cp -> Copia ficheros y directorios en HDFS
mkdir -> Crea directorios nuevos en HDFS
rm -> Borra un fichero en HDFS(mueve a la papelera)
rm -R Borra un directorio recursivamente en HDFS (mueve a la papelera)Imagen

Ejemplo:



hadoop fs -lsr /zona_cruda | awk ‘{print $8}’ | sed -e ‘s/[^-][^\/]*\//–/g’ -e ‘s/^/ /’ -e ‘s/-/|/’

hdfs dfs -ls Lista ficheros 
hdfs dfs -cp Copia ficheros HDFS a HDFS 
hdfs dfs -mv Mueve ficheros HDFS a HDFS 
hdfs dfs -rm Borra ficheros en HDFS
hdfs dfs -rm -R Borra recursivamente
hdfs dfs -cat Muestra fichero en HDFS 
hdfs dfs -mkdir Crea directorio en HDFS
hdfs dfs -chmod … Cambia permisos de fichero
hdfs dfs -chown … Cambia propietario/grupo de fichero 
hdfs dfs -put Copia de local a HDFS
hdfs dfs -get Copia de HDFS a local


SQOOP
FLUME

HIVE


SPARK

SPARK STREAMING

SPARK SQL

SPARK SUMMIT


SCALA
PYTHON

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.