Saltar al contenido

[BIG DATA] HADOOP, COMPONENTES Y SOLUCIONES

Buenas,

En este nuevo post quiero hablar sobre Big Data mas concretamente sobre hadoop, los componentes que lo pueden complementar así como las soluciones ya preparadas para ello.

Antes de empezar es importante conocer a que nos referimos cuando hablamos sobre Big data, Big Data es una tecnología utilizada para el tratamiento de grandes cantidades de datos, se basa en el concepto de divide y vencerás, básicamente divide grandes cantidades de datos en bloques de 128 MB por defecto aunque es configurable y los distribuye entre los distintos nodos HDFS que conforman el cluster para ser procesado independientemente, es típico cuando se habla de big data ver las 5 “vs”:

  • Volumen: como hemos visto, la cantidad de datos se define “Big” no cuando supera un tamaño definido, sino cuando su almacenamiento, procesamiento y explotación empieza a ser un reto para una organización.
  • Velocidad: la segunda característica del Big Data está relacionada con el ritmo a los cuales los datos se están generando, que suele aumentar constantemente y que necesita una respuesta en tiempo real por parte de las empresas.
  • Variedad: sin embargo, el reto principal del Big Data reside en la gran diferencia de formatos distintos en los cuales encontramos los datos y que pueden ir desde texto sencillo, a imágenes, videos, hojas de cálculos y enteras bases de datos.
  • Veracidad: además, los datos tienen que ser confiables y han que ser mantenidos limpios. Una gran cantidad de datos no tiene valor si son incorrectos y puede ser altamente perjudicial, sobre todo en la toma de decisión automatizada.
  • Valor: finalmente, los datos y su análisis tienen que generar un beneficio para las empresas.

Este va a ser un post puramente teórico ya que este ecosistema esta compuesto por varios componentes como bien podemos ver en su arquitectura

Resultado de imagen de big data hadoop architecture"
Arquitectura

Cuando hablamos de Hadoop tenemos tres componentes que forman el núcleo del mismo:

  • HDFS: Es el sistema de almacenamiento compartido de hadoop, aqui entran en juego los conceptos de Namenode (es el maestro y controlan el cluster) y Datanode (son los esclavos y contendrán la información.)
  • MAPREDUCEActualmente por la versión 2.0,, en la versión 1.0 mapreduce y yarn estaban unidos, en esta versión se separa la gestión de procesos de la administración del clúster, por lo que esta herramienta se encarga de procesar los datos, se divide en mapper y reducer
  • YARN: Esta herramienta se encarga de gestionar el clúster, introduce conceptos como el Application manager el resource manager y el node manager

A grandes rasgos los componentes de YARN son:

  • Resource Manager: Se encarga de gestionar los recursos necesarios, asigna los recursos a través de la creación de contenedores (container).
  • Application Master (Maestro de aplicaciones): se crea un application master por cada trabajo que se realiza, es el encargado de solicitar los recursos de los containers al Resource Manager.
  • NodeManagerSe encarga de supervisar el proceso y de validar el output resultante.

Hasta este punto hemos comentado el núcleo de hadoop, pero aparte se pueden sumar varios componentes mas, los vamos a describir a grandes rasgos ya que cada una de ellos daría para un curso completo:

  • HIVE: Permite acceder a los datos de HDFS como si fueran datos estructurados mediante HQL, muy parecido al SQL.
  • HUE: Es una interfaz gráfica para gestionar Hadoop, es un proyecto de cloudera open source y no como cloudera manager (Es la herramienta de administración propietaria de cloudera)
  • Sqoop: Se utiliza para transferir grandes cantidades de datos de base de datos a hadoop.
  • Flume: Si Sqoop se utiliza para mover datos de bases de datos a haddop, Flume se utiliza para mover logs o cualquier tipo de información no estructurada.
  • SPARK: Esta herramienta es competencia directa para HADOOP, puede trabajar totalmente independiente al ecosistema de este aunque también puede trabajar junto a él, SPARK está cogiendo fuerza porque es mucho más rápido que HADOOP, ya que MapReduce utiliza procesamiento mediante batch y spark lo hace en memoria por eso puede ser hasta 10 veces más rápido.
  • HBASE: Es una base de datos no relacional que se ejecuta por encima de HDFS.
  • PIG: Es un lenguaje de script muy potente para acceder a los datos de HDFS creando procesos mapreduce, conocido como pig latin.
  • ZOOKEEPER: Este producto se creó antes que hadoop, pero se integra muy bien con él proporcionando alta disponibilidad cuando se quiere un clúster.
  • OOZIE: Se utiliza para programar Jobs.

Hay mas componentes a los nombrados, pero estos sin duda desde punto de vista son los mas importantes.

Por ultimo vamos ha hablar sobre soluciones que ya integran todo lo nombrado anteriormente, pero siempre es bueno (para practicar) montar cada componente por separado y entender como funcionan internamente.

Hay distintas soluciones pero sin duda las mas utilizadas ya que las alternativas son 100% propietarias son:

  • Cloudera: Solución menos propietaria que IBM pero no es tan Open Source como Hortonwork. Su herramienta de administración es propietaria (Cloudera Manager).
  • Hortonwork: Es la solución más software libre del mercado,utiliza Ambari como interfaz gráfica de administración y para probar se puede perfectamente descargar una máquina virtual desde la página oficial con todo ya instalado (HDP on Sandbox) para esta máquina virtual necesitaras unos 8G de RAM.

Si quieres practicar con todo lo nombrado anteriormente te recomiendo lso siguientes puntos:

  • Manejar la linea de comandos de hdfs, subir, descargar ficheros, ver como lo divide en bloques de 128Mb, ver como funciona los fsimage y los edits de hdfs… (comandos “hadoop”, “hdfs”)
  • Lanzar Jobs (en hadoop vienen jars de prueba que permiten esto), si sabes java o Python puedes crear tus propios Jobs… y ver como se dividen en mapper primero y después pasan los reducer ordenándolos con sort o shufle.
  • Instalar HIVE y lanza sentencias SQL para acceder a los datos de HDFS, por debajo ejecuta mapper y reducer sin programarlos en java o python.
  • Administrar todo con HUE o ambari veras que es mas sencillo que por los comandos hadoop o hdfs.
  • Haz un clúster de hadoop con zookeeper.
  • Puedes probar SPARK, tiene una shell pero para este tienes que tener conocimientos de scala, es un lenguaje de programación que se ha puesto muy de moda.

Hasta aqui lo que queria comentar sobre la metodología “Big Data” si te ha gustado o te parece interesante el post te agradecería que lo compartas.

Un Saludo

Raúl Cazallas

Deja una respuesta

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