Hadoop本地库

本文讲的是Hadoop本地库,【IT168 资讯】鉴于性能问题以及某些Java类库的缺失,对于某些组件,Hadoop提供了自己的本地实现。 这些组件保存在Hadoop的一个独立的动态链接的库里。这个库在*nix平台上叫libhadoop.so. 本文主要介绍本地库的使用方法以及如何构建本地库。
组件
Hadoop现在已经有以下 compression codecs本地组件:
zlib
gzip
lzo
在以上组件中,lzo和gzip压缩编解码器必须使用hadoop本地库才能运行。
使用方法
hadoop本地库的用法很简单:
看一下 支持的平台.
下载 预构建的32位i386架构的Linux本地hadoop库(可以在hadoop发行版的lib/native目录下找到)或者自己 构建 这些库。
确保你的平台已经安装了zlib-1.2以上版本或者lzo2.0以上版本的软件包或者两者均已安装(根据你的需要)。
bin/hadoop 脚本通过系统属性 -Djava.library.path=来确认hadoop本地库是否包含在库路径里。
检查hadoop日志文件可以查看hadoop库是否正常,正常情况下会看到:
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
支持的平台
Hadoop本地库只支持*nix平台,已经广泛使用在GNU/Linux平台上,但是不支持 Cygwin 和 Mac OS X。
已经测试过的GNU/Linux发行版本:
RHEL4/Fedora
Ubuntu
Gentoo
在上述平台上,32/64位Hadoop本地库分别能和32/64位的jvm一起正常运行。
构建Hadoop本地库
Hadoop本地库使用 ANSI C 编写,使用GNU autotools工具链 (autoconf, autoheader, automake, autoscan, libtool)构建。也就是说构建hadoop库的平台需要有标准C的编译器和GNU autotools工具链。请参看 支持的平台。
你的目标平台上可能会需要的软件包:
C 编译器 (e.g. GNU C Compiler)
GNU Autools 工具链: autoconf, automake, libtool
zlib开发包 (stable version >= 1.2.0)
lzo开发包 (stable version >= 2.0)
如果已经满足了上述先决条件,可以使用build.xml 文件,并把其中的compile.native置为 true,这样就可以生成hadoop本地库:
$ ant -Dcompile.native=true
因为不是所有用户都需要Hadoop本地库,所以默认情况下hadoop不生成该库。
你可以在下面的路径查看新生成的hadoop本地库:
$ build/native//lib
其中是下列系统属性的组合 ${os.name}-${os.arch}-${sun.arch.data.model};例如 Linux-i386-32。
注意
在生成hadoop本地库的目标平台上必须 安装了zlib和lzo开发包;但是如果你只希望使用其中一个的话,在部署时,安装其中任何一个都是足够的。
在目标平台上生成以及部署hadoop本地库时,都需要根据32/64位jvm选取对应的32/64位zlib/lzo软件包。
使用DistributedCache 加载本地库
用户可以通过 DistributedCache 加载本地共享库,并分发和建立库文件的符号链接。
这个例子描述了如何分发库文件并在从map/reduce任务中装载库文件。
首先拷贝库文件到HDFS。
bin/hadoop fs -copyFromLocal mylib.so.1 /libraries/mylib.so.1
启动作业时包含以下代码:
DistributedCache.createSymlink(conf);
DistributedCache.addCacheFile("hdfs://host:port/libraries/mylib.so.1#mylib.so", conf);
map/reduce任务中包含以下代码:
System.loadLibrary("mylib.so");

时间: 2024-09-20 05:54:57

Hadoop本地库的相关文章

hadoop本地库与系统版本不一致

问题描述 hadoop本地库与系统版本不一致 系统是32位的ubantu12.04,部署完Hadoop2.7.0启动后提示错误 解决方案 ubuntu12.04是不是太老了点,换14.04等叫新版本.老版本可能跟hadoop有兼容问题

不会这些,你成不了Hadoop高手!

第一堂课:大数据集群搭建葵花宝典 由浅入深,四步成"狮" 1)快速搞定伪分布Hadoop集群搭建 2)高可用的5节点Hadoop分布式集群搭建(Hadoop 2.6.0) 3)生产环境:CDH5高可用集群环境搭建 4)彩蛋:顺便搞定Storm 和 Spark集群环境 课程大纲 (一)搭建Hadoop伪分布集群,让WordCount飞起来 1.Vmware虚拟机的介绍 2.Vmware虚拟机的安装 3.Vmware虚拟机的配置 4.搭建Linux 虚拟机 5.Linux虚拟机的系统配置

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-ja

hadoop本地库与系统版本不一致引起的错误解决方法  WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform- using builtin-ja 一.运行环境: ubuntu-12.04 eclipse-4.2 hadoop-1.1.1 二.问题 在eclipse中执行wordcount例子出现如下问题,而在终端执行没有: WARN util.NativeCodeLoader: Una

hadoop经典系列(三)2.x真集群安装

一 安装JDK #  /etc/profile export JAVA_HOME=/application/search/java/default export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # source /etc/profile 二 无密码ssh登录(建议本机也弄) # 本地执行:生成密钥对 ssh-

[hadoop系列]hadoop-gpl-compression的安装和编译

inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ). 从Hadoop 0.20.X开始,由于lzo压缩格式GPL形式授权的影响,lzo压缩从hadoop发布包中取消,转而成为Google Code中的一个项目hadoop-gpl-compression .本文介绍hadoop-gpl-compression的安装和编译.这里之所以叫安装和编译,而不是编译和安装,是因为安装并不一定需要编译,安装不成功才需要自己动手编译.(来源:htt

hadoop压缩框架

一般来说,计算机处理的数据都存在一些冗余度,同时数据中间,尤其是相邻数据间存在着相关性,所以可以通过一些有别于原始编码的特殊编码方式来保存数据,使数据占用的存储空间比较小,这个过程一般叫压缩.和压缩对应的概念是解压缩,就是将被压缩的数据从特殊编码方式还原为原始数据的过程. 压缩广泛应用于海量数据处理中,对数据文件进行压缩,可以有效减少存储文件所需的空间,并加快数据在网络上或者到磁盘上的传输速度.在Hadoop中,压缩应用于文件存储.Map阶段到Reduce阶段的数据交换(需要打开相关的选项)等情

32位-hadoop2.7 本地库问题

问题描述 hadoop2.7 本地库问题 我的电脑是ubuntu14.10, 64位的.安装hadoop2.7之后总是会有这个问题 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 看网上说,hadoop包含的是本地库是32位的,但是我到lib/native目录里用file命令查看, li

hadoop +hbase +zookeeper 完全分布搭建 (版本一)

hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA.YARN等.最新的hadoop-2.6.0又增加了YARN HA 注意:apache提供的hadoop-2.6.0的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,所以如果在64位的操作上安装hadoop-2.6.0就需要重新在64操作系统上重新编译 一.重新编译  原因是hadoop-2.6.0.tar.gz安装包是在32位机器上编译的,64位的机器加载本地库.so文件时出错,不影响使用. 解决

通过源码的方式编译hadoop的安装文件

Hadoop2.4.0  重新编译 64  位本地库原创作者:大鹏鸟 时间:2014-07-28环境:虚拟机 VirtualBox,操作系统 64 位 CentOS 6.4下载重新编译需要的软件包apache-ant-1.9.4-bin.tar.gzfindbugs-3.0.0.tar.gzprotobuf-2.5.0.tar.gzapache-maven-3.0.5-bin.tar.gz下载 hadoop2.4.0 的源码包hadoop-2.4.0-src.tar.gz压解源码包[grid@h