2012-02-12 17 views

Respuesta

4

HDFS es muy consistente, por lo que una vez que se haya completado satisfactoriamente una escritura,, los nuevos datos deberían estar visibles en todos los nodos inmediatamente. Es evidente que la escritura real lleva tiempo; consulte replication pipelining para obtener más detalles sobre esto.

Esto está en contraste con sistemas eventualmente consistentes, donde puede tomar un tiempo indefinido (aunque a menudo solo unos pocos milisegundos) antes de que todos los nodos vean una vista consistente de los datos.

Los sistemas como Cassandra tienen consistencia sintonizable: cada lectura y escritura se puede realizar con un nivel de consistencia diferente para adaptarse a la operación que se realiza.

+0

¿Hbase es eventualmente o muy consistente? – seahorse

+2

Hbase es muy consistente –

3

Según tengo entendido, los datos se ven inmediatamente, una vez finalizada la operación de escritura.
vamos a ver algunos aspectos del proceso:
Al cliente le escribe a HDFS datos se escriben en todas las réplicas, y después de la operación de escritura terminado debe ser perfectamente disponibles
También existe un solo lugar con metadatos - NameNode que también hacer no tiene ninguna noción de aislamiento que permita ocultar datos hasta que se haga una mayor paz de trabajo.
HBase es un caso diferente, ya que solo escribirá LOG to HDFS inmediatamente y sus HFiles se actualizarán con nuevos datos solo después de la compactación. Al mismo tiempo, después de que HBase escriba algo en HDFS, los datos serán visibles inmediatamente.

0

En HDFS, los datos están visibles una vez que se vacían o se sincronizan utilizando el método hflush() o hsync(); estos métodos se introdujeron en la versión 0.21, supongo. HFlush le garantiza que los datos están visibles para todos los lectores. Hsync le garantiza que los datos se guardaron en el disco (aunque aún puede estar en su caché de disco). El método de escritura no te da ninguna garantía. Para responder a su pregunta, en HDFS los datos están visibles inmediatamente a todos después de hacer hflush() o hsync().

Cuestiones relacionadas