¿Por qué necesitamos a ZooKeeper en la pila de Hadoop?


Soy nuevo en Hadoop/ZooKeeper. No puedo entender el propósito de usar ZooKeeper con Hadoop, ¿está ZooKeeper escribiendo datos en Hadoop? Si no, entonces ¿por qué usamos ZooKeeper con Hadoop?

Author: parrottsquawk, 2012-05-24

3 answers

Hadoop 1.x no usa Zookeeper. HBase utiliza zookeeper incluso en Hadoop 1.x instalaciones.

Hadoop adoptó Zookeeper también a partir de la versión 2.0.

El propósito de Zookeeper es la administración de clústeres. Esto se ajusta a la filosofía general de * nix de usar componentes especializados más pequeños, por lo que los componentes de Hadoop que desean capacidades de agrupación en clústeres dependen de Zookeeper para eso en lugar de desarrollar los suyos propios.

Zookeeper es un almacenamiento distribuido que proporciona las siguientes garantías (copiado de Zookeeper página general):

  • Consistencia secuencial-Las actualizaciones de un cliente se aplicarán en el orden de que fueran enviados.
  • Atomicidad-Las actualizaciones tienen éxito o fallar. No hay resultados parciales.
  • Imagen única del sistema - Un cliente verá misma vista del servicio independientemente del servidor al que se conecte a.
  • Fiabilidad-Una vez que se ha aplicado una actualización, persistirá de ese momento en adelante hasta un el cliente sobrescribe la actualización.
  • Oportunidad-La visión del cliente del sistema está garantizada para ser actualizado dentro de un plazo determinado.

Puede usarlos para implementar diferentes " recetas" que se requieren para la administración del clúster, como bloqueos, elección de líderes, etc.

Si vas a usar ZooKeeper tú mismo, te recomiendo que eches un vistazo a Curator de Netflix que hace que sea más fácil de usar (por ejemplo, implementan algunas recetas fuera de la caja)

 39
Author: Arnon Rotem-Gal-Oz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-11 08:22:20

Zookeeper resuelve el problema de la coordinación distribuida confiable, y hadoop es un sistema distribuido, ¿verdad?

Hay un excelente artículo Algoritmo Paxos que puedes leer sobre este tema.

 6
Author: xiaofeng.li,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-24 07:43:47

De zookeeper página de documentación:

ZooKeeper es un servicio centralizado para mantener la información de configuración, nombrar, proporcionar sincronización distribuida y proporcionar servicios de grupo. Todos estos tipos de servicios son utilizados de una forma u otra por aplicaciones distribuidas.

Cada vez que se implementan hay mucho trabajo que se dedica a corregir los errores y las condiciones de carrera que son inevitables. Debido a la dificultad de implementando este tipo de servicios, las aplicaciones inicialmente suelen escatimar en ellos ,lo que los hace frágiles en presencia de cambios y difíciles de administrar. Incluso cuando se hace correctamente, diferentes implementaciones de estos servicios conducen a la complejidad de la gestión cuando se implementan las aplicaciones.

De hadoop página de documentación:

El proyecto Apache™ Hadoop® desarrolla software de código abierto para una computación distribuida, escalable y fiable.

El Apache Hadoop software library es un framework que permite el procesamiento distribuido de grandes conjuntos de datos a través de clústeres de computadoras utilizando modelos de programación simples

Con respecto a su consulta:

¿Por qué necesitamos ZooKeeper en Hadoop Stack?

El factor de unión es el procesamiento distribuido y la alta disponibilidad.

Por ejemplo, proceso de error de Hadoop Namenode.

Hadoop high availability está diseñado en torno al Código de nombre activo y al Código de nombre en espera para el proceso de falla. En cualquier momento, no debe tener dos maestros (Namenodes activos) al mismo tiempo.

Desde el enlace de documentación de Apache en HDFSHighAvailabilityWithQJM :

Es vital para el correcto funcionamiento de un clúster HA que solo uno de los NameNodes esté Activo a la vez. De lo contrario, el estado del espacio de nombres divergiría rápidamente entre los dos, arriesgando la pérdida de datos u otros resultados incorrectos. Con el fin de garantizar esta propiedad y evitar la llamada "escenario de cerebro dividido", los JournalNodes solo permitirán que un solo NameNode sea un escritor a la vez.

Durante una conmutación por error, el NameNode que se va a activar simplemente asumirá el papel de escribir en los JournalNodes, lo que evitará efectivamente que el otro NameNode continúe en el estado Activo, permitiendo que el nuevo Activo proceda con seguridad con la conmutación por error.

Zookeeper se ha utilizado para evitar el escenario de cerebro dividido. Usted puede encontrar el papel de Zookeeper en pregunta siguiente:

¿Cómo funciona el proceso de conmutación por error de Hadoop Namenode?

 3
Author: Ravindra babu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:16