分享

hadoop入门-第二章common:第一节hadoop 本地库 指南

pig2 2016-1-22 20:01:09 发表于 连载型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 12140

问题导读

1.hadoop本地库支持哪些平台?
2.本地库是否有32,64之分?
3.hadoop通过什么工具来检测本地库是否加载正确?
4.如何加载本地库?包含哪些步骤?
5.本地库在什么情况下不需要使用DistibutedCache?









概述

这个指南描述了hadoop本地库,包括关于共享本地库的小讨论。

注意:
取决于你的环境,这个词 “native libraries”涉及所有的*.so’,你需要编译;这个词 “native compression”涉及所有的*.so’的你需要编译指定与压缩相关的。当前,尽管如此,这个文档仅限于hadoop本地库 (libhadoop.so).文档为libhdfs库(libhdfs.so)点这 here.

hadoop本地库

处于性能考虑和非可用性 Java 实现,Hadoop的具有某些部件的本地实现,这些组件单独是可用的。动态链接库调用本地原生Hadoop库。 在 *nix(如:Linux,unix) 平台上本地库名字为 libhadoop.so.


用法
相当容易使用hadoop本地库:
1.查看组件
2.查看支持平台
3.下载一个构建好的hadoop发布版本或则自己构建本地库。无论是自己下载还是自己构建(编译),本地的名字是相同的: libhadoop.so
4.安装压缩编解码开发包(> > zlib-1.2,gzip-1.2):
如果你下载本地库,安装一个或则多个开发包,无论压缩编解码你想用于部署。
如果你想编译本地库,它是强制性安装了开发包。
5.检查运行时日志文件

组件

本地库包含各种组件:
  • Compression Codecs (bzip2, lz4, snappy, zlib)
  • Native IO utilities for HDFS Short-Circuit Local Reads and Centralized Cache Management in HDFS
  • CRC32 校验实现

支持平台

hadoop本地库仅支持在*nix平台上,不支持 Cygwin和Mac OS X 平台.
hadoop本地库主要用在GNU/Linus平台,已测试

  • RHEL4/Fedora
  • Ubuntu
  • Gentoo
上面hadoop 32/64位本地库与相应的32/64 位 jvm工作


下载

hadoop预构建 32-位 i386-Linux本地库作为hadoop分布式一部分是有效的,位于e lib/native目录。你可以下载从hadoop Common Releases.
一定要安装zlib和/或gzip 开发包

构建
hadoop本地库是用ANSI C编写,并使用GNU自动工具链 (autoconf, autoheader, automake, autoscan, libtool)构建。这意味着他可以直接使用工具链 (autoconf, autoheader, automake, autoscan, libtool)在任何平台上构建(查看支持平台)
在平台上包需要安装:
  • C compiler (e.g. GNU C Compiler)
  • GNU Autools Chain: autoconf, automake, libtool
  • zlib-development package (stable version >= 1.2.0)
  • openssl-development package(e.g. libssl-dev)


一旦你安装必备包使用标准的Hadoop的pom.xml文件,通过本地库标识构建hadoop本地库
[mw_shl_code=bash,true]   $ mvn package -Pdist,native -DskipTests -Dtar[/mw_shl_code]
你可以查看新构建的库在
[mw_shl_code=bash,true] $ hadoop-dist/target/hadoop-2.7.1/lib/native[/mw_shl_code]

请注意以下几点:
1.它强制安装 zlib 和 gzip 开发包在目标平台,构建hadoop本地库。尽管如此,如果你想安装部署使用一个codec包,也是足够的。
2.为了构建和部署hadoop本地库,使用正确的zlib 32/64位 库是需要的 ,在目标平台上依赖32/64 位 jvm,

运行时
bin/hadoop脚本确保hadoop本地库通过系统属性-Djava.library.path=<path>在库路径。
在运行时,检查hadoop MapReduce任务日志文件
1.如果所有的事情准备好,然后调试util.NativeCodeLoader ,尝试加载自定义构建本地库。。。 INFO util.NativeCodeLoader - Loaded the native-hadoop library
2.如果产生错误,然后:INFO util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

检查

NativeLibraryChecker是一个工具用来检测本地库是否加载正确,你可以启动nativelibrarychecker如下:

[mw_shl_code=bash,true]   $ hadoop checknative -a
   14/12/06 01:30:45 WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version
   14/12/06 01:30:45 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
   Native library checking:
   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
   lz4:    true revision:99
   bzip2:  false[/mw_shl_code]

本地共享库

你可以加载任何本地共享库使用DistributedCache,分发和符号链接库文件
这个例子展示了如何分发共享本地库mylib.so,和从mapreduc任务加载的。
1.首先复制库到hdfs:bin/hadoop fs -copyFromLocal mylib.so.1 /libraries/mylib.so.1
2.job启动程序应该包含下面:
[mw_shl_code=bash,true]DistributedCache.createSymlink(conf);
DistributedCache.addCacheFile("hdfs://host:port/libraries/mylib.so. 1#mylib.so", conf);[/mw_shl_code]
3.MapReduce 任务应该包含:
[mw_shl_code=bash,true] System.loadLibrary("mylib.so");[/mw_shl_code]
注意:
如果你下载或则构建了hadoop本地库,不需要使用DistibutedCache使库提供给mapreduce任务





版本:2.7.1



相关文章

hadoop入门-第一章General:第一节单节点伪分布

hadoop入门-第一章General:第二节集群配置

hadoop入门-第一章General:第三节Hadoop初级入门之命令指南

hadoop入门-第一章General:第四节文件系统shell

hadoop入门-第一章General:第五节hadoop的兼容性说明

hadoop入门-第一章General:第六节开发人员和用户接口指南:hadoop接口分类

hadoop入门-第一章General:第七节Hadoop 文件系统 API :概述

hadoop入门-第二章common:第一节hadoop 本地库 指南

hadoop入门-第二章common:第二节hadoop代理用户 -超级用户代理其它用户

hadoop入门-第二章common:第三节机架智能感知

hadoop入门-第二章common:第四节安全模式说明

hadoop入门-第二章common:第五节服务级别授权指南

hadoop入门-第二章common:第六节Hadoop HTTP web-consoles认证机制

hadoop入门-第二章common:第七节Hadoop Key管理服务器(KMS) - 文档集

hadoop入门:第三章HDFS文档概述(一)

hadoop入门:第三章HDFS文档概述(二)

hadoop入门:第四章mapreduce文档概述

hadoop入门:第五章MapReduce REST APIs文档概述

hadoop入门:第六章YARN文档概述

hadoop入门:第七章YARN REST APIs

hadoop入门:第八章hadoop兼容文件系统

hadoop入门:第九章hadoop认证

hadoop入门:第十章hadoop工具

hadoop入门:第十一章hadoop配置

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条