La comprensión de ZooKeeper sobre big data Hadoop
Zookeeper juega un papel muy importante en la gestión de clústeres. Es responsable de la coordinación de aplicaciones distribuidas.
El clúster de administración de Zookeeper elegirá un nodo líder (consulte el algoritmo de elección FastLeader, es decir, elija rápidamente el nodo líder). El nodo líder es el principal responsable de la operación y gestión de todo el clúster ZooKeeper, y el seguidor es responsable de gestionar el almacenamiento y la lectura de datos específicos.
Zookeeper proporciona principalmente las siguientes cuatro funciones: servicio de nombres unificado, gestión de configuración, gestión de clústeres, * * * * uso compartido de bloqueos y gestión de colas, que se utilizan para gestionar eficazmente el funcionamiento del clúster.
1. Servicio de nombres unificado
El servicio de nombres se refiere a la obtención de información del proveedor de recursos o servicios a través de un nombre específico. En aplicaciones distribuidas, generalmente se necesita un conjunto completo de reglas de nomenclatura, que no solo pueden generar nombres únicos sino que también facilitan el reconocimiento y la memoria. A menudo, lo ideal es utilizar una estructura de nombre de árbol. La estructura de nombres de árbol es una estructura de directorio jerárquica, que es más fácil de usar y no se repetirá.
En el clúster Zookeeper, el nodo líder (nodo M en la figura) administra el espacio de nombres de todos los nodos seguidores (nodos S1 y S2 en la figura). Zookeeper proporciona un servicio de nombres unificado. No proporciona datos ni almacena datos. Solo proporciona un conjunto unificado de reglas de nomenclatura, y los servicios que se ejecutan en Zookeeper deben seguir este conjunto de reglas de nomenclatura. La más común es la lista de direcciones de servicio en algunos marcos de servicios distribuidos. Al llamar a la interfaz (API) proporcionada por ZK para crear nodos, puede crear fácilmente una ruta global única, que puede usarse como nombre. El servicio de nombres ya es una función integrada de Zookeeper y puede implementarlo llamando a la API de Zookeeper. Si llama a la interfaz de creación, puede crear fácilmente un nodo de directorio.
Siga las reglas de nomenclatura de gestión unificada del líder y lea y escriba datos en el clúster:
1.1. Cuando un cliente emite una solicitud de escritura de datos, especifica un nodo del clúster Zookeeper. Si el seguidor recibe una solicitud de escritura, reenviará la solicitud al líder, y el líder transmitirá los datos a través del protocolo interno Zab hasta que todos los nodos de Zookeeper escriban datos con éxito, y luego Zookeeper enviará una respuesta al cliente.
1.2. Leer datos, debido a que todos los Zookeepers en el clúster presentan la misma vista de espacio de nombres (estructura de nombre de directorio de archivos) de acuerdo con un espacio de nombres unificado, al leer datos, la solicitud de cualquier nodo de Zookeeper es la misma.
2. Gestión de estructuras
La gestión de la configuración es muy común en entornos de aplicaciones distribuidas. Por ejemplo, la misma aplicación necesita ejecutarse en varios servidores, pero algunas configuraciones de sus sistemas de aplicaciones son las mismas. Si desea modificar estos mismos elementos de configuración, debe modificar todos los servidores de PC que ejecutan este sistema de aplicación al mismo tiempo, lo cual es muy problemático y propenso a errores. Zookeeper puede administrar completamente información de configuración como esta y es muy conveniente de manejar.
La gestión de la configuración incluye dos procesos: publicación y suscripción. Como sugiere el nombre, publica datos en nodos ZK para que los suscriptores obtengan datos dinámicamente, logrando una gestión centralizada y una actualización dinámica de la información de configuración.
Como se muestra en la figura, la información de configuración se almacena en un directorio de Zookeeper (nodo líder) y luego todas las máquinas de aplicaciones que deben modificarse se suscriben a Zookeeper (nodo líder). Una vez que el nodo Leader publique nueva información de configuración, cada máquina suscrita recibirá una notificación de Zookeeper y luego obtendrá la nueva información de configuración de Zookeeper y la aplicará al sistema, completando la gestión centralizada y unificada de la configuración.
3. Gestión de clústeres
Zookeeper se utiliza principalmente para el seguimiento de clústeres y la elección de líderes en la gestión de clústeres.
3.1. Gestión de clústeres
Esto generalmente se usa en escenarios que tienen altos requisitos sobre el estado y la velocidad en línea de las máquinas en el clúster, y puede responder rápidamente a los cambios en las máquinas. en el cúmulo. En tal escenario, suele haber un sistema de monitoreo que detecta si la máquina del clúster está activa en tiempo real. En el pasado, los sistemas de monitoreo generalmente detectaban regularmente cada máquina a través de algún medio (como ping), o cada máquina informaba regularmente "Todavía estoy vivo" al sistema de monitoreo.
Este método es factible, pero hay dos problemas obvios:
1). Cuando las máquinas en el clúster cambian, la modificación implicará muchas cosas.
2). Hay cierto retraso.
Utilizando dos funciones en ZooKeeper, se puede implementar otro sistema de monitoreo de supervivencia de la máquina del clúster:
1). El cliente registra un observador en el nodo de muestra A, por lo que si los nodos secundarios de A cambian, notificará al cliente.
2) Cree un tipo de nodo transitorio que desaparecerá una vez que finalice o expire la sesión entre el cliente y el servidor.
3.2. Elección de líder:
La elección de líder consiste en seleccionar un nodo líder entre una gran cantidad de nodos del clúster. Este es el escenario de uso más clásico en zookeeper. En un entorno distribuido, la velocidad de elección de los nodos líderes afectará directamente la eficiencia del clúster. El nodo Leader es el principal responsable de implementar modelos lógicos y datos utilizados por la misma aplicación empresarial distribuidos en diferentes máquinas. Excelentes soluciones de implementación pueden reducir en gran medida las operaciones repetidas, mejorar el rendimiento y reducir la carga en el clúster.
Usando dos características en ZooKeeper, podemos implementar otra elección de líder en el clúster:
1). Se puede garantizar la unicidad global de la creación de nodos, es decir, si varios clientes solicitan crear un nodo líder al mismo tiempo, al final solo una solicitud de cliente tendrá éxito. Con esta característica, la elección del líder del clúster es fácil en un entorno distribuido.
2). Además, esta situación evoluciona hacia una elección de líder dinámica. Esto utilizará las características de los nodos de tipo periódico_SEQUENTIAL para que cada nodo se numere automáticamente. Se permite que todas las solicitudes se creen correctamente, pero la creación de nodos organiza el orden de cada nodo y selecciona la máquina con el número de secuencia más pequeño como líder cada vez.
Resumen
Como componente principal de Hadoop, Zookeeper nos proporciona una solución de gestión de clústeres. Al leer el servicio de nombres unificado, la gestión de configuración y la gestión de clústeres, podemos comprender claramente el contenido principal de Zookeeper. Aquellos que estén interesados pueden estudiar más a fondo la implementación técnica parcial de los servicios de cola y uso compartido de bloqueos.
Zookeeper resuelve los problemas de gestión de clústeres en grandes clústeres de datos, facilitando el corte de leña. Después de comprender las herramientas, la próxima vez compartiré algunas aplicaciones prácticas específicas.