CURSO: DESARROLLADOR PARA APACHE HADOOP CAPÍTULO 2: INTRODUCCIÓN A HADOOP www.formacionhadoop.com
Índice 1 Qué es Big Data? 2 Qué es Hadoop? 3 Historia de Hadoop 4 Por qué utilizar Hadoop? 5 Core Hadoop 2
ÍNDICE Qué es Big Data?
Por Big Data nos referimos exactamente a lo que su propio nombre indica: al tratamiento y análisis de enormes repositorios de datos, tan desproporcionadamente grandes que resulta imposible tratarlos con las herramientas de bases de datos y analíticas convencionales. La tendencia se encuadra en un entorno que no nos suena para nada extraño: la proliferación de páginas web, aplicaciones de imagen y vídeo, redes sociales, dispositivos móviles, sensores, etc. capaces de generar, según IBM, más de 2.5 quintillones de bytes al día, hasta el punto de que el 90% de los datos del mundo han sido creados durante los últimos dos años. Hablamos de un entorno absolutamente relevante para muchos aspectos, desde el análisis de fenómenos naturales como el clima o de datos sismográficos, hasta entornos como salud, seguridad y por supuesto el ámbito empresarial. 4
El Big Data nace para solucionar estos problemas: Como almacenar y trabajar con grandes volúmenes de datos. Como poder interpretar y analizar estos datos de naturaleza muy dispar. Si miramos alrededor nuestro vemos que cualquier dispositivo que usamos genera datos. De esta gran cantidad de datos que tenemos a nuestro alcance, sólo el 20% se trata de información estructura y el 80% son datos no estructurados. Estos últimos añaden complejidad a la hora de almacenarlos y analizarlos. Hadoop aparece en el mercado como una solución para estos problemas, dando una forma de almacenar y procesar estos datos. 5
ÍNDICE Qué es Hadoop?
Apache Hadoop es un framework que permite el procesamiento de grandes volúmenes de datos a través de clusters, usando un modelo simple de programación. Además su diseño permite pasar de pocos nodos a miles de nodos de forma ágil. Hadoop es un sistema distribuido usando una arquitectura Master-Slave, usando para el almacenamiento su sistema de ficheros propio (Hadoop Distributed File System (HDFS)) y para la realización de cálculos algoritmos de MapReduce. 7
ÍNDICE Historia de Hadoop
Hadoop se basa en el trabajo realizado por Google a finales de 1990 2000. Específicamente en los documentos que describen el sistema de ficheros de Google (GFS) publicado en 2003 y MapReduce publicado en 2004. Este trabajo tiene un enfoque nuevo para el problema de la computación distribuida. Cumple con todos los requisitos para la fiabilidad y escalabilidad. Core: Distribuye los datos a medida que se almacenan inicialmente en el sistema. Los nodo pueden trabajar con los datos locales de los mismos. No se requiere la transferencia de datos a través de la red para el procesamiento inicial. 9
ÍNDICE Por qué utilizar Hadoop?
En la actualidad estamos generando más datos que nunca debido a las diferentes tecnologías que se están utilizando en el mercado. A continuación podemos observar los casos de uso más importantes que están generando esta gran cantidad de datos: -Transacciones financieras -Sensores de red -Servidores de logs -Análisis de datos -Correos y mensajes de texto -Redes sociales Los casos descritos anteriormente están generando continuamente datos (registros de logs, coordenadas GPS, análisis de navegaciones..). Por ejemplo, todos los días: Los usuarios de Facebook generan 2.7 billones de comentarios Twitter procesa 340 millones de mensajes 11
La tecnología Hadoop nos ayuda a afrontar los problemas que están surgiendo a la hora de procesar grandes cantidades de datos. Las principales razones de por qué utilizar Hadoop son las siguientes: Los datos empiezan a ser un cuello de botella: La potencia de procesamiento se duplica cada 2 años. La velocidad de procesamiento ya no es problema. Obtener los datos de los procesadores se convierte en el cuello de botella. Cálculo rápido: Velocidad típica de disco en transferencia de datos : 75 MB/sec Tiempo necesario para procesar 100G al procesador : aproximadamente 22 minutos! En la actualidad será peor ya que la mayoría de los servidores tienen menos de 100GB de ram disponibles. 12
Para Hadoop son muy importantes los dos factores que afectan al tiempo de leer un archivo en disco: El primer factor es la cantidad de tiempo para pasar la ubicación en disco donde están almacenados los datos solicitados (esto incluye tiempo de giro, el tiempo de búsqueda y latencia rotacional) y el segundo es la cantidad de tiempo que se tarda en leer los datos del disco (es decir, el tiempo de transferencia). El diseño de HDFS intenta minimizar los efectos de este último realizando esa acción la menor de veces posible, que es una razón por la que Hadoop es más eficiente cuando se trabaja con archivos de gran tamaño y también porqué el tamaño de los bloques en HDFS son más grande que en los de sistemas de archivos UNIX. Por último, HDFS supera las limitaciones de rendimiento de las unidades individuales e incluso ordenadores individuales dividiendo los archivos en bloques y escribiéndolos para poder ser leídos desde varias máquinas a la vez. 13
Problemas con los supercomputadores : - Gran capacidad de procesamiento para datos de tamaño pequeño - Necesitamos mayor procesamiento: Más RAM - Todo esto tiene dos limitaciones muy importantes: - Alto coste - Limitada escalabilidad Problemas con los sistemas distribuidos actuales (MPI, Condor..): - Envío de datos a través de la red para el procesamiento de los datos (cuello de botella) - Dificultad de desarrollo (sincronización, tolerancia a fallos, distribución paralela..) - Consistencia de datos - Disponibilidad de los datos 14
Hadoop soluciona todos los problemas y mejora todo lo visto referente a los sistemas actuales: Recuperación de datos: Si un componente del sistema falla, la carga de trabajo debe ser asumida por unidades que aún funcionen en el sistema. Un error no debe dar lugar a la pérdida de los datos. Con Hadoop, todo esto es posible. Recuperación de un componente: Si un componente del sistema falla, debe ser capaz de volver a unirse al sistema. En un sistema Hadoop, esto se realiza automáticamente sin la necesidad de reiniciar todo el sistema. Consistencia: Si se produce algún fallo de los componentes del sistema durante la ejecución de un trabajo, el resultado del mismo no se debe de ver afectado. Así como no podemos aceptar la pérdida de datos, tampoco podemos aceptar la corrupción de datos. Independientemente de si las máquinas fallan durante nuestro trabajo, el resultado del mismo seguirá siendo válido y preciso gracias a la utilización de un sistema Hadoop. 15
Escalabilidad: Una de las principales características de un sistema Hadoop es la escalabilidad. Añadir carga al sistema debe dar lugar a una disminución de rendimiento en los trabajos, pero nunca dar lugar a un fallo del sistema. Si aumentamos los recursos del sistema, obtenemos un aumento proporcional en la capacidad de carga de datos. Tolerancia a fallos en un sistema Hadoop: - Cuando se produce un error en uno de los nodos el maestro lo detecta y automáticamente reasigna el trabajo a un nodo diferente del sistema. - Reiniciar una tarea no requiere de la comunicación con los nodos que están ejecutando otras partes del trabajo. - Si se reinicia un nodo que ha fallado se añade automáticamente al sistema y se le a signa nuevas tareas. - Si un nodo parece estar funcionando lentamente el maestro puede ejecutar de forma redundante otra instancia de la misma tarea: Se utilizarán los resultados de la tarea que termine primero. A esto se le conoce como ejecución especulativa. HADOOP NOS HARÁ LIBRES! 16
ÍNDICE Core Hadoop
Hadoop es un sistema escalable para el procesamiento de datos. El core de Hadoop está formado por: - HDFS para el almacenamiento de los datos - MapReduce para el procesamiento de los datos: - MapReduce V1 - MapReduce V2 (YARN para la gestión de las tareas) En los siguientes capítulos, veremos con más detalle el funcionamiento del Core Hadoop y cada uno de sus componentes. 18
Hadoop se rodea de una gran variedad de herramientas para poder explotar al máximo su tecnología: - Procesamiento de datos en memoria: Spark - Análisis de datos: Hive, Pig y Impala - Indexación de datos: Solr - Machine learning: Mahout - Adquisición de datos: Sqoop y Flume - Coordinación: Zookeeper - Acceso cliente: Hue - Flujos de datos: Oozie - Base de datos No-SQL: Hbase En los siguientes capítulos, veremos con más detalle muchas de las herramientas descritas. 19
Las aplicaciones están escritas con código a nivel de gran altura: Al escribir programas MapReduce simplemente se le presentará con claves y valores. Como desarrollador, usted no tiene que escribir código para leer datos de los archivos, ni escribir datos en archivos. El desarrollador no tiene que preocuparse de escribir código por si se produce un fallo en la máquina. El código Hadoop proporciona toda esta infraestructura para usted, así puede centrarse simplemente en el código de la lógica de negocio. Los nodos se comunican entre sí lo menos posible: El desarrollador no tiene que preocuparse de escribir código para realizar la comunicación entre nodos. La replicación de los datos se realiza antes de la computación: La replicación de los datos está integrada en Hadoop y no necesita hardware caro (como raid). Además de la disponibilidad y la fiabilidad, la replicación de datos también mejora el rendimiento, ya que Hadoop tiene mayor probabilidad de ejecutar una tarea en el mismo nodo en el que se almacenan los datos, lo que produce un ahorro en el ancho de banda de la red. 20
El tamaño de bloque en HDFS Es enorme en comparación con el tamaño de un bloque en sistemas de archivos UNIX tradicionales. Esto se debe a que HDFS está optimizado para grandes bloques y para lectura en streaming con el fin de minimizar el impacto en el rendimiento del tiempo de búsqueda. Dado un tamaño de bloque de 64 MB, un archivo de 256MB se divide en 4 bloques. Estos es replicado en varios equipos (el factor de replicación predeterminado HDFS es 3). Hadoop intenta ejecutar la computación en los nodos que tienen los datos para evitar la necesidad de copiar los datos por la red en el momento de la computación. El tamaño del bloque recomendado por Cloudera es de 128MB. 21
Contacto administracion@formacionhadoop.com www.formacionhadoop.com TWITTER Twitter.com/formacionhadoop FACEBOOK Facebook.com/formacionhadoop LINKEDIN linkedin.com/company/formación-hadoop 22