hadoop源码分析 编译hadoop源码

大数据 专栏收录该内容
10 篇文章 2 订阅

基本工具安装

  • 申请github账号
    去github官网申请账号:
    https://github.com/
    比如,申请了一个这样的账号:test
  • 本地安装git工具
brew install git
  • 配置git
    • 生成使用git用户的ssh公私钥(由于我使用hadoop用户进行hadoop源码编译所以是生成hadoop用户的公钥)
    	ssh-keygen -t rsa -C "youremail" 
    
    成功后在用户主目录下会生成.ssh目录,其中包含3个文件:
    [hadoop@s0 .ssh]$ ll
    -rw-------. 1 hadoop hadoop 1197 1月  18 12:49 authorized_keys
    -rw-------. 1 hadoop hadoop 1679 1月  18 12:40 id_rsa
    -rw-------. 1 hadoop hadoop  391 1月  18 12:40 id_rsa.pub
    -rw-------. 1 hadoop hadoop 1061 1月  19 00:20 、known_hosts
    
    • 登录github账号后,访问个人账号设置栏目,具体为如下链接,把生成的公钥拷贝进来。
      https://github.com/settings/keys
      github配置
    • 配置本地git
    git config --global user.name “test”
    git config --global user.email "xxx@gmail.com"
    git init
    ssh -T git@github.com					(测试是否可以配置OK)
    

    hadoop源码下载

    • 下载hadoop-3.2.0源码
      在GitHub官网搜索hadoop
      hadoop源码
    • 进入hadoop源码目录后,将源码fork到自己的账号下。
      https://github.com/apache/hadoop
      hadoop源码fork
    • 选择hadoop-3.2.0这个branch,查看3.2.0源码。
      hadoop源码branch选择
    • 将hadoop-3.2.0源码git clone到本地。
      mkdir gitLocalRepo
      cd gitLocalRepo/
      git clone -b branch-3.2.0 https://github.com/test/hadoop.git		(test是自己在github的工程目录)
    
    完毕后会在gitLocalRepo下看到创建的hadoop源码目录,有如下文件。
    hadoop源码文件目录
    至此,hadoop-3.2.0源码准备完毕。

编译hadoop源码

(一)安装编译工具 – Mac环境

-阅读BUILDING.txt文件中,得到需要安装如下工具。

----------------------------------------------------------------------------------
Requirements:

* Unix System
* JDK 1.8
* Maven 3.3 or later
* ProtocolBuffer 2.5.0
* CMake 3.1 or newer (if compiling native code)
* Zlib devel (if compiling native code)
* Cyrus SASL devel (if compiling native code)
* One of the compilers that support thread_local storage: GCC 4.8.1 or later, Visual Studio,
  Clang (community version), Clang (version for iOS 9 and later) (if compiling native code)
* openssl devel (if compiling native hadoop-pipes and to get the best HDFS encryption performance)
* Linux FUSE (Filesystem in Userspace) version 2.6 or above (if compiling fuse_dfs)
* Jansson C XML parsing library ( if compiling libwebhdfs )
* Doxygen ( if compiling libhdfspp and generating the documents )
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
* python (for releasedocs)
* bats (for shell code testing)
* Node.js / bower / Ember-cli (for YARN UI v2 building)
----------------------------------------------------------------------------------

根据要求,安装好以下工具:

  • ProtocolBuffer 2.5+
    ProtocolBuffer是Google公司内部多语言RPC的数据标准,hadoop采ProtocolBuffer作为内部进程RPC通信的标准。
    • 安装
    brew install protobuf
    
    • 验证
    protoc --version
    
  • CMake 3.1+
    • 安装
    brew install cmake
    
    • 验证
    cmake -version
    
    • Zlib/openssl devel
      • 安装
      brew install openssl
      brew install zlib
      
    • maven
      • 从官网下载后,解压到本地路径,然后配置环境变量。
        https://maven.apache.org/download.cgi
        maven下载
      //我安装路径在~/java目录下,该目录就是MAVEN_HOME
      cd ~/java
      tar -zxvf apache-maven-3.6.0-bin.tar.gz -C ~/java/
      
      • 配置用户环境变量
        vim ~/.bash_profile,添加如下内容:
      export MAVEN_HOME=~/java/apache-maven-3.6.0
      export PATH=$PATH:$MAVEN_HOME/bin
      
      • JDK 1.8+
        jdk安装不再赘述。

(一)安装编译工具 – centos7.5 环境

  • maven 安装
    我的安装目录位于/usr/lib/目录,如果选择该目录。需要考虑权限问题。
tar -zxvf /tmp/apache-maven-3.5.4-bin.tar.gz -C /usr/lib/
chown -R hadoop:hadoop /usr/lib/apache-maven-3.5.4

完成后配置hadoop环境变量,即在/home/hadoop/.bash_profile文件中添加如下内容:

#maven config
export MAVEN_HOME=/usr/lib/apache-maven-3.5.4
export PATH=$PATH:$MAVEN_HOME/bin
  • jdk 1.8安装
    我的安装目录位于/usr/lib/目录,如果选择该目录。需要考虑权限问题,如下采用root用户执行。
tar -zxvf /tmp/jdk-8u201-linux-x64.tar.gz -C /usr/lib/
chown -R hadoop:hadoop /usr/lib/jdk1.8.0_201

完成后添加hadoop用户环境变量,即在/home/hadoop/.bash_profile文件中添加如下内容(root用户):

#java config
export PATH
export JAVA_HOME=/usr/lib/jdk
export PATH=$JAVA_HOME/bin:$PATH
  • protobuf 2.5
    安装protbuf之前需要先安装如下几个工具:
sudo yum -y install gcc gcc-c++ make libtoo autoconf automake zlib* libssl*

之后下载protobuf 2.5:
https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz

tar -xzf protobuf-2.5.0.tar.gz 
 cd protobuf-2.5.0 
 ./configure --prefix=/usr/local/protobuf
 make  & make install
  • 环境变量配置
    在/home/hadoop/.bash_profile中增加:
#protobuf
export PATH=$PATH:/usr/local/protobuf/bin
  • 验证
    . ~/.bash_profile
    执行protoc --version如果出现截图示,则protobuf 2.5安装成功
    proto验证
  • cmake
    cmake 安装
    方案1:yum安装
yum install -y cmake

如果通过yum安装版本可能低于3.1。方案2采用下载离线安装。
方案2:离线安装(需要root用户)

yum remove cmake
wget https://cmake.org/files/v3.10/cmake-3.10.2-Linux-x86_64.tar.gz
tar -zxvf cmake-3.10.2-Linux-x86_64.tar.gz -C /usr/lib
chown -R hadoop:hadoop /usr/lib/cmake-3.10.2-Linux-x86_64

配置hadoop用户环境变量,在~/.bash_profile文件中添加如下:

export CMAKE_HOME=/usr/lib/cmake-3.10.2-Linux-x86_64
export PATH=$PATH:$CMAKE_HOME/bin

验证如下:
cmake安装验证

  • 升级cmake
  • 下载
    先去cmake官网下载对应版本的cmake,我选择3.10:
    https://cmake.org/files/v3.10/cmake-3.10.0.tar.gz
wget 
  • 升级gcc
    • 升级准备
    yum groupinstall "Development Tools"
    yum install glibc-static libstdc++-static
    
    • 编译安装gcc-8.2.0
      你可以到官网下载gcc,也可以直接在这里下载:http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/ 下载好后进行编译安装
    tar -xvf gcc-8.2.0.tar.xz
    cd gcc-8.2.0
    contrib/download_prerequisites			(下载安装必须的文件,耐心等待......)
    mkdir build ;cd build
    ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
    make  && make install			(编译过程特别漫长,耐心等待)
    
    • configure如遇失败:
      gcc: error: unrecognized command line option ‘-V’,需要先安装openssl的库文件。则排查:

      • openssl:
        yum install -y openssl-devel
      • gcc版本先降级,再手动升级
      yum remove -y gcc
      mv /usr/bin/gcc /usr/bin/gcc.bk ;mv /usr/local/bin/gcc /usr/local/bin/gcc.bk
      //手动安装gcc-8.2.0(步骤如上面)
      
    • 安装clang依赖库
      先去llvm官网下载llvm依赖包:
      http://releases.llvm.org/

    wget http://llvm.org/releases/3.5.0/llvm-3.5.0.src.tar.xz
    wget http://releases.llvm.org/5.0.2/llvm-5.0.0rc2.src.tar.xz
    wget http://releases.llvm.org/5.0.2/cfe-5.0.2.src.tar.xz
    
    tar -xvf cfe-5.0.2.src.tar.xz
    tar -xf llvm-5.0.0rc2.src.tar.xz
    
    tar -xf clang-tools-extra-5.0.2.src.tar.xz
    mv llvm-5.0.0rc2.src llvm
    mv cfe-5.0.2.src llvm/tools/clang
    mv clang-tools-extra-5.0.2.src llvm/tools/extra
    cd llvm/projects
    wget http://releases.llvm.org/5.0.2/compiler-rt-5.0.2.src.tar.xz
    wget http://releases.llvm.org/5.0.2/libcxx-5.0.2.src.tar.xz
    wget http://releases.llvm.org/5.0.2/libcxxabi-5.0.2.src.tar.xz
    wget http://releases.llvm.org/5.0.2/libunwind-5.0.2.src.tar.xz
    tar -xf compiler-rt-5.0.2.src.tar.xz
    mv compiler-rt-5.0.2.src compiler-rt
    tar -xf libcxx-5.0.2.src.tar.xz
    mv libcxx-5.0.2.src libcxx
    tar -xvf libcxxabi-5.0.2.src.tar.xz
    mv libcxxabi-5.0.2.src ibcxxabi
    tar -xvf libunwind-5.0.2.src.tar.xz
    mv libunwind-5.0.2.src libunwind
    cd ../../../ && mkdir build && cd build/
    
    cmake -G "Unix Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCLANG_DEFAULT_CXX_STDLIB=libc++ -DCMAKE_BUILD_TYPE="Release" ../llvm
    
    

编译

以上准备工作做完之后,切换到源码根目录(即~/gitLocalRepo/hadoop),执行编译打包命令:

mvn package -Pdist,native,docs -DskipTests -Dtar

这个过程,时间会比较久。

参考建议:
Centos7下Hadoop3.x源码编译(Zstd问题已解决)

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:精致技术 设计师:CSDN官方博客 返回首页

打赏作者

plifemao

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值