`
kfcman
  • 浏览: 395552 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

位linux系统编译hadoop源码 native库

 
阅读更多
下面是自己编译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的写法
分享到:
评论

相关推荐

    mac下编译hadoop3.1.4源码生成的native库

    在Mac环境下编译Hadoop 3.1.4的源码以生成其本地库是一个涉及多步骤的过程,这对于理解Hadoop的内部工作原理以及自定义配置具有重要意义。Hadoop是Apache软件基金会的一个开源项目,主要处理分布式存储和计算任务。...

    centos7 64位下编译Hadoop2.7.2源码库文件

    总结来说,编译Hadoop源码库文件是一个涉及系统环境配置、源码获取与编译、本地库构建、配置调整和测试验证的复杂过程。通过这个过程,我们可以得到针对特定平台优化的Hadoop执行环境,这对于在生产环境中提高性能和...

    win 7 64上编译 Hadoop 2.7.3 源码

    ### Win 7 64位系统上编译Hadoop 2.7.3源码的知识点 #### 一、背景介绍 在当前大数据处理技术快速发展的背景下,Hadoop作为主流的大数据处理框架之一,被广泛应用于各类场景之中。对于开发者来说,能够熟练地在自己...

    Hadoop 2.2.0 64位native文件(重编译)

    这个64位的native文件是Hadoop针对64位Linux操作系统编译的一组库文件,它们对于Hadoop在Linux环境下高效运行至关重要。在Hadoop的源代码中,native库主要是由C++编写的,提供了与Java层交互的关键功能,尤其是涉及...

    hadoop-2.3.0 的64位 native库

    1. **获取源码**:首先,你需要从Apache Hadoop的官方仓库下载源代码,对于Hadoop 2.3.0,这将是一个包含所有源文件的压缩包。 2. **环境配置**:确保你的开发环境已经安装了必要的工具,如Java Development Kit ...

    hadoop-2.6.0编译好的64bit的native库

    在64位系统上运行Hadoop 2.6.0会...这是因为hadoop默认编译好的native库是32bit的,所以要重新编译hadoop2.6的源代码,获取64位native库,将其复制到原来安装的hadoop的native目录中替代原来的类库,然后重新运行即可。

    hadoop2.8.1 64bit native 编译

    在64位系统上编译Hadoop native库是为了确保软件能够充分利用64位处理器的优势,包括更大的内存寻址能力和更高的并行计算能力。编译时需要确保你的开发环境(如GCC编译器)也是64位的,并且满足所有依赖项。 4. **...

    编译hadoop-2.5.0-cdh5.3.6 + snappy 源码的native包

    本文将详细讲解如何在CentOS 6.5系统上编译Hadoop 2.5.0 - CDH5.3.6与Snappy的源码,以生成适用于该环境的native库。 首先,我们要了解Hadoop的native库是什么。Hadoop的native库是一组C++编译的库,它们提供了与...

    mac 下hadoop3.0.2编译的native库

    - 若遇到依赖库版本不匹配的问题,可能需要调整Hadoop源码中的相关版本号或者安装特定版本的依赖库。 完成上述步骤后,你应该能够成功地在Mac上运行Hadoop 3.0.2,并且不会出现因缺少本地库导致的错误。如果你在...

    hadoop-3.1.3-mac-native_lib.zip

    编译Hadoop源码是一项技术性工作,需要熟悉Java开发环境和C++编译器,因为Hadoop的本地库部分是用C++编写的。对于Hadoop 3.1.3,你需要遵循以下步骤来编译macOS的本地库: 1. 首先,确保你的系统已经安装了Java ...

    Centos6.8 32位 64位下编译 hadoop 2.6.4 源码

    为了成功编译Hadoop源码,还需要安装一系列的依赖软件,这些软件可以通过Centos的包管理器`yum`进行安装。具体命令如下: ```bash sudo yum -y install gcc* sudo yum -y install cmake sudo yum -y install glibc-...

    hadoop 2.4.1 64位native库

    1. **编译和构建**:从源码编译Hadoop,确保在64位环境下进行,以便生成适用于该平台的库。 2. **配置环境变量**:设置`HADOOP_OPTS`或`HADOOP_COMMON_LIB_NATIVE_DIR`,指向64位Native库的路径。 3. **测试验证**...

    hadoop3.1.1native文件含zstd

    描述中提到的“centos7 64位下hadoop3.1.1源码编译生native库”是指在CentOS 7操作系统64位环境下,通过源代码编译的方式构建了Hadoop 3.1.1的本地库。源码编译是安装Hadoop时的一个选项,尤其是当需要特定功能或...

    hadoop-2.5.0-cdh5.3.6 编译native包

    总的来说,编译Hadoop的native包是一项技术性较强的任务,需要对Linux系统、编译工具和Hadoop有深入理解。通过这个过程,用户不仅可以学习到Hadoop的内部机制,还可以根据特定环境定制优化Hadoop的性能。然而,对于...

    hadoop2.8.1 native lib

    在Hadoop生态系统中,"hadoop2.8.1 native lib"是指针对Hadoop 2.8.1版本的本地库,这些库主要是C编译的动态链接库(DLL),用于在Windows操作系统上提供对Hadoop核心功能的支持。Hadoop原本是设计在Linux环境运行的...

    mac系统下编译hadoop3.2.1生成的native包

    mac系统下编译hadoop3.2.1源码后生成的lib/native下的包,为了解决“WARN util.NativeCodeLoader”警告,包含snappy及isa-l,编译过程可以看https://blog.csdn.net/weixin_44570264/article/details/106846117

    macOS编译hadoop-2.8.5

    这将编译Hadoop源代码,并创建所需的可执行文件和库,但跳过了测试阶段,因为编译过程可能会耗时较长。 编译完成后,你可以在`hadoop-2.8.5/dist`目录下找到编译好的Hadoop发行版。将其添加到你的`$PATH`环境变量中...

    Ubuntu下hadoop-2.5.2编译好的64bit的native库

    标题提到的"Ubuntu下hadoop-2.5.2编译好的64bit的native库",意味着这是一个专门为64位Ubuntu系统优化的Hadoop原生库包。这个库包包含了与Hadoop 2.5.2版本兼容的所有必要的C/C++编译的库文件,它们可以显著提高...

    hadoop321 native lib for Catalina.zip

    根据hadoop3.2.1源码编译,native library,native库依赖的第三方库主要有openssl 1.1,protobuf 2.5.0,第三方库未包含,如果有缺失的,例如zlib等,可通过homebrew自行安装,用最新版即可,jdk8,hadoop完整包可用...

Global site tag (gtag.js) - Google Analytics