64位linux系统编译hadoop源码 native库

2023-05-16

 

 

 

 

下面是自己编译hadoop源码, 然后将native库上传覆盖hadoop的过程
 
 
0 hadoop native库:
在hadoop压缩时 调用此库文件的jni(.so)来调用linux系统的功能, 一般我们的linux机器都是64位,而官网下载的hadoop安装文件都是32位编译的,因此如果不在你本机编译的话,想使用hadoop压缩功能受限。
 
0.1 如何知道你的native库是否已经编译过
  1. cd/opt/hadoop2.5.2/lib/native下,[root@hadoop3 native]# file libhadoop.so.1.0.0   看到这个文件是64位的,这里我编译成功后显示结果如下: libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
  2. 或者直接用  #hdfs dfs -ls /  执行任何一个hadoop命令,如果出现:Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 则表示没有编译过
  3. 或者执行[root@hadoop3 native]# hadoop  checknative  Native library checking:
    hadoop: false 
    zlib:   false 
    snappy: false 
    lz4:    false 
    bzip2:  false   如果显示结果是这样的,也表示没有编译过
     
     
     
    0.2  为何native库不编译就报Unable to load native-hadoop library的信息:
    具体报错为:
     java.lang.UnstatisfiedLinkError:
     /usr/local/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0:/lib64/libc.so.6: version 'GLIBC 2.14' not found
     意思是hadoop native的libhadoop.so.1.0.0需要编译的版本为GLIBC 2.14,而在本地linux上没找到
 
查看hadoop native的GLIBC支持的版本: 
[ root@hadoop3 native]#  strings libhadoop.so.1.0.0 | grep GLIBC    查看hadoop native库
GLIBC_2.2.5
GLIBC_2.12
GLIBC_2.7
GLIBC_2.14
GLIBC_2.6
GLIBC_2.4
GLIBC_2.3.4
查看本地linux的GLIBC版本 
[ root@hadoop3 native]# strings /lib64/libc.so.6 | grep GLIBC   查看 linux
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
上面报错可见,在linux上没有 GLIBC 2.14,因此报错,处理方式只能是将hadoop源码在本地linux上用本地c库来编译,这样在跑hadoop时就会用本地的c库。
 
 
 
1 下面是编译hadoop源码,顺带自带生成编译后的 native库,然后将编译好的native库上传替代你安装的hadoop
的lib/native库下东西即可, 最后我会贴出我的配置文件 /etc/profile的写法
 
1.0  安装contos,  我本机安装的是6.6 查看版本信息为:
[ root@hadoop3 bin]#  cat /etc/redhat-release 
CentOS release 6.6 (Final)
 
1.1 安装jdk, 我按照的1.7
[ root@hadoop3 bin]# java -version
java version "1.7.0_71"
 
 
1.2  安装maven, maven历史版本下载地址:  https://archive.apache.org/dist/maven/binaries/
     这里我下载的版本如下
[ root@hadoop3 ~]#  mvn -version
Apache Maven 3.0.5
  配置信息见最后的 /etc/profile
 
1.3 安装protoc
  hadoop使用protocol buffer通信,从protoc官网下载protoc,下载地址是https://code.google.com/p/protobuf/downloads/list,选择protobuf-2.5.0.tar.gz 下载。
基于google访问不到,因此我将protobuf-2.5.0.tar.gz 上传到附件上。
 

为了编译安装protoc,需要下载几个工具,顺序执行以下命令


    yum install gcc  
    yum intall gcc-c++ 跑这块时报错(Loaded plugins: fastestmirror, refresh-packagekitsecurity No such command: intall.),没有处理继续执行下面命令,最终也能编译过hadoop  

    yum install make  

如果操作系统是CentOS6.5那么gcc和make已经安装了。其他版本不一定。在命令运行时,需要用户经常输入“y”。

 

然后执行以下命令解压缩protobuf

[ root@hadoop3 protobuf-2.5.0]# pwd
/opt/soft/protobuf-2.5.0 下执行下面命令

 tar -zxvf  protobuf-2.5.0.tar.gz  

会生成一个文件夹protobuf-2.5.0,执行以下命令编译protobuf。


    cd protobuf-2.5.0  
    ./configure --prefix=/usr/local/protoc/  
    make && make install  

只要不出错就可以了(我本机执行没有出错)

配置 protoc的环境变量信息见最后的 /etc/profile文件
 
[ root@hadoop3 ~]# protoc --version
libprotoc 2.5.0
 
1.4 安装其他依赖:

顺序执行以下命令


    yum install cmake  
    yum install openssl-devel  
    yum install ncurses-devel  

安装完毕即可,这里我是一把过的。

 

 

1.5 编译hadoop-2.5.2源码
 
官网下载 hadoop-2.5.2源码 hadoop-2.5.2-src.tar.gz
解压后查看文件 
hadoop-2.5.2-src/hadoop-common-project/hadoop-auth中的文件pom.xml 55行以下是否有
 <dependency>
         <groupId>org.mortbay.jetty</groupId>
         <artifactId>jetty-util</artifactId>
         <scope>test</scope>
    </dependency>
如果没有添加上,如果有就不做修改,说是个bug(adoop-2.2.0的)。 这里我的版本2.5.2源码已经修复,因此不需要添加,
好了,现在进入到目录/usr/local/hadoop-2.5.2-src中,执行命令
 
mvn package -DskipTests -Pdist,native
 
该命令会从外网下载依赖的jar,编译hadoop源码,需要花费很长时间,40多分钟吧。
 
 
 
 
第一次编译失败截图如下,就是因为1.3步骤的protc没有配置对环境变量造成:
 
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 25:54.735s
[INFO] Finished at: Mon Jun 20 06:55:13 PDT 2016
[INFO] Final Memory: 47M/113M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:2.5.2:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: 'protoc --version' did not return a version -> [Help 1]
 
 
 
 
如下是最后编译成功的截图耗时:
 
 
 
1.6  /etc/profile配置信息:
export JAVA_HOME=/opt/jdk1.7
export HADOOP_HOME=/opt/hadoop-2.5.2
export HIVE_HOME=/opt/hive0.13
export ZK_HOME=/opt/zk
export FLUME_HOME=/opt/flume1.5.2
 
#export SOLR_HOME=/opt/solr4
export HBASE_HOME=/opt/hbase-0.98.12
#export KYLIN_HOME=/opt/kylin-0.7.1
#export ZOOKEEPER_HOME=/opt/zookeeper-3.4.5
#export OOZIE_HOME=/opt/foroozie4.0/oozie
export TOMCAT_HOME=/opt/tomcat7
export ANT_HOME=/opt/ant1.9.7
export MAVEN_HOME=/opt/maven305
export LD_LIBRARY_PATH=/usr/local/protoc
 
export PATH=.:$LD_LIBRARY_PATH/bin:$MAVEN_HOME/bin:$ANT_HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZK_HOME/bin:$FLUME_HOME/bin:$HBASE_HOME/bin:$TOMCAT_HOME/bin:$PATH
 
 
1.7  将编译后的native包下载,后上传替换 /opt/hadoop-2.5.2/lib/native下
 
编译后的native路径: /opt/soft/hadoop-2.5.2-src/hadoop-dist/target/hadoop-
2.5.2/navive
 
 
然后执行命令:  可以看到识别 native库了
[ root@hadoop3 bin]#  hadoop  checknative
16/06/20 20:12:30 WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version
16/06/20 20:12:30 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop: true /opt/hadoop-2.5.2/lib/native/libhadoop.so.1.0.0
zlib:   true /lib64/libz.so.1
snappy: false 
lz4:    true revision:99
bzip2:  false 
 
然后重启hadoop集群(我没试验过不需要重启下),执行任意hadoop命令:
[ root@hadoop3 bin]# hdfs dfs -ls /
此时不会再出现  WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable的提示。 编译native库完毕。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

64位linux系统编译hadoop源码 native库 的相关文章

  • 干货丨MapReduce的工作流程是怎样的?

    MapReduce编程模型开发简单且功能强大 xff0c 专门为并行处理大规模数据量而设计 xff0c 接下来 xff0c 我们通过一张图来描述MapReduce的工作过程 xff0c 如下图所示 在图中 xff0c MapReduce的工
  • gerrit中 refs/for 和 refs/heads

    简单点说 xff0c 就是refs for mybranch需要经过code review之后才可以提交 xff1b refs heads mybranch不需要code review 如 xff1a 如果需要code review xff
  • 大学生创业团队组建的几点建议

    大学生创业是一条不归路 xff0c 创业的道路上充满了荆棘 道路虽然艰苦 xff0c 但很充实 如果就业 考研 考公务员是按常规出牌 xff0c 那么创业就是非常规出牌了 如果一个人要想成功 xff0c 我个人认为必须要按 非常规出牌 我自
  • bash: service: command not found(service命令未找到的) 错误的解决方法

    今天碰到一个问题 xff0c 问题如下 xff1a 在启动named服务时 xff0c 出现下面错误提示 xff1a bash service command not found lt wbr gt lt wbr gt 于是我到网上去一搜了
  • 多线程加速图像模板匹配

    多线程加速图像模板匹配 2010年09月05日 多线程加速图像模板匹配 首先这是个没有什么很好的结局的故事 所以下面这点文字不是为了表现一个怎么怎么好的结果 xff0c 而是整个让人头疼的过程 多线程加速算法的实现 xff0c 不是对于算法
  • 老公爱吃的菜(策略模式)

    将策略的上下文的构造函数换用简单工厂模式的话就将业务对象封装起来了 xff0c 客户端就只要了解Boy这个对象就ok了 xff0c 不需要自己去声明接口DreamGir的业务对象l 上下文 public class Boy private
  • Ubuntu 启动图形用户界面

    1 按ALT 43 CTRL 43 F1切换到字符界面 2 按ALT 43 CTRL 43 F7切换到图形界面 如果想 Ubuntu 在每次啟動到 command prompt xff0c 可以輸入以下指令 echo false sudo
  • AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图

    目前因为做人脸识别的一个小项目 xff0c 用到了AdaBoost的人脸识别算法 xff0c 因为在网上找到的所有的AdaBoost的简介都不是很清楚 xff0c 让我看看头脑发昏 xff0c 所以在这里打算花费比较长的时间做一个关于Ada
  • 汉化Windows Azure上的虚拟机

    目前海外Azure上的Windows虚拟机都是英文版 采用英文版可能遇到的问题是某些中文软件会产生乱码 为了支持中文 xff0c 需要做以下配置 xff1a 装中文语言包 xff1a 让VM可以支持zh CN字符集 xff0c 支持中文输入
  • 我看到过的最恐怖的一个接口:

    org springframework beans factory Interface InitializingBean All Known Implementing Classes AbstractAspectJAdvice Abstra
  • 写给恋爱中的男孩

    顶 写给恋爱中的男孩 xff08 包括女孩都要看哈 xff09 其实很多男孩子都不知道 xff0c 女孩子在冲他们发火后自己却转过身不断啜泣 其实很多男孩子都不知道 xff0c 女孩子从来不会真正生他们的气 xff0c 因为她是真的喜欢他在
  • A connection attempt failed because the connected party did not properly ..

    学PHP不久 xff0c 以前用的是人家搭好的环境AMPServer和NMPServer xff0c 但是是PHP5 2的 xff0c 想用PHP5 3的新特性啊 xff0c 就自己搭环境 xff0c 没想到遇到的问题还真不少 xff0c
  • Image 的 getRGB方法

    第一次自己翻译文章 xff0c 翻译不到位的地方忘体谅 xff01 废话少说直接上东西了 函数原型 public void getRGB int rgbData intoffset intscanlength intx inty intwi
  • pads 覆铜 设计 设置

    第十三节 覆铜 Copper Pouring 许多印制电路板 Printed Circuit Board 设计系统支持各种类型覆铜 Copper Pouring 或区域填充方式 xff0c 但是很少能够达到PADS Layout 的覆铜 C
  • SQLServer和VS的安装顺序

    1 种方法 先装SQLServer2005后装vs2005 2 只装vs2005 然后因为vs2005里面已经有了一个SQLServer的express版本了 不过里面没有装上管理工具 这个时候你只需要去给它装一个Microsoft SQL
  • Java多线程示例:4个售票员卖1000张火车票

    售票员 import java util Iterator import java util Map public class TicketSaler implements Runnable private Map lt String Bo
  • 格雷码的实现 (google 面试题)

    问题 xff1a 产生n位元的所有格雷码 格雷码 Gray Code 是一个数列集合 xff0c 每个数使用二进位来表示 xff0c 假设使用n位元来表示每个数字 xff0c 任两个数之间只有一个位元值不同 例如以下为3位元的格雷码 xff
  • 中新网 2 月 1 日电(IT 频道秦辰)按此前国家测绘地理信息局印发的《关于进一步加强互联网地图服务资质管理工作的通知》(下文简称《通知》)要求,今日起未申请...

    最近自己在做一个小东西 xff0c 用log4net日志组件来记录日志 xff0c 自己在前人的基础上加工总结 xff0c 拿出来给大家分享一下 xff0c 不足之处大拿们使劲拍砖 xff0c 感激不尽 xff01 第一步 xff1a 配置
  • 尝尝C#的语法糖(自动属性/匿名方法/Lamda表达式等)-小心蛀牙!

    语法糖 xff0c 意指那些没有给计算机语言添加新功能 xff0c 而只是对人类来说更 sweet 的语法 xff0c 意在使得编程风格更易读 C 2 0 xff0c 3 0发布的新特性 xff0c 除了泛型不是语法糖 xff0c 其他所有
  • 细说ASP.NET Forms身份认证

    用户登录是个很常见的业务需求 xff0c 在ASP NET中 xff0c 这个过程被称为身份认证 由于很常见 xff0c 因此 xff0c 我认为把这块内容整理出来 xff0c 与大家分享应该是件有意义的事 在开发ASP NET项目中 xf

随机推荐

  • Vue + D3 动态可视化图实现之五:世界地图

    2022 11 10 声明 xff08 这篇文章也被下架了 xff09 这个项目只是以 GTD 数据库为例做数据的统计及可视化 xff0c 不涉及对任何具体事件的分析和评论 xff0c 希望能恢复发表 xff01 文中地图数据取自互联网 x
  • 使用Nginx如何配置Tomcat访问日志记录真实IP

    使用Nginx作为反向代理时 xff0c Tomcat的日志记录的客户端IP就不在是真实的客户端IP xff0c 而是Nginx代理的IP 要解决这个问题可以在Nginx配置一个新的Header xff0c 用来存储 remote add
  • 微博系统Sharetronix 部分代码分析

    所有连接请求都经过根目录里的 htaccess处理了url rewrite lt IfModule mod rewrite c gt RewriteEngine On RewriteBase RewriteCond REQUEST FILE
  • Citrix Reciver for Linux错误:you have not chosen trust ... SSL error 61

    在Ubuntu里面 xff0c 使用Citrix Reciver for Linux登录远端服务器 xff0c 总是在Firefox里面提示错误 xff1a you have not chosen trust SSL error 61 服务
  • UFIDA用友软件 NC管理软件5.01 安装说明

    lt Document last modified on Monday March 21 2005 3 46 PM gt lt style type 61 34 text css 34 gt BODY FONT SIZE 85 BACKGR
  • 如何搭建一个数据库服务器平台

    玩Oracle 2年多 了 xff0c 从接触Oracle 到现在 xff0c 一直没有停止过学习 要学的东西太多 xff0c 刚入门的时候是这样的感觉 xff0c 现在还是这样的感觉 有时候也在想 xff0c 还要学多长时间才能感觉自我良
  • 虚拟机中VMware USB Arbitration Service问题的解决办法

    VMware Workstation在安装系统时 xff0c 出现 The connection to the VMware USB Arbitration Service was unsuccessful Please check the
  • 面向对象的4个基本特征

    面向对象的4个基本特征 在上述面向对象的基本概念基础之上 xff0c 不可避免地要涉及到面向对象程序设计所具有的4个共同特征 xff1a 抽象性 封装性 继承性和多态性 1 xff0e 抽象 抽象是人们认识事物的常用方法 xff0c 比如地
  • HDOJ/HDU 1085 母函数 Holding Bin-Laden Captive!

    Holding Bin Laden Captive Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s
  • ISO 9126软件质量模型(软件质量模型的6大特性和27个子特性)

    ISO 9126质量模型 xff1a 软件质量模型的6大特性和27个子特性 ISO9126 软件质量模型是评价软件质量的国际标准 xff0c 由 6 个特性和 27 个子 特性组成 xff0c 建议大家深入理解各特性 子特性的含义和区别 x
  • 北戴河游记

    最近 xff0c 公司年度旅游 我所在的Team去了北戴河 北戴河 海滨地处河北省秦皇岛市中心的西部 是秦皇岛的城市区之一 xff01 受海洋气候的影响 xff0c 夏无酷暑 xff0c 冬无严寒 xff0c 常年保持一级大气质量 xff0
  • 云计算|OpenStack|社区版OpenStack---基本概念科普(kvm的驱动类别和安装)

    前言 xff1a 云计算里基本都是基于kvm技术作为底层支撑 xff0c 但 xff0c 该技术是比较复杂的 xff0c 首先 xff0c 需要硬件的 支撑 xff0c 表现在物理机上 xff0c 就是需要在BIOS中调整设置虚拟化功能 x
  • Pascal's Triangle -- LeetCode

    原题链接 http oj leetcode com problems pascals triangle 这道题比较简单 xff0c 属于基础的数组操作 基本思路是每层保存前一行的指针 xff0c 然后当前航数据根据上一行来得到 xff0c
  • 【转】windows下通过Xmanager远程桌面访问Ubuntu

    原文 xff1a url http ubuntuguide net enable xdmcp remote login in ubuntu 12 04 lts lightdm url This is simple guide about e
  • VNC许可密钥

    今天用电脑远程VNC连接BT机 xff0c 结果告诉我连不上 xff0c 错误忘记了 xff0c 需要我去购买一个VNC密钥 天朝的我怒了 xff0c 找了半天 xff0c 上网搜到一个有效密钥 xff0c 然后去VNC Server端输入
  • [C80]橙汁同人游戏 Acceleration of SUGURI 2 汉化补丁

    游戏 名称 xff1a 橙汁同人游戏 英文 名称 xff1a Acceleration of SUGURI 2 游戏类型 xff1a 格斗类 FTG 游戏 游戏制作 xff1a 橙汁 游戏发行 xff1a 橙汁 游戏平台 xff1a PC
  • 在LINUX中用cal命令解了一段人类文明历史 1752年 - 九月

    以前听人说在Linux上能够查到一个很奇怪的月份 xff0c 只是当时忘了那个特别的月份 今天在网上搜了一下 xff0c 发现通过这个命令 xff08 月份 xff09 了解了一段人类文明历史 cal 9 1752 九月 1752 一 二
  • 单点登录 - CAS【六】renew、gateway

    一 Renew Opting out of SSO 看下官方网站上的描述 There is a feature of the CAS protocol that allows clients to opt out of single sig
  • svn st 信息说明

    摘自 xff1a http hhhk iteye com blog 1473449 未指定参数时 xff0c 只显示本地修改的条目 没有网络访问 使用 q 时 xff0c 只显示本地修改条目的摘要信息 使用 u 时 xff0c 增加工作版本
  • 64位linux系统编译hadoop源码 native库

    下面是自己编译hadoop源码 xff0c 然后将native库上传覆盖hadoop的过程 0 hadoop native库 在hadoop压缩时 调用此库文件的jni so 来调用linux系统的功能 一般我们的linux机器都是64位