Что-то, записанное в HDFS или Hbase, сразу видно всем остальным узлам в кластере Hadoop? - PullRequest
5 голосов
/ 12 февраля 2012

Когда задание Hadoop запущено или выполняется, если я что-то записываю в HDFS или Hbase, тогда это будет данные будут видны всем узлам кластера

1.) Немедленно

2.) Если не сразу, то через сколько времени?

3.) Или время не может быть определено?

Ответы [ 3 ]

4 голосов
/ 12 февраля 2012

HDFS строго согласованна, поэтому после успешного завершения записи новые данные должны сразу же появиться на всех узлах.Очевидно, что фактическая запись занимает некоторое время - см. конвейерную репликацию для некоторых деталей об этом.

Это в отличие от в конечном итоге согласованных систем, где это может занять неопределенное время (хотя частонесколько миллисекунд), прежде чем все узлы увидят согласованное представление данных.

Системы, такие как Cassandra, имеют настраиваемую согласованность - каждое чтение и запись могут выполняться с разным уровнем согласованности в соответствии с выполняемой операцией.

3 голосов
/ 12 февраля 2012

В моем понимании, данные видны сразу после завершения операции записи.
Давайте посмотрим на некоторые аспекты процесса:
Когда клиент выполняет запись в HDFS, данные записываются во все реплики и после завершения операции записи они должны быть полностью доступны
Существует также только одно место с метаданными - NameNode, в котором также отсутствует понятие изоляции, которое позволило бы скрывать данные до тех пор, пока не будет достигнут какой-то более высокий уровень работы.
HBase - это другой случай - поскольку он будет сразу записывать только LOG в HDFS, а его HFiles будут обновляться новыми данными только после сжатия. В то же время - после того, как HBase сам что-то запишет в HDFS - данные будут видны сразу.

0 голосов
/ 12 февраля 2012

В HDFS данные видны, когда они сбрасываются или синхронизируются с использованием методов hflush () или hsync () - эти методы были введены в версии 0.21, я думаю. HFlush дает вам гарантию того, что данные видны всем читателям. Hsync дает вам гарантию того, что данные были сохранены на диск (хотя они все еще могут находиться в вашем дисковом кеше). Метод записи не дает никаких гарантий. Чтобы ответить на ваш вопрос - в HDFS данные видны сразу всем после выполнения hflush () или hsync ().

...