Если HDFS не позволяет изменять файлы, как HBase хранит и изменяет данные? Его трудно найти ответ на этот вопрос, потому что результаты в основном ориентированы на формат физических данных HBase. Но я не мог найти, как HBase справляется с проблемой неизменности файлов HHDFS?Как HDFS изменяет данные
ответ
HBase хранит данные в HDFS в индексированной форме. Упротившись, файлы HDFS имеют ключи, хранящиеся в отсортированном порядке, так что поиск определенного ключа происходит быстро. Хранилище данных HBase позаботится в RegionServers (RS).
В RS ключи сначала записываются в хранилище в памяти (называемом memstore). В memstore хранятся новые ключи/обновления удалений. После определенного порогового значения эти клавиши переносятся на HDFS в качестве нового индексного файла. Обновления обрабатываются по временным меткам - предполагается, что последняя версия является единственной допустимой версией. Поэтому, если предыдущий индексный файл имеет тот же ключ, он будет проигнорирован. Удаления - это то же самое, что и обновления, единственное отличие заключается в том, что удаленные объекты имеют специальное поле типа, в котором есть флаг, обозначающий ключ как удаленный.
Я сделал несколько упрощений: формат файла
- Индекс сильно изменился с течением времени. Первоначально это был
MapFile
. В более поздних версиях HBase используется форматHFile
с метаданными и оптимизациями, характерными для HBase. - Запись записывается на диск в WAL (журнал записи вперед), прежде чем они войдут в memstore. Это делается для предотвращения потери данных.
Я также нашел несколько отличных связанных статей, которые вы должны прочитать:
HBase делает несколько вещей (следующее упрощение, но это объясняет общую идею): для согласованности, которую он записывает в WAL-файлы, данные по мере их поступления - поэтому никаких изменений в данных нет.
«Проблема» связана с HFiles, где данные хранятся упорядоченным образом. Первое, что HBase делает для решения этого, заключается в том, что он хранит данные в памяти (memstore для каждого региона) и только сбрасывает их на диск, когда они заполняются. Это экономит некоторые перезаписи.
Ожидание перед сохранением решает только некоторые проблемы, когда вам нужно переупорядочить данные (например, повторные обновления одного и того же ключа и т. Д.), Так что вторая вещь, которую делает HBase, это компромиссы, где она считывает несколько HFiles и создает новые с объединенными данными (и удаляет старые файлы)
- 1. Вставить данные в HDFS
- 2. Изменяет ли значение dfs.blocksize существующие данные
- 3. Репликация HDFS - хранимые данные
- 4. Как скопировать данные с одного HDFS на другой HDFS?
- 5. Изменяет ли Fiddler данные?
- 6. Paypal IPN изменяет данные?
- 7. onPreviewFrame не изменяет данные
- 8. ggplot2 изменяет или изменяет переменные размера - как вернуть исходные данные?
- 9. DB2 - изменяет данные SQL
- 10. Скопировать неструктурированные данные в HDFS?
- 11. Как получить данные Avro из HDFS?
- 12. Как получить данные из HDFS? Улей?
- 13. Как загрузить данные из Cassandra в HDFS?
- 14. Как хранятся данные в блоке HDFS?
- 15. Как получить конкретные данные из hdfs?
- 16. Как экспортировать данные Hbase в каталог HDFS
- 17. (HDFS) Как скопировать большие данные в кластере?
- 18. Как записать зашифрованные данные в HDFS
- 19. Как загрузить данные из hdfs в hbase?
- 20. Как загрузить данные в куст из HDFS
- 21. Как удалить данные HDFS в контейнерах Docker
- 22. Как хранить данные из hdfs в накопитель?
- 23. Как улей хранит данные (загруженные из HDFS)?
- 24. шлейф hdfs коннектор ... пытается записать данные в hdfs, используя шторм
- 25. jQGrid formatter изменяет исходные данные?
- 26. ListView Изменяет данные на прокрутке
- 27. функция CUDA не изменяет данные
- 28. Как загружать файлы HDFS?
- 29. Geospark: возможно ли вводить данные из HDFS
- 30. Потребление HDFS: «hdfs dfs -du /» vs «hdfs dfsadmin -report»
Большое спасибо, это было действительно полезно, а также спасибо за ссылки. – user2833557