hadoop2.7.2学习笔记07-本地库
2017-05-12 14:33
288 查看
1、hadoop本地库
32位的i386-Linux的hadoop本地库位于lib/native目录中。hadoop本地库包含三个组件(后两个完全不知所云,不过以后可能会学习到):
1、压缩与解压(bzip2,lz4,snappy,zlib)。
2、用于支持 HDFS Short-Circuit Local Reads和Centralized
Cache Management in HDFS的IO工具。
3、CRC32 checksum的实现。
hadoop本地库由C语言编写,由GNU自动编译工具(autoconf,autoheader,automake,autoscan,libtool)进行编译。
编译时需要安装的工具包括:
C编译器(例如GNU C编译器)
GNU自动编译工具:autoconf,automake,libtool
zlib开发包(稳定版本 >=1.2.0)
openssl开发包(例如libssl-dev)
注意:zlib的位数需要和部署环境的JVM位数(32/64)一致。
hadoop通过系统参数-Djava.library.path=<path>来指定本地库的位置。
运行mapreduce任务时若出现异常,则会打印下面的日志
INFO util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
NativeLibraryChecker可以用来检查本地库是否可以正确地被加载(在笔记03中有讲到):
[hadoop@localhost hadoop-2.7.2]$ bin/hadoop checknative -a 17/05/12 14:53:10 WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version 17/05/12 14:53:10 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library Native library checking: hadoop: true /home/hadoop/hadoop-env/hadoop-2.7.2/lib/native/libhadoop.so.1.0.0 zlib: true /lib64/libz.so.1 snappy: true /lib64/libsnappy.so.1 lz4: true revision:99 bzip2: false openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)! 17/05/12 14:53:11 INFO util.ExitUtil: Exiting with status 1可以看到有的库加载成功了,有的失败了。
2、本地共享库
使用DistributedCache可以散布和链接任何的本地共享库。方法是:1、将库文件拷贝到HDFS:
bin/hadoop fs -copyFromLocal mylib.so.1 /libraries/mylib.so.12、作业启动程序需要包含下面的代码
DistributedCache.createSymlink(conf); DistributedCache.addCacheFile("hdfs://host:port/libraries/mylib.so. 1#mylib.so", conf);3、接着MapReduce操作就可以包含:
System.loadLibrary("mylib.so");
相关文章推荐
- hadoop2.7.2学习笔记05-hadoop文件系统API定义-本文档使用到的专用符号
- hadoop2.7.2学习笔记05-hadoop文件系统API定义-hadoop文件系统模型
- hadoop2.7.2学习笔记03-hadoop命令
- hadoop2.7.2学习笔记18-HDFS Federation
- hadoop2.7.2学习笔记20-HDFS Snapshots
- hadoop2.7.2学习笔记05-hadoop文件系统API定义-简介
- hadoop2.7.2学习笔记05-hadoop文件系统API定义-hadoop文件系统类org.apache.hadoop.fs.FileSystem
- hadoop2.7.2学习笔记08-代理用户(超级用户以其他用户的名义执行操作)
- hadoop2.7.2学习笔记05-hadoop文件系统API定义-hadoop数据输入流类FSDataInputStream
- hadoop2.7.2学习笔记01-启动单节点集群
- hadoop2.7.2学习笔记09-机架敏感
- hadoop2.7.2学习笔记19-ViewFs
- 大数据-Hadoop学习笔记07
- hadoop2.7.2学习笔记06-CLI MiniCluster
- hadoop2.7.2学习笔记04-hadoop fs shell
- hadoop2.7.2学习笔记02-启动集群
- hadoop2.7.2学习笔记15-HDFS user guide
- Hadoop学习笔记(2)-搭建Hadoop本地模式
- hadoop2.7.2学习笔记16-QJM和HA
- Silverlight学习笔记(2)-安装Silverlight到本地