这个新手教程描写叙述了native(本地?原生?)hadoop库,包括了一小部分关于native hadoop共享库的讨论。
This guide describes the native hadoop library and includes a small discussion about native shared libraries.
注意: 依据你的环境,词组 "native libraries" 可能会变成 *.so,这样你就须要编译。然后,要是词组 "native compression" 变成 *.so,你就须要在编译时特别指定相关的压缩。(原文是在是翻不好! Depending on your environment, the term
"native libraries" could refer to all *.so‘s you need to compile; and, the term "native compression" could refer to all *.so‘s you need to compile that are specifically related to compression.)当期,然而。这个文档仅仅讨论 native hadoop 库(libhadoop.so).
Hadoop 有 native实现。是由于性能原因和Java的实现不可用而实现了特定的组件。
这些组件可在单节点,动态链接的 native 库中调用native hadoop库。在*nix平台上。库名是 libhadoop.so.
使用hadoop native库相当简单:
native hadoop 库包括两个组件。 zlib 和 gzip 压缩编码器:
native hadoop 库对gzip工作来说是必须的。
native hadoop 库仅在 *nix 平台上受支持。
这个库不能与 Cygwin或 Mac OS X 平台一同工作。
native hadoop 库主要用在 GNU/Linus 平台,已经在这些发行版上測试过:
在全部上面的 32/64 位发行版上。 native hadoop 库会分别执行一个 32/64 位的 jvm.
内置的 32-bit i386-Linux native hadoop 作为hadoop发行版的一部分,位置是 lib/native 文件夹。
你能够从 Hadoop Common Releases 下载hadoop发行版。
确保要安装 zlib和/或 gzip 开发包 - 不论你用哪一个压缩编码器来部署。
native hadoop 库有用 ANSI C 写的,用 GNU autotools-chain (autoconf, autoheader, automake, autoscan, libtool)构建。这意味着它应该能够直接在不论什么有标准C编译器和GNU autotools-chain(见支持的平台)的平台上构建库。
你须要安装在目标平台上的包:
一旦你使用标准的hadoop build.xml file安装了先决的包。并传递compile.native 标志(设为true)去构建 native hadoop library:
$ ant -Dcompile.native=true <target>
你应该能够看见新建的库:
$ build/native/<platform>/lib
平台是系统属性的组合: $os.name-$os.arch-$sun.arch.data.model (如, Linux-i386-32).
请注意:
bin/hadoop 脚本确保 native hadoop library 通过系统属性在 library path 上:-Djava.library.path=<path>
在执行时,为你的 MapReduce 任务检查 hadoop 日志文件。
DEBUG util.NativeCodeLoader - 试着载入自构建的
native-hadoop library... INFO util.NativeCodeLoader - 加载了的 native-hadoop libraryINFO util.NativeCodeLoader - 不能为你的平台加载
native-hadoop library ... 使用可用的java类你能够用DistributedCache 为分布和对称链接库文件加载不论什么的 native shared library 。
这个样例展示了怎样散布一个 a shared library, mylib.so, 并将其从一个 MapReduce任务中加载。
bin/hadoop fs -copyFromLocal mylib.so.1
/libraries/mylib.so.1DistributedCache.createSymlink(conf); DistributedCache.addCacheFile("hdfs://host:port/libraries/mylib.so.
1#mylib.so", conf);System.loadLibrary("mylib.so");注意: 假设你下载了或构建了 native hadoop library,你不须要使用 DistibutedCache 来使库对你的 MapReduce 任务可用。
Hadoop-2.2.0中文文档—— Common - Native Libraries Guide
原文:http://www.cnblogs.com/hrhguanli/p/5095900.html