2012-05-24 5 views

Respuesta

37

Hadoop 1.x no utiliza Zookeeper. HBase usa el guardián del zoológico incluso en las instalaciones de Hadoop 1.x.

Hadoop adoptó Zookeeper también comenzando con la versión 2.0.

El objetivo de Zookeeper es la gestión de clusters. Esto encaja con la filosofía general de * nix de usar componentes especializados más pequeños, por lo que los componentes de Hadoop que quieran capacidades de agrupamiento dependen de Zookeeper para eso en lugar de desarrollar los propios.

Zookeeper es un almacenamiento distribuido que proporciona las siguientes garantías (copiado de Zookeeper overview page):

  • consistencia secuencial - Actualizaciones de un cliente se aplicará en el orden que fueron enviados.
  • Atomicity: las actualizaciones tienen éxito o fallan. Sin resultados parciales
  • Imagen de sistema único: un cliente verá la misma vista del servicio independientemente del servidor al que se conecte .
  • Fiabilidad: una vez que se haya aplicado una actualización, persistirá desde ese momento en adelante hasta que un cliente sobrescriba la actualización.
  • Puntualidad: la vista de los clientes del sistema está garantizada como actualizada dentro de un límite de tiempo determinado.

Puede utilizar estos para implementar diferentes "recipes" que son necesarios para la gestión de clusters como cerraduras, etc. elección del líder

Si usted va a utilizar ZooKeeper mismo, recomiendo que eche un vistazo a las Curator from Netflix que hace que sea más fácil de usar (por ejemplo, que implementan algunas recetas fuera de la caja)

+1

Cuando dices 'Hadoop también adoptó Zookeeper a partir de la versión 2.0.', ¿Significa que zookeeper está incluido en la distribución hadoop ver 2.0 en adelante? – user3282777

+1

Dado que la mayoría de la distribución incluía HBase, estaba allí antes de v.2. En V2. YARN también usa zookeeper para HA (en realidad puedes usar formas menos confiables pero es la manera recomendada de ver, por ejemplo, http://blog.cloudera.com/blog/2014/05/how-apache-hadoop-yarn-ha -works /) así que no creo que encuentres o crees una distribución sin él –

+0

Gracias. El blog de Cloudera fue bastante informativo. – user3282777

6

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

Hay un excelente documento Paxos Algorithm que puede leer sobre este tema.

+1

+1 para la referencia de paxos – grinch

+0

desbordamiento de pila 101: en la mayoría de los casos, cuanto más corto mejor –

1

Desde la página zookeeper documentación:

ZooKeeper es un sistema centralizado s ervice para mantener la información de configuración, nombrar, proporcionar sincronización distribuida y proporcionar servicios grupales. 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 implementar 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 gestionar. Incluso cuando se realiza correctamente, las diferentes implementaciones de estos servicios conducen a la complejidad de la administración cuando se implementan las aplicaciones.

De hadoop página de documentación:

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

biblioteca de software

El Apache Hadoop es un marco que permite el procesamiento distribuido de grandes conjuntos de datos a través de grupos de ordenadores usando modelos de programación simples

En cuanto a su consulta:

¿Por qué necesitamos ZooKeeper en Hadoop Stack?

El factor vinculante es el procesamiento distribuido y la alta disponibilidad.

p. Ej. Hadoop Namenode falla el proceso.

La alta disponibilidad de Hadoop está diseñada en torno al Namenode activo & Standby Namenode para el proceso de conmutación por error. En cualquier punto del tiempo, no deberías tener dos maestros (Namenodes activos) al mismo tiempo.

De Apache enlace de documentación en HDFSHighAvailabilityWithQJM:

Es de vital importancia para el correcto funcionamiento de un clúster de alta disponibilidad que sólo uno de los NameNodes estar 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. Para garantizar esta propiedad y evitar el llamado "escenario de cerebro dividido", los JournalNodes solo permitirán que un solo NameNode sea escritor a la vez.

Durante una conmutación por error, el NameNode que se activará simplemente se encargará de escribir en los JournalNodes, lo que impedirá que el otro NameNode continúe en estado activo, permitiendo que el nuevo Active proceda de manera segura con failover .

Zookeeper se ha utilizado para evitar el escenario Split - brain. Puede encontrar papel de Zookeeper en cuestión a continuación:

How does Hadoop Namenode failover process works?

Cuestiones relacionadas