1

我写了一个原生 hadoop 压缩编解码器。为了让它与 hadoop 一起工作,我需要将本机(C 代码)编译为 libhadoop.so。

我怎样才能做到这一点?

4

1 回答 1

0

您不需要将其编译到 libhadoop.so 中:

  • 编译您自己的 .so 并分发到您的集群节点(到与当前 libhadoop.so 相同的目录中
  • 我假设您还编写了自己的 CompressionCodec(类似于 GzipCodec) - 向此代码添加一个静态块,尝试使用System.loadLibrary("mylibrary");(对于名为 libmylibrary.so 的库)加载库。
  • 修改您的集群配置以将您的新压缩编解码器类包含在已注册的编解码器列表中(修改io.compression.codecs配置属性):
  • 重新启动您的任务跟踪器

作为参考,您可以遵循 Google Snappy 编解码器的实现和配置说明:

于 2012-04-24T10:45:54.160 回答