背景

Hadoop 2.4.1预编译版本自带的libhadoop.so是在32位机器上编译上,导致在64位OS上运行时,总出现如下告警:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

查看libhadoop.so的位数,显示是32位的:

file libhadoop.so.1.0.0

libhadoop.so.1.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

为彻底解决此问题,自行编译Hadoop 2.4.1源码。

编译过程

安装相关软件

yum install -y cmake autoconf automake libtool gcc zlib1g-dev pkg-config libssl-dev openssl gcc g++ make maven zlib zlib1g-dev libcurl4-o

安装protobuf-2.5.0

1

2

3

4

5

6wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz

tar -zxvf protobuf-2.5.0.tar.gz

cdprotobuf-2.5.0

./configure

make

make install

编译Hadoop源码

1

2

3

4

5wget https://archive.apache.org/dist/hadoop/core/hadoop-2.4.1/hadoop-2.4.1-src.tar.gz

tar -zxvf hadoop-2.4.1-src.tar.gz

cdhadoop-2.4.1-src

exportPlatform=x64

mvn package -Pdist,native -DskipTests -Dtar

查看编译后的本地库,已经是64位:

1

2

3cdhadoop-dist/target/hadoop-2.4.1/lib/native

file libhadoop.so.1.0.0

libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped

拷贝到Hadoop环境中

1

2

3

4

5cdhadoop-dist/target/hadoop-2.4.1/lib/native

cp * /opt/hadoop/lib/native/

scp * data01:/opt/hadoop/lib/native/

scp * data02:/opt/hadoop/lib/native/

scp * data03:/opt/hadoop/lib/native/

修改环境变量

在etc/hadoop/hadoop-env.sh中增加:

1

2exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/:/usr/local/lib/

exportJAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:/opt/hadoop/lib/native/

参考文档

hadoop编译java,Hadoop源码编译(2.4.1)相关推荐

  1. Ubuntu下源码编译VirtualBox六 —— 源码编译(5)

    接前一篇文章<Ubuntu下源码编译VirtualBox五 -- 源码编译(4)>,链接如下: Ubuntu下源码编译VirtualBox五 -- 源码编译(4)_蓝天居士的博客-CSDN ...

  2. Ubuntu下源码编译VirtualBox五 —— 源码编译(4)

    接前一篇文章<Ubuntu下源码编译VirtualBox四 -- 源码编译(3)>,链接如下: Ubuntu下源码编译VirtualBox四 -- 源码编译(3)_蓝天居士的博客-CSDN ...

  3. java jni编译_从源码编译Android系统的Java类库和JNI动态库的方法

    利用源码编译Android系统Java类库 1.编写Java项目和Android.mk文件 ├── Android.mk └── src └── com └── lhw └── framework └ ...

  4. php 7.0 编译安装mysql_源码编译安装php7.0.5

    源码编译安装php7.0.5 源码包下载地址 安装epel扩展yum源 [root@xuegod63 ~]# yum clean all [root@xuegod63 ~]# yum list 注:R ...

  5. 项目编译失败_Swift源码编译让底层更清晰

    WWDC2020 大会将通过 Apple Developer App 和 Apple Developer网站免费向所有开发者开放! 从去年火遍全网的 SwiftUI 以及 Combine 到今年全新的 ...

  6. tensorflow源码编译教程_源码编译安装tensorflow 1.8

    参考官方指南 基本要求 官网测试过的源代码配置如下: image 也就是说,按照这个版本安装的话不应该再产生版本的问题了. 我的配置 ubuntu 16 python 2.7 nccl 2.3 gcc ...

  7. .net core linux 编译,.NET Core 源码编译的问题解析

    引言: .NET Core 源码编译 https://github.com/dotnet git clone https://github.com/dotnet/runtime.git 一:Windo ...

  8. 源码编译mysql5.5_源码编译安装MySQL5.5

    前面的blog都有介绍mysql数据库存,不过那都是通用二进制的格式安装的,本文主要介绍在Centos6.5系统上源码编译安装MySQL数据库以及如何在Centos5系列版本的系统上如何编译安装cma ...

  9. linux boost 1.53编译,boost-1.53源码编译

    1.下载源码.首先得明白,boost大多数库都只有头文件,链接时不需Lib文件:以下库需要单独编译成库: Boost.Filesystem Boost.GraphParallel Boost.IOSt ...

  10. 简诉android源代码编译过程,Android源码编译过程及原理(二)

    在未来等风也等你 本节主要记录的内容anroid 编译系统的结构 编译中枢中main.mk的基本解析 除非特别说明本节中的目录都是基于android的源码目录 1. android 编译系统的结构 a ...

最新文章

  1. shell 工具_Kali Linux渗透工具【八】:系统命令注入漏洞工具 – Commix使用
  2. Task和async/await详解
  3. 数据库开发——MySQL——约束条件与表关系
  4. shell echo 彩色字体
  5. MSComm控件过程中内存溢出和GetOneDimSize出错的问题
  6. 我的程序员之路(英语的学习)
  7. 【Scratch】进阶篇-《Scratch游戏开发》恐龙跳一跳
  8. android win10 双系统,安卓+Win10双系统?这个可以有!
  9. Ubuntu之安装拼音输入法
  10. 用Python做了个图片识别系统(附源码)
  11. 谈马云创业人生中的十大苦难
  12. 常见浏览器宽高及可视区域的宽高获取问题
  13. 一亿用户背后架构的秘密
  14. Java定时任务的解决方案(Quartz等)
  15. 企查查爬虫python实现(二)报错与细节
  16. 安卓讲课笔记3.4 网格布局
  17. 计算机考研经验贴-初试
  18. 项目管理之如何控制项目进度和质量
  19. 计算机界的传奇人物:高德纳
  20. springboot 微信小程序支付回调

热门文章

  1. 挂起某线程命令 Linux,linux 线程挂起恢复的简单示例
  2. linux安装mq报5724,linux下MQ简单配置手册.doc
  3. AQS源码阅读笔记(一)
  4. 小到年货大到产业,刘村长的扶贫模式有点厉害!
  5. if的作用域问题 *输出1~6的随机数*
  6. 一个简单的JDBC通用工具
  7. 完美完全卸载Oracle 11g数据库
  8. lintcode二叉树的锯齿形层次遍历 (双端队列)
  9. ios俩个APP之间跳转、传值
  10. 如何加强测评机构自身的规范化管理, 不断提高测评的能力和水平