Ответ 1
Размер блока HDFS по умолчанию составляет 128 МБ. Таким образом, вы не можете прочитать одну строку здесь, одну строку там. Вы всегда читаете и пишете блоки размером 128 МБ. Это хорошо, когда вы хотите обработать весь файл. Но это делает HDFS непригодной для некоторых приложений, например, где вы хотите использовать индекс для поиска небольших записей.
HBase, с другой стороны, отлично подходит для этого. Если вы хотите прочитать небольшую запись, вы будете читать только эту небольшую запись.
HBase использует HDFS в качестве резервного хранилища. Так как же обеспечить эффективный доступ на основе записей?
HBase загружает таблицы из HDFS в память или на локальный диск, поэтому большинство операций чтения не идет в HDFS. Мутации сначала сохраняются в журнале только для добавления. Когда журнал становится большим, он встраивается в таблицу "addendum". Когда таблиц дополнений слишком много, все они уплотняются в совершенно новую первичную таблицу. Для чтения сначала обращаются к журналу, затем к таблицам дополнений и, наконец, к основной таблице. Эта система означает, что мы пишем полный блок HDFS только тогда, когда у нас есть полный блок изменений HDFS.
Более подробное описание этого подхода содержится в официальном документе.