Как заставить Pig работать с файлами lzo?

Итак, я видел пару руководств для этого в Интернете, но каждый, кажется, говорит, что нужно делать что-то другое. Кроме того, каждый из них, похоже, не указывает, пытаетесь ли вы заставить что-то работать на удаленном кластере или локально взаимодействовать с удаленным кластером и т. д.

Тем не менее, моя цель — просто заставить мой локальный компьютер (mac) заставить свинью работать со сжатыми файлами lzo, которые существуют в кластере Hadoop, который уже настроен для работы с файлами lzo. У меня уже установлен Hadoop локально, и я могу получать файлы из кластера с помощью hadoop fs -[command].

У меня также уже есть Pig, установленный локально и взаимодействующий с кластером Hadoop, когда я запускаю сценарии или когда я просто запускаю что-то через grunt. Я могу загружать и играть с файлами, отличными от lzo, просто отлично. Моя проблема заключается только в том, чтобы найти способ загрузки файлов lzo. Может быть, я могу просто обработать их через кластерный экземпляр ElephantBird? Я понятия не имею, и нашел только минимальную информацию в Интернете.

Итак, любой краткий учебник или ответ на этот вопрос был бы потрясающим и, надеюсь, помог бы большему количеству людей, чем только мне.


person Eli    schedule 01.09.2011    source источник
comment
У меня есть коллега, который недавно отказался от этого — он не думал, что это возможно. Хотя не уверен, что он был прав!   -  person schmmd    schedule 17.09.2011


Ответы (1)


Недавно я заставил это работать и написал вики для своих коллег. Вот отрывок, подробно описывающий, как заставить PIG работать с lzos. Надеюсь, это поможет кому-то!

ПРИМЕЧАНИЕ. Это написано для Mac. Шаги будут почти идентичны для других ОС, и это определенно должно дать вам то, что вам нужно знать для настройки в Windows или Linux, но вам нужно будет немного экстраполировать (очевидно, измените папки, ориентированные на Mac, на любую ОС). повторное использование и т. д.).

Подключение PIG для работы с LZO

Это была, безусловно, самая раздражающая и трудоемкая часть для меня - не потому, что это сложно, а потому, что в Интернете есть 50 различных руководств, ни одно из которых не является таким уж полезным. В любом случае, что я сделал, чтобы заставить это работать:

  1. Клонируйте hadoop-lzo с github по адресу https://github.com/kevinweil/hadoop-lzo.

  2. Скомпилируйте его, чтобы получить hadoop-lzo*.jar и собственные библиотеки *.o. Вам нужно будет скомпилировать это на 64-битной машине.

  3. Скопируйте собственные библиотеки в $HADOOP_HOME/lib/native/Mac_OS_X-x86_64-64/.

  4. Скопируйте java jar в $HADOOP_HOME/lib и $PIG_HOME/lib

  5. Затем настройте hadoop и pig так, чтобы свойство java.library.path указывало на собственные библиотеки lzo. Вы можете сделать это в $HADOOP_HOME/conf/mapred-site.xml с помощью:

    <property>
        <name>mapred.child.env</name>
        <value>JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native/Mac_OS_X-x86_64-64/</value>
    </property>
    
  6. Теперь попробуйте grunt shell, снова запустив pig, и убедитесь, что все работает. Если это не так, вы, вероятно, что-то напутали в mapred-site.xml, и вам следует перепроверить его.

  7. Здорово! Мы почти там. Все, что вам нужно сделать сейчас, это установить слон-птицу. Вы можете получить это из https://github.com/kevinweil/elephant-bird (клонируйте его ).

  8. Теперь, чтобы заставить слон-птицу работать, вам понадобится довольно много предварительных требований. Они перечислены на странице, упомянутой выше, и могут измениться, поэтому я не буду указывать их здесь. Я упомяну, что версии на них очень важны. Если вы получите неправильную версию и попытаетесь запустить ant, вы получите ошибки. Так что не пытайтесь получить предварительные требования от brew или macports, так как вы, скорее всего, получите более новую версию. Вместо этого просто скачайте архивы и создайте для каждого из них.

  9. команда: ant в папке слона-птицы, чтобы создать банку.

  10. Для простоты переместите все соответствующие jar-файлы (hadoop-lzo-x.x.x.jar и слон-птица-x.x.x.jar), которые вам нужно будет часто регистрировать, туда, где вы сможете легко их найти. /usr/local/lib/hadoop/... прекрасно работает.

  11. Попробуйте вещи! Поэкспериментируйте с загрузкой обычных файлов и lzos в оболочке grunt. Зарегистрируйте соответствующие jar-файлы, упомянутые выше, попробуйте загрузить файл, ограничить вывод до управляемого числа и сбросить его. Все это должно работать нормально, используете ли вы обычный текстовый файл или lzo.

person Eli    schedule 19.09.2011
comment
Привет, мне нужно установить библиотеку Lzo на [oberhumer.com/opensource/lzo/] прежде чем я установлю hadoop-lzo? - person unionx; 06.04.2012