Anda di halaman 1dari 7

CAPITULO 2: CONCEPTOS BASICOS Y HDFS

Tenemos el core de Hadoop es donde se apoyan todas las tecnologías que se compone de 2 partes
el HDFS y YARN

HDFS será ese sistema de ficheros de Hadoop robusto y poder ir almacenando toda la información
que necesitemos e ir procesándola de forma eficiente.

YARN será el gestor de recursos que tenemos en nuestro clúster de hadoop para poder ir ejecutando
diversas aplicaciones en nuestro sistema

SQOOP y FLUME son herramientas de cara a ingestar información en nuestro cluster hadoop, sqoop
para base de datos relacional, SOLR es herramienta de indexación para hacer búsqueda eficiente,
Oozie es el planificador poder generarnos workflow

Hive Pig herramientas de alto nivel en caso de Hive SQL y pig Pig Latin interpreta ese código y lo
convierte en una aplicación map reduce

YARN: Framework para la planificación de tareas y gestión de recursos del cluster

CAPITULO 3: INTRODUCCION A MAP REDUCE

Entrar en detalle de cuáles son las fases de ese paradigma de programación de map reduce de todo
ese flujo de datos desde que lo cogemos para ser procesado hasta que lo dejamos en su destino.
Veremos cómo se realiza ese flujo de datos con un ejemplo típico de contar palabras (Word Count).

Ficheros de Entrada: Ficheros que necesitamos ser procesado, están almacenados en el HDFS
(Sistema de Ficheros de Hadoop).

Input Format: Lo primero que define a ese flujo de datos es el Input Format, define el formato de
entrada que va a tener esos ficheros, el formato por defecto es Text Input Format que procesa un
formato de texto, hay varios formatos de entrada por defecto que vienen en hadoop y cómo
implementar nuestros propios gracias a ese Input Format va a realizar los Split de fichero es decir
nos los ha dividido en diferentes Split. En ese Input Format cada uno de esos Split se va a
corresponder con cada uno de los bloques que tiene ese fichero

Split de Fichero: Cada uno de estos Split van a hacer estas tareas en paralelo que se van a ejecutar
en nuestro Clúster Hadoop.

Record Reader: El Record Reader va a ser encargado de coger cada uno de esos Split cada uno de
esos trozitos y convertirlo en pares de llave y valor que será lo que utilice nuestro paradigma de
programación map reduce para realizar el procesamiento, el input format siempre va a asociado al
Record Reader en este caso ese text input format que es el que se ejecuta por defecto tiene ese
record reader asociado

Mapper: Función Map será la encargada de procesar todos esos pares de llave y valor en el caso del
Word count será encargado de realizar la separación de esas líneas en palabras para luego realizar
el conteo

Particioner: Sera el encargado de determinar a que reduce tiene que ir ahora veremos que podemos
tener diferentes reducers uno o más de uno o incluso ninguno el particioner se va a encargar de
coger este para de llave valor esta key va a ir al reduce numero 1 esta key al reduce número 3 y asi
con todos esos par de llaves valor que estamos generando como salida porque igual que el maper
utiliza de entrada el par de llave valor como salida también va a generar ese par de llave valor el
partitioner va ir cogiendo cada uno de esos pares llave valor va a comprobar la key y lo va a enviar
al reduce correspondiente.

Shuffle & Sort: (Datos Intermedios) Se va a encargar de coger y realizar esa agrupación y esa
ordenación va a coger y enviar todas las mismas llaves al mismo reduce ahora veremos en el contar
palabras que no podemos repartir la palabra hola en diferentes reducers tenemos que tener la visión
global de todo esto. Va a ser encargada de agrupar todas esas llaves semejantes iguales y las va a
enviar al reduce

Reduce: Va a coger esos datos intermedios que están llegando de las tareas map que están
ejecutando en paralelo en el reduce va a estar la siguiente lógica de nuestro procesamiento, datos
a tener en cuenta ninguna tarea reduce va a comenzar sin antes finalizar todas las tareas map sino
tendríamos un resultado invalido todas las tareas reduce se van a esperar a que finalicen todas esas
tareas map para procesar esa información.

Output Format: Va a hacer el encargado de determinar en que formato se almacenan esos ficheros
por defecto si no indicamos nada será el texto output format va a generarnos un fichero de texto
con los datos de salida por cada reduce nos va a generar un fichero de salida todo esto almacenado
en nuestro HDFS
Ejemplo Word Count

Tenemos ese fichero de entrada almacenada en HDFS para nosotros va a hacer un único fichero nos
va a generar esos input format esos pequeños Split y por cada Split ese Record Reader va a coger
esas líneas y las va a convertir en llaves valor, ya tendremos separadas esos par de llave valor que
será lo que va a procesar nuestro mapper, nuestro mapper tiene un método map que va a ser
encargado de realizar ese procesamiento por cada línea por cada par llave valor se va a llamar a la
función map separa cada una de esas palabras y escribir de salida par de llave valor como llave va a
generar la palabra y como valor va a generar el 1 eso para implementar el algoritmo de contar
palabras asi se va a ir procesando cada una de esas tareas en paralelo cada uno de esos Split se va
a ejecutar en un mapper de manera paralela cada una de nuestras máquinas de nuestro cluster
hadoop y luego cada uno de ellos va a ir procesando con la función map cada uno de esos par de
llave valor.
CAPITULO 4

Un clúster es un conjunto de máquinas tienen instaladas los servicios de hadoop


Maquinas Esclavos: Replicada a diferentes maquinas comodity hardware
Maquinas Maestras: Son las máquinas importantes de nuestro clúster hadoop es donde va a estar
almacenado los servicios importantes se suele poner una maquina más robusta

A nivel de HDFS tenemos el name node era el servicio que almacenaba datos de todos esos bloques
eso ficheros, en las maquinas esclavas tenemos el data node que era el servicio esclavo que se
encargaba de acceder a esa información, el data node va a estar en todos los esclavos, el name node
por ahora está en un equipo, ese name node puede estar en alta disponibilidad de tener los servicios
name node uno en stand bye y otro activo en caso de fallo tener almacenado los datos en otra
máquina en caso de falla ejercer como date node.
A nivel procesamiento tenemos en la versión 1 el Job tracker y el Task tracker, el Job tracker era el
servicio maestro y el task tracker era que iba en el esclavo, el Job tracker tenía todo el peso de todas
esas tareas map reduce que se están ejecutando porque este tipo de arquitectura solo estaba lista
para ejecutar tareas map reduce el task tracker se encarga de ejecutar todas esas tareas map
La versión 2 de map reduce entra una parte el resource manager que sería el encargado de gestionar
todo va en el nodo maestro y el node manager en el esclavo eso a nivel versión 2 de map reduce,
parte de poder ejecutar aplicaciones map reduce también puedo ejecutar aplicaciones spark y todas
esas tecnologías que se apoyan en esa gestión de recursos es más robusto es más escalable no solo
podemos ejecutar aplicaciones map reduce es la versión que viene instalada en todas las versiones
de hadoop nos quedamos con YARN esa versión de map reduce

CAPITULO 7: PARTITIONERS Y REDUCERS

En este capítulo vamos a ver los partitioners y cómo vamos a determinar el número de reducers,
gracias al input format junto con el record reader vamos a ser capaces de dividir ese fichero de datos
en los splits correspondientes para realizar n tareas map en paralelo y cada uno de sus Splits si
utilizamos el formato de entrada por defecto text input format pues se corresponderá con un bloque
de nuestro fichero para este ejemplo concreto tendremos un fichero de datos almacenado en el
HDFS que se corresponde con 3 bloques por el tamaño que tiene ese fichero luego una vez que se
ha dividido en esos splits record reader actúa como parte para convertir esos datos que tiene cada
uno de estos splits en esos pares de llaves valor que necesitamos para procesar la información con
este paradigma de programación map reduce el record reader separa la información en datos de
pares llave valor dependiendo del formato de entrada que utilizemos pues los dividirá de una
manera u otra por defecto utilizamos el text input format , luego a continuación se realizaría el
procesamiento de las tareas map ahí es donde tendríamos la lógica que hemos implementado
nosotros y a continuación esos datos de salida de cada una de las tareas map es enviado al reduce
con esa parte de ordenación y agrupación porque va a un reduce u otro quien determinaba esa
acción pues es el partitioner que vamos a ver ahora el partitioner será encargado de decir bueno
esta llave va al reduce numero 1 esta otra llave va al reduce número 2 y así con todos los datos que
estamos procesados en las n tareas map que estemos ejecutando, vamos a ver el partitioner por
defecto que se utiliza los datos de salida están almacenados en HDFS y el formato de salida por
defecto será el text output format que nos va a dejar un fichero de texto.

Pseudocodigo de Partitioner

La manera de que tenemos de indicar el número de reducers por defecto es 1 reducers podemos
ejecutar n reducers, esta configuración debe ir en el driver (Job.setNumberReducers ()), el
partitioner determina a que reducer se envía cada clave intermedia y sus valores asociados, todos
los datos con la misma llave van al mismo reduce esa como realiza esa división a través del hash
code vamos a ver la implementación de ese hash partitioner y cómo podemos implementar nuestros
propios

El partitioner nos indica para cada una de las llaves a que reduce va a ir, por defecto se usa el
HashPartitioner, garantiza que todos los pares (clave, valor) con la misma clave van al mismo
reducer.

Custom Partitioner

En ocasiones puedes necesitar codificar tu propio Partitioner.

Ejemplo:

 Todas las claves con el mismo valor x deben ser procesadas por el mismo Reducer.
 El Partitioner por defecto puede no ser suficiente para este caso

Pueden ser necesarios para evitar algunos problemas de rendimiento.

Evitar que un Reducer tenga mucha carga de trabajo y otro muy poca

Ejemplo. En el WordCount, queremos evitar que un Reducer tenga que procesar todas las palabras
de 3 o 4 letras mientras que otro tiene que procesar las palabras con 10 u 11 letras.

Como crear y especificar un Custom Partitioner:


 Se debe extender de la clase Partitioner
 Sobreescribir el método getPartition
 Incluir en el driver

Job.setPartitionerClass(Mi Partitioner.class)

CAPITULO 10: ECOSISTEMA HADOOP

Oozie: Herramienta de datos que nos va a permitir generar flujos de trabajo (workflow), vamos a
ver cómo generar nuestro workflow manualmente.

Oozie programar nuestro flujo de trabajo, la arquitectura de oozie se compone de un servidor oozie
a su vez ese servidor oozie que es el encargado de ir gestionando y lanzando esos flujos de trabajo
asu vez ese ese servidor de oozie tiene una BD relacional configurada para almacenar cierta
configuración que necesita para poder lanzar esas tareas y poder gestionar esos flujos de trabajo en
que momento tengo que lanzar un flujo de trabajo y luego el cluster hadoop donde se irán lanzando
esas aplicaciones map reduce de sqoop de hive etc

Terminología Oozie: Es importante identificar que tenemos dos nodos en un flujo de trabajo

Nodo Action: único paso Ejem: Importar tabla en Sqoop o ejecutar un job Mp REDUCE

Nodo Tipo de Control (Flujo de control): ejecución secuencial Ejem: Iniciar un job acabar un job o
ejecutar una acción condicional

Work Flow: colección de acciones y control de flujos Cada workflow de Oozie es un grado acicilico.

Coordinador: da soporte para ejecuciones automáticas de workflow. Puede ejecutar workflows en


intervalos definidos o en base a la disponibilidad de los datos de entrada.

Bundle: colección de coordinadores permite gestionarlos con una sola unidad.


Flume: Herramienta que nos permite ingestar información a nuestro cluster hadoop (HDFS)

Sqoop: herramienta que nos permite extraer información o subir información de nuestra base de
datos relacional

Hue: permitir generar flujos de trabajo a través de una herramienta web de una manera sencilla
arrastrando cajitas

Hive y Pig: Herramientas de procesamiento de datos nos va a permitir procesar datos a través de
aplicaciones map reduce sin tener que implementar una aplicacion map reduce en java

Anda mungkin juga menyukai