• hadoop 2.x安装:不能加载本地库 重新编译hadoop本地库


    1. 安装编译库的依赖包

    此过程需要联网,切换至root用户,输入下面命令安装依赖包:

    yum install svn
    yum install autoconfautomake libtool cmake
    yum install ncurses-devel
    yum install openssl-devel
    yum install gcc*
    

    解释一下上面依赖包都是做什么的

    • svn 源码部署的软件
    • autoconfautomake 编译工具
    • libtool 编译工具
    • cmake 编译工具
    • ncurses-devel 编译有关的包
    • openssl-devel 跟SSH有关的库
    • gcc* C语言的编译器(传说是最优秀的C的编译器)

    2.安装maven

    下载最新的maven,并解压

    wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
    tar -xzvf ./apache-maven-3.3.9-bin.tar.gz
    

    将maven移动到公共目录中(为了可以与其他用户共同使用该软件)

    mv ./apache-maven-3.3.9 /usr/local
    

    3.配置环境变量

    我们在root下配置环境变量

    [root@tiny1 usr]# vi /etc/profile
    

    修改/etc/profile文件,配置PATH和JAVA_HOME

    ## JAVA_HOME 设置
    export JAVA_HOME=/usr/java/jdk1.8.0_121
    
    ## PATH设置
    PATH=$PATH:/usr/java/jdk1.8.0_121/bin
    PATH=$PATH:/usr/local/apache-maven-3.3.9/bin
    export MAVEN_OPTS='-Xms256m -Xmx1024m'  
    

    使用source使其生效

    source /etc/profile
    

    4.安装protobuf

    1. 下载protobuf
    由于我们无法连接谷歌,因此我们使用github的下载链接
    我们下载protobuf-2.5.0.tar.gz(谜一般的下载速度啊..)

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

    注释,忍受不了这种速度,我是从百度云下载的具体下载方式如下(网址是经常更新的):

    wget -c --referer=http://pan.baidu.com/s/1jG7lWCA -O protobuf-2.5.0.tar.gz "https://4gwh1hpbwfaaurqbqgw5o.ourdvsss.com/d1.baidupcs.com/file/b751f772bdeb2812a2a8e7202bf1dae8?bkt=p3-1400b751f772bdeb2812a2a8e7202bf1dae8dea23a0600000024a66d&xcode=504070a5bb657004a8e05137d854b1cc4ae861d68893197e1682cb8519c2059f&fid=4077236996-250528-677081914465492&time=1489113559&sign=FDTAXGERLBHS-DCb740ccc5511e5e8fedcff06b081203-YLO7khFwwJ%2Fbkh5QChLbJDwFhQ0%3D&to=d1&size=2401901&sta_dx=2401901&sta_cs=72663&sta_ft=gz&sta_ct=7&sta_mt=7&fm2=MH,Ningbo,Netizen-anywhere,,hebeice&newver=1&newfm=1&secfm=1&flow_ver=3&pkey=1400b751f772bdeb2812a2a8e7202bf1dae8dea23a0600000024a66d&sl=72286287&expires=8h&rt=sh&r=294006966&mlogid=1587409026051190627&vuk=4077236996&vbdid=1801066142&fin=protobuf-2.5.0.tar.gz&fn=protobuf-2.5.0.tar.gz&rtype=1&iv=0&dp-logid=1587409026051190627&dp-callid=0.1.1&hps=1&csl=400&csign=6F5x1nX1uzXlw4X3JI%2BiujI8szM%3D&by=themis&wshc_tag=0&wsts_tag=58c211d8&wsid_tag=7cefb03c&wsiphost=ipdbm"
    

    说明一下linux上下载百度云的方式为

    使用wget下载 百度云资源格式:wget -c --referer=百度云分享链接 -O 保存的文件名 "百度云实际下载地址".

    注:此处-c 为断点续传,--referer为百度云分享地址,-O为指定输出文件,

    2. 解压protobuf

    [root@tiny1 ~]# tar -xzvf ./protobuf-2.5.0.tar.gz
    

    3. 编译

    [root@tiny1 ~]# cd protobuf-2.5.0
    [root@tiny1 protobuf-2.5.0]# ./configure
    ## 下面三个都是编译
    [root@tiny1 protobuf-2.5.0]# make
    [root@tiny1 protobuf-2.5.0]# make check
    [root@tiny1 protobuf-2.5.0]# make install
    

    4. 检查编辑结果
    实际上我们费了那么大的力气就是为了一个文件

    [root@tiny1 protobuf-2.5.0]# ls /usr/local/bin
    protoc
    

    我们就是为了protoc命令,后面会用到他
    将protobuf的压缩包和文件夹删除

    [root@tiny1 ~]# rm protobuf-2.5.0.tar.gz
    rm:是否删除普通文件 "protobuf-2.5.0.tar.gz"?y
    [root@tiny1 ~]# rm -fr protobuf-2.5.0/
    

    5. 下载hadoop源码

    我们切换回grid

    [root@tiny1 ~]# su grid2
    [grid2@tiny1 root]$ cd ~
    [grid2@tiny1 ~]$
    

    使用下面命令获取hadoop源代码

    [grid2@tiny1 ~]$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2-src.tar.gz
    

    解压该文件

    [grid2@tiny1 ~]$ tar -zxvf hadoop-2.7.2-src.tar.gz
    

    6.编译hadoop

    我们进入hadoop源码目录你使用maven对其进行编译(注意文件夹内必须有pom.xml)

    [grid2@tiny1 ~]$ cd hadoop-2.7.2-src
    [grid2@tiny1 ~]$ mvn package -Pdist,native -DskipTests -Dtar -e
    

    这是一个很漫长的过程,编译了3个小时,实际上修改BUG等原因编译了一天

    7.使用编译出来的本地库覆盖掉原来的本地库

    实际上编译出来的文件我们可以作为hadoop的安装包直接使用,区别在于一个是官方版,一个是本地编译版。
    我们找到编译的本地文件目录

    [grid2@tiny1 hadoop-2.7.2-src]$ cd hadoop-dist/target/hadoop-2.7.2/lib/native
    [grid2@tiny1 native]$ ll
    总用量 4372
    -rw-rw-r--. 1 grid2 grid2 1122838 3月  12 02:24 libhadoop.a
    -rw-rw-r--. 1 grid2 grid2 1487268 3月  12 02:24 libhadooppipes.a
    lrwxrwxrwx. 1 grid2 grid2      18 3月  12 02:24 libhadoop.so -> libhadoop.so.1.0.0
    -rwxrwxr-x. 1 grid2 grid2  673180 3月  12 02:24 libhadoop.so.1.0.0
    -rw-rw-r--. 1 grid2 grid2  582040 3月  12 02:24 libhadooputils.a
    -rw-rw-r--. 1 grid2 grid2  364812 3月  12 02:24 libhdfs.a
    lrwxrwxrwx. 1 grid2 grid2      16 3月  12 02:24 libhdfs.so -> libhdfs.so.0.0.0
    -rwxrwxr-x. 1 grid2 grid2  229025 3月  12 02:24 libhdfs.so.0.0.0
    

    将编译好的文件复制到相应的位置上:

    [grid2@tiny1 native]$ cd ..
    [grid2@tiny1 lib]$ cd native/ /home/grid2/hadoop/hadoop-2.7.2/lib/native/
    

    完成

  • 相关阅读:
    第八周学习进度总结
    全国(球)疫情信息可视化
    第六周学习进度总结
    手把手教你爬取B站弹幕!
    Xpath基础学习
    团队成员及选题介绍
    第五周学习进度
    课堂练习之疫情APP
    SpringMVC02
    06 | 链表(上):如何实现LRU缓存淘汰算法?
  • 原文地址:https://www.cnblogs.com/erygreat/p/7223967.html
Copyright © 2020-2023  润新知