Как я могу скомпилировать собственный кодек Hadoop в libhadoop.so?

Я написал собственный кодек сжатия hadoop. Чтобы он работал с hadoop, мне нужно скомпилировать нативный (C-код) файл в libhadoop.so.

Как мне этого добиться?

1 ответ

Решение

Вам не нужно компилировать это в libhadoop.so:

  • Скомпилируйте свой собственный.so и раздайте его узлам кластера (в тот же каталог, что и текущий libhadoop.so).
  • Я предполагаю, что вы также написали свой собственный CompressionCodec (похожий на GzipCodec) - добавьте статический блок в этот код, который пытается загрузить библиотеку, используя System.loadLibrary("mylibrary"); (для библиотеки с именем libmylibrary.so).
  • Внесите изменения в конфигурацию кластера, включив новый класс кодеков сжатия в зарегистрированный список кодеков (измените io.compression.codecs свойство конфигурации):
  • Перезапустите ваши трекеры задач

В качестве справки вы можете ознакомиться с примечаниями по реализации и настройке кодека Google Snappy:

Другие вопросы по тегам