ubuntu 64位解决Hadoop Native Library(编译hadoop-src)

大数据学习路线图

Hadoop下载页面提供两种下载文件包,一个是已经编译好的(32位)Hadoop压缩包,另一个是Hadoop-src源代码压缩包。一般我们直接下载Hadoop压缩包直接使用即可。但是在Ubuntu 64位上成功运行Hadoop或执行Hadoop Shell命令,都会出现以下提醒:

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

这是因为官网提供的Hadoop压缩包是32位,而我们使用Linux系统是64位,这就导致系统本地库不一致的提醒。当然这个提醒,并不会影响Hadoop的正常使用。要解决这个方法,只需要下载Hadoop官网提供Hadoop-src源代码压缩包在本地64位系统上重新编译即可。

  1. 安装JDK
    sudo apt-get install default-jdk -y
    
  2. 安装openssh-server
    sudo apt-get install openssh-server -y
    
  3. 安装maven
    sudo apt-get install maven -y
    
  4. 安装依赖库
    sudo apt-get install g++ autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev
    
  5. 安装protoc
    sudo apt-get install protobuf-compiler
    

    查看protoc版本

    protoc -version
    
  6. 编译hadoop-src源代码
    这里我从官网下载的hadoop-src源代码压缩包版本是2.7.3,文件名:hadoop-2.7.3-src.tar.gz
    其他版本同样可以用以下方法进行编译。

    tar -zxf ~/Downloads/hadoop-2.7.3-src.tar.gz -C ~/Downloads
    cd hadoop-2.7.3-src
    mvn package -Pdist,native -DskipTests -Dtar
    

    第一次编译需要下载依赖包,等待编译即可.
    如果编译错误,出现错误:

    Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:2.7.3:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: protoc version is 'libprotoc 2.6.1', expected version is '2.5.0' -> [Help 1]
    

    说明你安装protoc版本错误,需要的版本是2.5.0版本,从谷歌代码库中下载2.5.0的版本 。
    下载解压后,进入文件夹,执行如下命令重新安装protoc

    sudo ./configure
    sudo make
    sudo make check
    sudo make install
    protoc --version