Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

总览

本指南介绍了本地的hadoop库,并包括了有关本地共享库的简短讨论。

注意:根据您的环境,术语“本机库”可能是指所有需要编译的* .so。并且,“本机压缩”一词可以指代您需要编译的与压缩特别相关的所有* .so。但是,当前,该文档仅处理本机hadoop库(libhadoop.so)。libhdfs库的文件(libhdfs.so)在这里

本机Hadoop库

出于性能原因和Java实现的不可用性,Hadoop具有某些组件的本机实现。这些组件在单个动态链接的本机库(称为本机hadoop库)中可用。在* nix平台上,该库名为libhadoop.so

用法

使用本地hadoop库非常容易:

  1. 查看组件。
  2. 查看支持的平台。
  3. 下载一个hadoop版本,该版本将包含本机hadoop库的预构建版本,或者构建自己的本机hadoop库版本。无论下载还是构建,该库的名称都是相同的:libhadoop.so
  4. 安装压缩编解码器开发包(> zlib-1.2,> gzip-1.2):
    • 如果下载该库,请安装一个或多个开发包-您要在部署中使用的任何压缩编解码器。
    • 如果您构建库,则必须安装两个开发包。
  5. 检查运行时日志文件。

组件

本机hadoop库包含各种组件:

支持平台

仅* nix平台支持本机hadoop库。该库不适用于Cygwin或Mac OS X平台。

原生hadoop库主要在GNU / Linus平台上使用,并已在以下发行版上进行了测试:

  • RHEL4 / Fedora
  • 的Ubuntu
  • Gentoo

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

下载

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

确保安装zlib和/或gzip开发包-您要在部署中使用的任何压缩编解码器。

建立

原生hadoop库是用ANSI C编写的,并使用GNU autotools链(autoconf,autoheader,automake,autoscan,libtool)构建。这意味着应该在任何使用符合标准的C编译器和GNU autotools-chain(请参阅支持的平台)的平台上直接构建该库。

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

  • C编译器(例如GNU C编译器)
  • GNU Autools链:autoconf,automake,libtool
  • zlib-development软件包(稳定版本> = 1.2.0)
  • openssl开发包(例如libssl-dev)

安装必备软件包后,请使用标准的hadoop pom.xml文件并传递本机标志以构建本机hadoop库:

   $ mvn软件包-Pdist,native -DskipTests -Dtar

您应该在以下位置看到新建的库:

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

请注意以下事项:

  • 为了构建本机hadoop库,必须在目标平台上安装zlib和gzip开发包。但是,对于部署而言,如果只想使用一个编解码器,则只安装一个软件包就足够了。
  • 为了构建和部署本机hadoop库,有必要为zlib提供正确的32/64库,具体取决于目标平台的32/64位jvm。

运行

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

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

  • 如果一切正常,则:DEBUG util.NativeCodeLoader-尝试加载定制的本机 Hadoop 库... INFO util.NativeCodeLoader-加载本机Hadoop库
  • 如果出了什么问题,则:INFO util.NativeCodeLoader-无法为您的平台加载本机Hadoop库...在适当情况下使用内建的Java类

校验

NativeLibraryChecker是用于检查是否正确加载本机库的工具。您可以按以下方式启动NativeLibraryChecker:

   $ hadoop checknative -a
   14/12/06 01:30:45 WARN bzip2.Bzip2Factory:无法加载/初始化native-bzip2库system-native,将使用纯Java版本
   14/12/06 01:30:45 INFO zlib.ZlibFactory:成功加载并初始化了native-zlib库
   本机库检查:
   hadoop:true /home/ozawa/hadoop/lib/native/libhadoop.so.1.0.0
   zlib:true /lib/x86_64-linux-gnu/libz.so.1
   snappy:true /usr/lib/libsnappy.so.1
   zstd:true /usr/lib/libzstd.so.1
   lz4:真实修订版:99
   bzip2:错误

本机共享库

您可以使用DistributedCache加载任何本机共享库,以分发和符号链接库文件。

本示例说明如何分发共享库mylib.so并从MapReduce任务加载它。

  1. 首先将库复制到HDFS:bin / hadoop fs -copyFromLocal mylib.so.1 /libraries/mylib.so.1
  2. 作业启动程序应包含以下内容:DistributedCache.createSymlink(conf); DistributedCache.addCacheFile(“ hdfs:// host:port / libraries / mylib.so。1#mylib.so”,conf);
  3. MapReduce任务可以包含:System.loadLibrary(“ mylib.so”);

注意:如果下载或构建了本地hadoop库,则无需使用DistibutedCache使该库可用于MapReduce任务。