Hadoop本地库 Native Libraries

Hadoop本地库

由于性能和 Java 不可实现功能等原因,Hadoop 具有某些组件的本地实现。在 unix 平台上,该库命名为 libhadoop.so。

用法

使用本地 hadoop 库相当简单:

  1. 可以下载一个hadoop发行版,它将包含原生hadoop库的预构建版本,也可以自己编译构建原生hadoop库。无论您是下载还是构建,本地库的名称都是相同的:libhadoop.so
  2. 安装压缩、解码相关开发包(> zlib-1.2,> gzip-1.2) :
    • 如果您下载了原生的hadoop库,请安装这两个或者其中一个开发包——无论您想在部署中使用哪种压缩编解码器
    • 如果您想自己编译构建hadoop本地库,那么必须同时安装这两个开发包
  3. 检查运行时日志文件

组件

本地 hadoop 库包括各种组件:

支持平台

仅在 unix 平台上支持本地 hadoop 库。该库不支持 Cygwin 或 Mac os平台。本地 hadoop 库主要用于 GNU/Linus 平台,并已经在这些发行版上进行了测试:

  • RHEL4/Fedora
  • Ubuntu
  • Gentoo

在上述所有发行版中,一个32/64位的本地 hadoop 库将与各自的32/64位 jvm 一起工作。

下载

预构建的32位 i386-Linux 本机 hadoop 库作为 hadoop 发行版的一部分可用,位于 lib/native 目录中。您可以从 Hadoop 公共版本下载 Hadoop 发行版。

确保安装 zlib、gzip 开发包——您希望在部署、开发中使用的压缩编码器。

构建

本地 hadoop 库是用 ANSI C 编写的,使用 GNU autotools-chain (autoconf、 autoheader、 autoake、 autoscan、 libtool)构建。这意味着在任何平台上使用符合标准的 C 编译器和 GNU 自动工具链(参见支持的平台)都可以直接构建库。

您需要在目标平台上安装的软件包如下:

  • C 编译器(例如 GNU c 编译器)
  • GNU Autools Chain: autoconf,automatake,libtool
  • Zlib-development 包(stable version > = 1.2.0)
  • Openssl-development 包(例如 libssl-dev)

一旦你安装了前提包,使用标准 hadoop pom.xml 文件编译构建原生 hadoop 库:

   $ mvn package -Pdist,native -DskipTests -Dtar

你应该在以下地方看到新建的本地库:

   $ hadoop-dist/target/hadoop-2.6.0/lib/native

请注意以下事项:

  • 为了构建本地 hadoop 库,必须在目标平台上同时安装 zlib 和 gzip 开发包; 然而,对于部署来说,如果您希望只使用一个编解码器,只安装一个包就足够了
  • 为了构建和部署本地 hadoop 库,必须为 zlib 提供正确的32/64库(取决于目标平台的32/64位 jvm)

运行

bin/hadoop 脚本通过系统属性确保本机 hadoop 库位于库路径上:-Djava.library.path = < path >

在运行时,检查 MapReduce 任务的日志文件。

  • 如果一切正常,那么: DEBUG util.NativeCodeLoader - Trying to load the custom-built native-hadoop library... INFO util.NativeCodeLoader - Loaded the native-hadoop library
  • 如果出了什么问题,那么: INFO util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
posted @ 2021-01-27 20:02  数大招疯-公众号同名  阅读(405)  评论(0)    收藏  举报