RCFile
Эта статья нуждается в дополнительных цитатах для проверки . ( май 2023 г. ) |
В системах управления базами данных записей столбчатый файл [ 1 ] или RCFile — структура размещения данных, определяющая способ хранения реляционных таблиц в компьютерных кластерах . Он предназначен для систем, использующих платформу MapReduce . Структура RCFile включает в себя формат хранения данных, подход к сжатию данных и методы оптимизации чтения данных. Он способен удовлетворить все четыре требования к размещению данных: (1) быстрая загрузка данных, (2) быстрая обработка запросов, (3) высокоэффективное использование пространства хранения и (4) высокая адаптивность к динамическим шаблонам доступа к данным.
RCFile является результатом исследований и совместных усилий Facebook , Университета штата Огайо и Института вычислительных технологий Китайской академии наук .
Краткое содержание
[ редактировать ]Формат хранения данных
[ редактировать ]Например, таблица в базе данных состоит из 4 столбцов (от c1 до c4):
с1 | с2 | с3 | с4 |
---|---|---|---|
11 | 12 | 13 | 14 |
21 | 22 | 23 | 24 |
31 | 32 | 33 | 34 |
41 | 42 | 43 | 44 |
51 | 52 | 53 | 54 |
Чтобы сериализовать таблицу, RCFile разделяет эту таблицу сначала горизонтально, а затем вертикально, вместо того, чтобы разделять таблицу только горизонтально, как в СУБД, ориентированной на строки (хранилище строк). При горизонтальном секционировании таблица сначала разделяется на несколько групп строк на основе размера группы строк , который представляет собой задаваемое пользователем значение, определяющее размер каждой группы строк. Например, упомянутая выше таблица может быть разделена на две группы строк, если пользователь укажет три строки в качестве размера каждой группы строк.
с1 | с2 | с3 | с4 |
---|---|---|---|
11 | 12 | 13 | 14 |
21 | 22 | 23 | 24 |
31 | 32 | 33 | 34 |
с1 | с2 | с3 | с4 |
---|---|---|---|
41 | 42 | 43 | 44 |
51 | 52 | 53 | 54 |
Затем в каждой группе строк RCFile разделяет данные вертикально, как хранилище по столбцам. Таким образом, таблица будет сериализована как:
Row Group 1 Row Group 2 11, 21, 31; 41, 51; 12, 22, 32; 42, 52; 13, 23, 33; 43, 53; 14, 24, 34; 44, 54;
Сжатие данных столбца
[ редактировать ]Внутри каждой группы строк столбцы сжимаются для уменьшения использования пространства хранения. Поскольку данные столбца хранятся рядом, можно определить структуру столбца и, таким образом, выбрать подходящий алгоритм сжатия для высокой степени сжатия.
Преимущества производительности
[ редактировать ]Хранилище столбцов более эффективно, когда для запроса требуется только подмножество столбцов, поскольку хранилище столбцов считывает только необходимые столбцы с дисков, а хранилище строк считывает всю строку.
RCFile сочетает в себе преимущества хранения строк и хранения столбцов посредством горизонтально-вертикального секционирования. При горизонтальном секционировании RCFile размещает все столбцы строки на одном компьютере и, таким образом, может исключить дополнительные сетевые затраты при построении строки. При вертикальном секционировании для запроса RCFile будет читать только необходимые столбцы с дисков и, таким образом, может устранить ненужные локальные затраты на ввод-вывод. Более того, в каждой группе строк можно выполнить сжатие данных с помощью алгоритмов сжатия, используемых в columns-store .
Например, база данных может иметь следующую таблицу:
Эмпид | Фамилия | Имя | Зарплата |
---|---|---|---|
10 | Смит | Джо | 40000 |
12 | Джонс | Мэри | 50000 |
11 | Джонсон | Кэти | 44000 |
22 | Джонс | Боб | 55000 |
Эта простая таблица включает идентификатор сотрудника (EmpId), поля имени (Фамилия и Имя) и зарплату (Salary). Этот двумерный формат существует только в теории, на практике оборудование хранения требует сериализации данных в ту или иную форму.
В системах на базе MapReduce данные обычно хранятся в распределенной системе, например в распределенной файловой системе Hadoop (HDFS) , а разные блоки данных могут храниться на разных машинах. Таким образом, при хранении столбцов в MapReduce разные группы столбцов могут храниться на разных компьютерах, что приводит к дополнительным сетевым затратам, когда запрос проецирует столбцы, размещенные на разных компьютерах. Для систем на основе MapReduce достоинством хранилища строк является отсутствие дополнительных сетевых затрат на создание строки при обработке запроса, а достоинством хранилища столбцов является отсутствие ненужных локальных затрат на ввод-вывод при чтении данных из диски.
Строко-ориентированные системы
[ редактировать ]Обычное решение проблемы хранения — сериализовать каждую строку данных, как показано ниже;
001:10,Smith,Joe,40000;002:12,Jones,Mary,50000;003:11,Johnson,Cathy,44000;004:22,Jones,Bob,55000;
Системы на основе строк предназначены для эффективного возврата данных для всей строки или всей записи за минимально возможное количество операций. Это соответствует случаям использования, когда система пытается получить всю информацию о конкретном объекте, скажем, полную информацию об одном контакте в системе rolodex или полную информацию об одном продукте в системе онлайн-покупок.
Системы на основе строк неэффективны при выполнении операций, применимых ко всему набору данных, а не к конкретной записи. Например, чтобы найти в таблице-примере все записи с зарплатами от 40 000 до 50 000, системе на основе строк придется просмотреть весь набор данных в поисках совпадающих записей. Хотя показанный выше пример таблицы может поместиться в один дисковый блок, таблица даже с несколькими сотнями строк этого не сделает, поэтому для извлечения данных потребуется несколько дисковых операций.
Колонно-ориентированные системы
[ редактировать ]Система, ориентированная на столбцы, сериализует все значения столбца вместе, а затем значения следующего столбца. В нашей таблице-примере данные будут храниться таким образом;
10:001,12:002,11:003,22:004;Smith:001,Jones:002,Johnson:003,Jones:004;Joe:001,Mary:002,Cathy:003,Bob:004;40000:001,50000:002,44000:003,55000:004;
Разницу можно более четко увидеть в этой распространенной модификации:
...;Smith:001,Jones:002,004,Johnson:003;...
Две записи хранят одно и то же значение «Джонс», поэтому теперь в столбцовой системе его можно сохранить только один раз, а не дважды. Для многих распространенных запросов, таких как «найти всех людей с фамилией Джонс», ответ теперь можно получить за одну операцию.
Будет ли система, ориентированная на столбцы, более эффективной в работе, во многом зависит от автоматизируемых операций. Операции по извлечению данных для объектов будут медленнее, и потребуется множество дисковых операций для сбора данных из разных столбцов для создания записи целой строки. Однако такие операции над целыми строками, как правило, редки. В большинстве случаев извлекается только ограниченный набор данных. Например, в приложении rolodex операции по сбору имен и фамилий из многих строк для создания списка контактов встречаются гораздо чаще, чем операции по чтению данных о домашнем адресе.
Принятие
[ редактировать ]![]() |
RCFile был принят в реальных системах анализа больших данных.
- RCFile стал структурой размещения данных по умолчанию в производственном кластере Hadoop Facebook. [ 2 ] К 2010 году это был крупнейший в мире кластер Hadoop. [ 3 ] где каждый день добавляются 40 терабайт сжатых наборов данных. [ 4 ] Кроме того, все наборы данных, хранившиеся в HDFS до RCFile, также были преобразованы для использования RCFile. [ 2 ]
- RCFile был принят в Apache Hive (начиная с версии 0.4), [ 5 ] которая представляет собой систему хранения данных с открытым исходным кодом, работающую поверх Hadoop и широко используемую в различных компаниях по всему миру, [ 6 ] включая несколько интернет-сервисов, таких как Facebook , Taobao и Netflix . [ 7 ]
- RCFile был принят в Apache Pig (начиная с версии 0.7), [ 8 ] это еще одна система обработки данных с открытым исходным кодом, широко используемая во многих организациях, [ 9 ] включая несколько крупных поставщиков веб-услуг, таких как Twitter , Yahoo , LinkedIn , AOL и Salesforce.com .
- RCFile стал де-факто стандартной структурой хранения данных в программной среде Hadoop, поддерживаемой проектом Apache HCatalog (ранее известным как Howl). [ 10 ] ), то есть сервис управления таблицами и хранилищами для Hadoop. [ 11 ] RCFile поддерживается библиотекой Elephant Bird с открытым исходным кодом, используемой в Twitter для ежедневного анализа данных. [ 12 ]
В последующие годы стали популярными и другие форматы данных Hadoop. В феврале 2013 года Optimized Row Columnar (ORC) анонсировала формат файла компания Hortonworks . [ 13 ] Месяцем позже был анонсирован формат Apache Parquet , разработанный Cloudera и Twitter . [ 14 ]
См. также
[ редактировать ]- Столбец (хранилище данных)
- Столбцово-ориентированная СУБД
- MapReduce
- Апач Хадуп
- Улей Апачей
- Большие данные
Ссылки
[ редактировать ]- ^ Юнцян Хэ, Рубао Ли, Инь Хуай, Чжэн Шао, Намит Джайн, Сяодун Чжан и Чживэй Сюй (2011). «RCFile: быстрая и экономичная структура размещения данных в складских системах на основе MapReduce» . 27-я Международная конференция IEEE по инженерии данных. стр. 1200–1208.
{{cite conference}}
: CS1 maint: несколько имен: список авторов ( ссылка ) - ^ Jump up to: а б «Интеграция Hive: HBase и Rcfile__HadoopSummit2010» . 30 июня 2010 г.
- ^ «У Facebook самый большой в мире кластер Hadoop!» . 09.05.2010.
- ^ «На саммите Apache Hadoop в Индии 2011 г. выступление Намита Джайна «Эволюция Hive»» . 24 февраля 2011 г.
- ^ «Класс RCFile» . Архивировано из оригинала 23 ноября 2011 г. Проверено 21 июля 2012 г.
- ^ «PoweredBy — Apache Hive — Apache Software Foundation» .
- ^ «Презентация группы пользователей Hive от Netflix (18 марта 2010 г.)» . 19 марта 2010 г.
- ^ «HiveRCInputFormat (API Pig 0.17.0)» .
- ^ «PoweredBy — Apache Pig — Apache Software Foundation» .
- ^ Вой
- ^ «Каталог» . Архивировано из оригинала 20 июля 2012 г. Проверено 21 июля 2012 г.
- ^ «Коллекция Twitter кода Hadoop, Pig, Hive и HBase, связанного с LZO и протокольным буфером: Kevinweil/elephant-bird» . Гитхаб . 15 декабря 2018 г.
- ^ Алан Гейтс (20 февраля 2013 г.). «Инициатива Stinger: сделать Apache Hive в 100 раз быстрее» . Блог Hortonworks . Проверено 4 мая 2017 г.
- ^ Джастин Кестелин (13 марта 2013 г.). «Представляем Parquet: эффективное столбчатое хранилище для Apache Hadoop» . Блог Cloudera . Проверено 4 мая 2017 г.