Сжатие значений ключа HBase?

Спасибо за интерес к моему вопросу. Прежде чем я начну, я хотел бы сообщить вам, что я новичок в Hadoop и HBase. Пока что я нахожу Hadoop очень интересным и хотел бы внести больший вклад в будущем.

Меня в первую очередь интересует повышение производительности HBase. Для этого я модифицировал Writer методы в /io/hfile/Hfile.java HBase таким образом, чтобы он выполнял высокоскоростную буферизованную сборку данных, а затем напрямую записывал их в Hadoop, чтобы позже их можно было загрузить с помощью HBase.

Теперь я пытаюсь придумать способ сжатия пар ключ-значение, чтобы можно было сэкономить пропускную способность. Я провел много исследований, чтобы выяснить, как; а потом понял, что в HBase есть встроенные библиотеки сжатия.

Сейчас я просматриваю SequenceFile (1); setCompressMapOutput (2) (устарело); и сжатие классов (3). Я также нашел руководство по Apache MapReduce.

Может ли кто-нибудь объяснить, что такое «SequenceFile» и как я могу реализовать эти библиотеки и алгоритмы сжатия? Эти разные классы и документы так сбивают меня с толку.

Я был бы искренне признателен за вашу помощь.

--

Гиперссылки:

(1): hadoop.apache.org/common/docs/current/api/org/apache/hadoop/io/SequenceFile.html

(2): hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/JobConf.html#setCompressMapOutput%28boolean%29

(3): www.apache.org/dist/hbase/docs/apidocs/org/apache/hadoop/hbase/io/hfile/Compression.html


person Chul Kwon    schedule 20.06.2011    source источник


Ответы (2)


SequenceFile — это формат файла пары ключ/значение, реализованный в Hadoop. Несмотря на то, что SequenceFile используется в HBase для хранения журналов с упреждающей записью, реализация блочного сжатия SequenceFile — нет.

Класс Compression является частью инфраструктуры сжатия Hadoop и поэтому используется в блочном сжатии HBase HFile.

HBase уже имеет встроенное сжатие следующих типов:

  • Сжатие блоков HFile на диске. При этом используется структура кодеков Hadoop и поддерживаются алгоритмы сжатия, такие как LZO, GZIP и SNAPPY. Этот тип сжатия применяется только к блокам HFile, хранящимся на диске, поскольку для извлечения пар ключ/значение необходимо распаковать весь блок.
  • Сжатие ключей в кэше (называемое «кодированием блоков данных» в терминологии HBase) — см. HBASE-4218. . Реализованные алгоритмы кодирования включают в себя различные типы префиксного и дельта-кодирования, а на момент написания этой статьи реализуется тройное кодирование (HBASE-4676). Алгоритмы кодирования блоков данных используют избыточность между отсортированными ключами в блоке HFile и сохраняют различия только между последовательными ключами. Эти алгоритмы в настоящее время не работают со значениями и поэтому в основном полезны в случае небольших значений (относительно размера ключа), например. счетчики. Из-за облегченного характера этих алгоритмов кодирования блоков данных можно эффективно декодировать только необходимую часть блока для извлечения запрошенного ключа или перехода к следующему ключу. Вот почему эти алгоритмы кодирования хороши для повышения эффективности кэширования. Однако в некоторых реальных наборах данных дельта-кодирование также позволяет сэкономить до 50 % по сравнению со сжатием LZO (например, применение дельта-кодирования, а затем только LZO вместо LZO), что также обеспечивает значительную экономию на диске.
  • В HBASE-4608 реализован индивидуальный подход к сжатию журнала с опережающей записью на основе словаря. . Примечание. Несмотря на то, что SequenceFile используется для хранения журнала с упреждающей записью в HBase, встроенное в SequenceFile сжатие блоков нельзя использовать для журнала с упреждающей записью, поскольку буферизация пар ключ/значение для сжатия блоков приведет к потере данных.

Сжатие HBase RPC находится в стадии разработки. Как вы упомянули, сжатие пар ключ/значение, передаваемых между клиентом и HBase, может сэкономить полосу пропускания и повысить производительность HBase. Это реализовано в версии HBase для Facebook, 0.89-fb (HBASE-5355). ), но он еще не перенесен в официальную магистраль Apache HBase. Алгоритмы сжатия RPC, поддерживаемые в HBase 0.89-fb, такие же, как и алгоритмы сжатия Hadoop (например, GZIP и LZO).

Метод setCompressedMapOutput — это метод конфигурации с уменьшением карты, который на самом деле не имеет отношения к сжатию HBase.

person Mikhail at YugaByte    schedule 27.10.2012

SequenceFile — это поток пар ключ/значение, используемый Hadoop. Подробнее об этом можно прочитать на вики-странице Hadoop.

person Spike Gronim    schedule 20.06.2011