使用git管理属于自己的hadoop源代码
基本工具安装
- 申请github账号
去github官网申请账号:
https://github.com/
比如,申请了一个这样的账号:test - 本地安装git工具
brew install git
- 配置git
- 生成使用git用户的ssh公私钥(由于我使用hadoop用户进行hadoop源码编译所以是生成hadoop用户的公钥)
成功后在用户主目录下会生成.ssh目录,其中包含3个文件:ssh-keygen -t rsa -C "youremail"
[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
- 配置本地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源码目录后,将源码fork到自己的账号下。
https://github.com/apache/hadoop
- 选择hadoop-3.2.0这个branch,查看3.2.0源码。
- 将hadoop-3.2.0源码git clone到本地。
完毕后会在gitLocalRepo下看到创建的hadoop源码目录,有如下文件。mkdir gitLocalRepo cd gitLocalRepo/ git clone -b branch-3.2.0 https://github.com/test/hadoop.git (test是自己在github的工程目录)
至此,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
//我安装路径在~/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安装成功
- 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,我选择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(步骤如上面)
- openssl:
-
安装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
这个过程,时间会比较久。