Soy nuevo en Hadoop/ZooKeeper. No puedo entender el propósito de usar ZooKeeper con Hadoop, ¿está ZooKeeper escribiendo datos en Hadoop? Si no, ¿por qué lo hacemos usamos ZooKeeper con Hadoop?¿Por qué necesitamos ZooKeeper en la pila de Hadoop?
Respuesta
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)
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
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 –
Gracias. El blog de Cloudera fue bastante informativo. – user3282777
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 para la referencia de paxos – grinch
desbordamiento de pila 101: en la mayoría de los casos, cuanto más corto mejor –
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 softwareEl 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:
- 1. ¿Por qué necesitamos fibras
- 2. ¿Por qué necesitamos Thread.MemoryBarrier()?
- 3. ¿Por qué necesitamos struct? (C#)
- 4. ¿Por qué necesitamos marcos burlones?
- 5. ¿Por qué necesitamos web-sockets?
- 6. ¿Por qué necesitamos mesa virtual?
- 7. ¿Por qué necesitamos usar Radix?
- 8. ¿Por qué necesitamos ng-click?
- 9. ¿Por qué necesitamos C Unions?
- 10. ¿por qué necesitamos zone_highmem en x86?
- 11. ¿Por qué necesitamos funcall en Lisp?
- 12. ¿Por qué necesitamos interfaces en Java?
- 13. ¿Por qué necesitamos Application Server en Java?
- 14. ¿Por qué necesitamos Propiedades en C#
- 15. ¿Por qué necesitamos parámetros de "salida"?
- 16. ¿Por qué necesitamos delegados de C#
- 17. ¿Por qué necesitamos patrones de diseño?
- 18. ¿Por qué necesitamos la cláusula "finally" en Python?
- 19. PHP: ¿Por qué necesitamos la función de comparación de cadenas?
- 20. ¿Por qué necesitamos una etiqueta fieldset?
- 21. ¿Por qué incluso necesitamos el operador "delete []"?
- 22. ¿Por qué necesitamos un constructor privado?
- 23. ¿Por qué necesitamos servicios web RESTful?
- 24. ¿Por qué todavía necesitamos código generado?
- 25. ¿Por qué necesitamos el método ContinueWith?
- 26. ¿por qué necesitamos ClassMethods e InstanceMethods?
- 27. ¿Por qué necesitamos este operador especial ===?
- 28. ¿Por qué necesitamos la interfaz IEqualityComparer, IEqualityComparer <T>?
- 29. ¿Por qué necesitamos la palabra clave "evento" al definir eventos?
- 30. ¿Por qué necesitamos Descubrimiento URL de OpenID en
y dónde está Zookeeper utilizado en Hadoop? –