Сжатие значения ключа HBase? - PullRequest
0 голосов
/ 21 июня 2011

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

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

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

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

Может кто-нибудь объяснить, что такое "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

Ответы [ 2 ]

4 голосов
/ 27 октября 2012

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

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

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 сжатие.

0 голосов
/ 21 июня 2011

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

...