Apache Hadoop
Después de un poco de conocimiento general empezaremos con lo divertido, y que mejor que empezar con el hijo prodigo de Apache Software Fundation, Hadoop.
Empecemos por explicar como funciona Apache Hadoop como elemento principal de un clúster .
Apache Hadoop se compone de tres principales componentes NameNodes, DataNodes, y SecondaryNameNode a nivel administración y almacenamiento.
NameNode: El namenode es el componente principal para la coordinación de las máquinas, el se encarga de monitorear el estado de las demás máquinas y de si misma, es el encargado de la distribución y calibración de la infornación del clúster de la manera más optima posible. El NameNode se compone de un Componente Principal:
DataNodes: Los datanodes son los encargados del almacenamiento de la información en el clúster el conjunto de la información de los datanodes se le conoce como Storage.
SecondaryNameNode: En terminos simples ayuda al namenode en algunas operaciones de escritura y lectura del namenode, para permitir al namenode realizar tareas principales más rápido.
Hoy en día ya no estamos restringidos a solo tener un namenode y varios datanodes, hoy hadoop nos provee una característica para tener varios namenodes en un clúster con varios namespaces diferentes y que cada namenode controle el mismo conjunto de datanodes y mejor aún entre los namenodes activos se repartan el storage, en este modelo los namenode son independientes entre cada uno y se agrega una nueva característica a este modelo, llamada Block Pool.
Block Pool: Es un conjunto de bloques que pertenecen a un namespace en especifico. Estos pools son independientes entre cada uno y como apreciamos en la imagen siguiente, cada bloque de pool que podemos encontrar en un clúster con varios namenodes guarda su información por bloques en el conjunto de datanodes.
ClusterID: Es un identificador para distinguir y asociar el conjunto de nodos que pertenecen a un clúster. el ClusterID nos sirve en dado caso que por alguna razón quisiéramos tener dos clústers con diferente arquitectura en nuestro Hardware.
Namespace Volume: Es el conjunto resultante del Pool y Namespace correspondiente a cada Namenode en la imagen serían los rectangulos punteados. Esto nos ayuda a excluir de manera eficiente la información en el caso de que tengamos varios Namenodes sobre el mismo conjunto de datanodes, haciendo más fácil el formateo de cada Namespace y su pool de datos.
Como podemos ver en un esquema de clúster en el que tenemos varios namenodes, se crean conjutos de información disjuntos a pares (dos a dos) cosa que no se cumple cuando creamos un clúster con Alta Disponibilidad.
Como podrán ver hadoop es la parte más importante para un clúster, pero ustedes se preguntarán, ¿Qué pasa si el Namenode muere?, amigos míos esa es una muy buena pregunta, por eso las distribuciones de hadoop nos brindan algo llamado Alta Disponibilidad.
Alta Disponibilidad: Una idea sumamente ingeniosa, por parte de los proveedores de distribuciones es la Alta Disponibilidad del Namenode, ya que si el Namenode llegará a morir por cualquier motivo, prácticamente nuestro clúster sería inservible aunque los demás componentes estuvieran en optimas condiciones y depende como estén configurados. Pero la solución viene dada por otro componente de nuestros amigos Apache Fundation, Apache Zookeeper, del cuál les hablaré más adelante, gracias a este componente podemos garantizar la Alta Disponibilidad del Namenode en nuestro clúster. Ya que si el zookeeper detecta que por algún motivo no responde el Namenode principal, tiene otro Namenode en estado de standby el cuál tiene el mismo namespace y blockstorage que el anterior, como podemos ver los Namenodes no se comunican entre sí, el responsable de saber el estado de ambos es el zookeeper y el se encarga de tomar las decisiones y coordinar ambos namenodes, una idea simplemente genial.
Y ustedes se preguntarán, que pasa si llega a caer otro nodo que no contiene el namenode, ¿La información se pierde?, ¿Afecta el rendimiento del clúster?, ¿La información cuenta con alta disponibilidad?. Bueno hadoop cuenta con algoritmos hermosos para distribuir la información de los cuales tal vez en un futuro les platique, nosotros podemos indicarle en la configuración del clúster cuantas replicas de nuestra información queremos, por decir si tenemos un clúster de 3 datanodes y con replica 3, entonces todos los datanodes tendrán la misma información alojados en si mismo, pero eso no significa que ellos respondan con toda la información si los 3 datanodes están vivos ellos tienen prioridad sobre el block size que les corresponde, teniendo los otros dos en caso de falla de algún datanode. Si tenemos un clúster con 5 datanodes y con replica 3, a lo más cada datanode tendrá información de dos datanodes en la misma familia de datanodes del clúster y la si mismo.
Si un datanode cae, claro que pierde rendimiento, ya que la ventaja de utilizar tecnología distribuida es el de poder paralelizar los procesos, y si contamos con un nodo menos, la arquitectura si no es un clúster con muchos recursos, lo resentirá, prácticamente donde notaríamos un cambio sería en el rendimiento del clúster, pero no en su metadata y sus datos.
Hadoop tiene consigo YARN y MapRed configurados por default, otros componentes importantes para el manejo de Jobs (Procesos Distribuidos) o la administración de recursos en el clúster que iremos descubriendo poco a poco.
Como mencione anterior mente una parte importante de hadoop es el Namespace junto con sus funciones anteriormente descritas, una manera tangible para el usuario de esta parte de hadoop es HDFS (Hadoop Distributed File System). Podemos ver varias de las características de nuestro clúster en una de las interfaces Web que Hadoop nos proporciona para su herramienta, que se mostrará en el apartado de Manejo de la Herramienta.
Empecemos por explicar como funciona Apache Hadoop como elemento principal de un clúster .
Apache Hadoop se compone de tres principales componentes NameNodes, DataNodes, y SecondaryNameNode a nivel administración y almacenamiento.
NameNode: El namenode es el componente principal para la coordinación de las máquinas, el se encarga de monitorear el estado de las demás máquinas y de si misma, es el encargado de la distribución y calibración de la infornación del clúster de la manera más optima posible. El NameNode se compone de un Componente Principal:
- NameSpace: El namespace consiste de Directorios, archivos y bloques, como también todas las operaciones asociadas al sistema de archivos de Apache Hadoop.
- Block Management: Es el conjunto de operaciones para monitoreo de los datanodes efectuada por el namenode.
DataNodes: Los datanodes son los encargados del almacenamiento de la información en el clúster el conjunto de la información de los datanodes se le conoce como Storage.
- BlockStorage: Esta parte es la unión de Block Management y el Storage.
- Storage: Es el conjunto de datanodes que se encarga de guardar los bloques de información en el File System local de cada datanode, siendo los responsables de las operaciones de lectura y escritura.
SecondaryNameNode: En terminos simples ayuda al namenode en algunas operaciones de escritura y lectura del namenode, para permitir al namenode realizar tareas principales más rápido.
Hoy en día ya no estamos restringidos a solo tener un namenode y varios datanodes, hoy hadoop nos provee una característica para tener varios namenodes en un clúster con varios namespaces diferentes y que cada namenode controle el mismo conjunto de datanodes y mejor aún entre los namenodes activos se repartan el storage, en este modelo los namenode son independientes entre cada uno y se agrega una nueva característica a este modelo, llamada Block Pool.
Block Pool: Es un conjunto de bloques que pertenecen a un namespace en especifico. Estos pools son independientes entre cada uno y como apreciamos en la imagen siguiente, cada bloque de pool que podemos encontrar en un clúster con varios namenodes guarda su información por bloques en el conjunto de datanodes.
ClusterID: Es un identificador para distinguir y asociar el conjunto de nodos que pertenecen a un clúster. el ClusterID nos sirve en dado caso que por alguna razón quisiéramos tener dos clústers con diferente arquitectura en nuestro Hardware.
Namespace Volume: Es el conjunto resultante del Pool y Namespace correspondiente a cada Namenode en la imagen serían los rectangulos punteados. Esto nos ayuda a excluir de manera eficiente la información en el caso de que tengamos varios Namenodes sobre el mismo conjunto de datanodes, haciendo más fácil el formateo de cada Namespace y su pool de datos.
Como podemos ver en un esquema de clúster en el que tenemos varios namenodes, se crean conjutos de información disjuntos a pares (dos a dos) cosa que no se cumple cuando creamos un clúster con Alta Disponibilidad.
Como podrán ver hadoop es la parte más importante para un clúster, pero ustedes se preguntarán, ¿Qué pasa si el Namenode muere?, amigos míos esa es una muy buena pregunta, por eso las distribuciones de hadoop nos brindan algo llamado Alta Disponibilidad.
Alta Disponibilidad: Una idea sumamente ingeniosa, por parte de los proveedores de distribuciones es la Alta Disponibilidad del Namenode, ya que si el Namenode llegará a morir por cualquier motivo, prácticamente nuestro clúster sería inservible aunque los demás componentes estuvieran en optimas condiciones y depende como estén configurados. Pero la solución viene dada por otro componente de nuestros amigos Apache Fundation, Apache Zookeeper, del cuál les hablaré más adelante, gracias a este componente podemos garantizar la Alta Disponibilidad del Namenode en nuestro clúster. Ya que si el zookeeper detecta que por algún motivo no responde el Namenode principal, tiene otro Namenode en estado de standby el cuál tiene el mismo namespace y blockstorage que el anterior, como podemos ver los Namenodes no se comunican entre sí, el responsable de saber el estado de ambos es el zookeeper y el se encarga de tomar las decisiones y coordinar ambos namenodes, una idea simplemente genial.
Y ustedes se preguntarán, que pasa si llega a caer otro nodo que no contiene el namenode, ¿La información se pierde?, ¿Afecta el rendimiento del clúster?, ¿La información cuenta con alta disponibilidad?. Bueno hadoop cuenta con algoritmos hermosos para distribuir la información de los cuales tal vez en un futuro les platique, nosotros podemos indicarle en la configuración del clúster cuantas replicas de nuestra información queremos, por decir si tenemos un clúster de 3 datanodes y con replica 3, entonces todos los datanodes tendrán la misma información alojados en si mismo, pero eso no significa que ellos respondan con toda la información si los 3 datanodes están vivos ellos tienen prioridad sobre el block size que les corresponde, teniendo los otros dos en caso de falla de algún datanode. Si tenemos un clúster con 5 datanodes y con replica 3, a lo más cada datanode tendrá información de dos datanodes en la misma familia de datanodes del clúster y la si mismo.
Si un datanode cae, claro que pierde rendimiento, ya que la ventaja de utilizar tecnología distribuida es el de poder paralelizar los procesos, y si contamos con un nodo menos, la arquitectura si no es un clúster con muchos recursos, lo resentirá, prácticamente donde notaríamos un cambio sería en el rendimiento del clúster, pero no en su metadata y sus datos.
Hadoop tiene consigo YARN y MapRed configurados por default, otros componentes importantes para el manejo de Jobs (Procesos Distribuidos) o la administración de recursos en el clúster que iremos descubriendo poco a poco.
Como mencione anterior mente una parte importante de hadoop es el Namespace junto con sus funciones anteriormente descritas, una manera tangible para el usuario de esta parte de hadoop es HDFS (Hadoop Distributed File System). Podemos ver varias de las características de nuestro clúster en una de las interfaces Web que Hadoop nos proporciona para su herramienta, que se mostrará en el apartado de Manejo de la Herramienta.
Comentarios
Publicar un comentario