hadoop编译

前期准备

软件需要

  1. 部署JAVA环境
  2. 安装maven
  3. 安装Protocol Buffer 2.5.0
  4. 安装Findbugs(可选

软件安装

安装maven

  1. 下载解压maven的安装包
[hadoop@hadoop001 software]$ pwd
/home/hadoop/software
[hadoop@hadoop001 software]$ wget https://archive.apache.org/dist/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz
[hadoop@hadoop001 software]$ tar -xzvf apache-maven-3.3.3-bin.tar.gz -C /home/hadoop/app/
备注:开始用maven的tar.gz类型压缩包的时候,一直有点小问题,后来重新下载了maven的zip类型的压缩包,问题突然解决了,我也不太清楚和压缩类型是否有关联,也可能是操作不慎,小伙伴可以留意一下
  1. 配置全局环境变量
[hadoop@hadoop001 software]$  exit
[root@hadoop001 ~]$  vi /etc/profile
export MAVEN_HOME=/home/hadoop/app/apache-maven-3.3.3
export PATH=$MAVEN_HOME/bin:$PATH
[root@hadoop001 ~]$  source /etc/profile
[hadoop@hadoop001 ~]$ mvn -version (验证生效)

安装ProtocolBuffer 2.5.0

  1. 下载解压protobuf-2.5.0
[hadoop@hadoop001 software]$ rz (官网下载的版本里面缺少东西,比如后面configure这个文件夹就没有,所以从其他地方找的压缩包上传的)
[hadoop@hadoop001 software]$ tar -xzvf protobuf-2.5.0.tar.gz -C /home/hadoop/app/
  • 对protobuf-2.5.0进行编译
  • [root@hadoop001 ~]# yum install -y gcc gcc-c++ make cmake
    [root@hadoop001 ~]# yum install -y autoconf automake libtool curl make g++ unzip
    [hadoop@hadoop001 software]$ cd ../app/protobuf-2.5.0
    [hadoop@hadoop001 protobuf-2.5.0]$ ./configure --prefix=/home/hadoop/app/protobuf(指定编译之后的安装路径,目录不需要自己去创建,编译过程中会自动创建)
    [hadoop@hadoop001 protobuf-2.5.0]$  make && make install (进行安装)
    

    安装完之后:

    [hadoop@hadoop001 app]$ ll -d protobuf/
    drwxrwxr-x. 5 hadoop hadoop 4096 Nov 30 19:06 protobuf/  (已经自动新建了一个文件夹)
    
  • 配置全局环境变量
  • [root@hadoop001 ~]# vi /etc/profile
    export PROTOC_HOME=/home/hadoop/app/protobuf
    export PATH=$PROTOC_HOME/bin:$PATH
    [root@hadoop001 ~]# source /etc/profile
    [root@hadoop001 ~]# protoc  --version
    libprotoc 2.5.0  (安装成功)
    

    安装其他依赖包

    1. 为了支持native,我们需要手动去安装支持这些压缩的本地库
    [root@hadoop001 ~]# yum install -y openssl openssl-devel svn ncurses-devel zlib-devel libtool
    [root@hadoop001 ~]# yum install -y snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop autoconf automake
    

    保险起见,再次执行下面的语句,确保都已经下载好了包

    [root@hadoop001 ~]# yum install -y snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop autoconf automake
    

    对hadoop进行编译

    1. 因为我之前已经安装好了hadoop-2.6.0-cdh5.7.0这个版本,所以里面已经安装好了相关的hive sqoop等软件,不想再重新安装一次,我就采用了另一种方法。对hadoop-2.7.4-src.tar.gz 这个版本进行源码编译,编译完成之后把它的下面的native cp(在当前机器编译)或者scp(在另一台机器编译)到hadoop-2.6.0-cdh5.7.0这个版本下面的lib下面,取代其native。这样也是有效,选择2.7.4这个版本的原因是因为官方文档中推荐的稳定版本就是这个,所以考虑到其不会出现软件兼容性的问题,当然我觉得也可以就用cdh的这个src的压缩包编译也是可以,不过本人没试,好奇的小伙伴可以自行尝试。操作步骤如下:
    [root@hadoop002 hadoop-2.7.4-src]# pwd (进去到src解压后的文件里去进行mav的编译)
    /opt/hadoop-2.7.4-src
    [root@hadoop002 hadoop-2.7.4-src]# mvn clean package -Pdist,native -DskipTests -Dtar(一开始使用这个命令一直报错)
    [root@hadoop002 hadoop-2.7.4-src]# mvn clean package -DskipTests -Pdist,native -Dtar -Dsnappy.lib=/opt/ -Dbundle.snappy  (后来通过查看博客把命令改为这样,运行成功)
    执行成功后,hadoop-2.7.4-src家目录下面的hadoop-dist/target/hadoop-2.6.5.tar.gz即为新生成的二进制安装包,hadoop-dist/target/hadoop-2.6.5 下面有一个lib/native/,把这个native scp到hadoop001这台机器上,发现hadoop001这台机器的cdh版本就有了压缩格式啦
    [root@hadoop002 hadoop-2.7.4-src]# scp -r native 192.168.2.65:/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/lib/
    之后记得要修改native的用户用户组为hadoop
    

    验证:

    [hadoop@hadoop001 hadoop-2.6.0-cdh5.7.0]$ hdfs dfs -ls / (日志已经没有了警告标示)
    [hadoop@hadoop001 hadoop-2.6.0-cdh5.7.0]$ hadoop checknative
    18/12/01 13:37:36 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
    Native library checking:
    hadoop:  true /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/lib/native/libhadoop.so
    zlib:    true /lib64/libz.so.1
    snappy:  true /usr/lib64/libsnappy.so.1
    lz4:     true revision:99
    bzip2:   true /lib64/libbz2.so.1
    openssl: true /usr/lib64/libcrypto.so
    至此发现编译当前机器的cdh版本已经支持了压缩格式,搞定~
    

    参考文档

    1. 文档1
    2. 文档2
    3. 文档3
    4. 文档4
    5. 文档5
    6. GitHub官方的hadoop源码
    7. maven的源码压缩包
    8. hadoop2.7.4版本的源码压缩包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值