Как я могу скомпилировать собственный кодек 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: