Почему формат ORC вводится в HDFS, если HDFS в первую очередь предназначен для хранения объектов

#hadoop #hdfs #orc

Вопрос:

Как мы все знаем, HDFS-это в основном система хранения объектов, в которой данные, однажды записанные в нее, не могут быть обновлены, но весь файл должен быть перезаписан целиком. Если это так, то в чем необходимость введения формата ORC в HDFS, который позволяет нам изменять / обновлять данные, хранящиеся в таблицах hive, базовой системой хранения которых является HDFS.

Это делает HDFS блочным хранилищем, в котором данные могут быть обновлены / изменены, что противоречит всей структуре Hadoop

Ответ №1:

(Ограниченная) поддержка ORC транзакций ACID не меняет того факта, что HDFS доступна только для записи. Видишь https://orc.apache.org/docs/acid.html для объяснения. Обновления в ORC просто записываются в новые файлы в формате HDFS, поэтому быстрая запись отдельных транзакций приведет к появлению большого количества новых файлов, что приведет к серьезным проблемам с производительностью.

Ответ №2:

Сначала мы должны ознакомиться с историей ORC и столбчатыми форматами данных в HDFS. Первоначально HDFS была разработана как файловая система, как следует из названия. Это означает, что люди хотели хранить «файлы» масштабируемым способом.

Первоначально ORC и Parquet не поддерживали обновления, потому что в долгосрочном решении для эффективного хранения данных не имеет смысла вносить такие изменения, как обновления. Данные должны быть неизменяемыми и храниться очень эффективно. Как обычно, некоторые корпоративные компании решили, что заказчик всегда прав, и внесли изменения. Они называют этот процесс созреванием на странице ORC. Я рассматриваю это как проблемную функцию, которую я не рекомендую своим клиентам.

Это делает HDFS блочным хранилищем, в котором данные могут быть обновлены / изменены, что противоречит всей структуре Hadoop

Это не так, потому что фактическая реализация содержит дополнительные файлы вместо обновления на месте.

Комментарии:

1. Теперь также только ORC поддерживает обновления, а не паркет. Это верно, @Иштван ?

2. Да, это верно. Паркет этого не поддерживает. issues.apache.org/jira/browse/HIVE-8123