编译了hadoop,可以方便的查看某个函数的实现,可以根据自己的需要改动hadoop的某些实现机制(hadoop开源的好处)。
环境要求
进入hadoop-x.x.x-src(这里编译的是2.7.3版本)安装根目录,查看BUILDING.txt文件,含有hadoop源码的编译环境要求。
Requirements:
* Unix System
* JDK 1.7+
* Maven 3.0 or later
* Findbugs 1.3.9 (if running findbugs)
* ProtocolBuffer 2.5.0
* CMake 2.6 or newer (if compiling native code), must be 3.0 or newer on Mac
* Zlib devel (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 )
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
第一步:安装openssl-devel
[username@master hadoop-2.7.3]$ yum -y install svn
已加载插件:fastestmirror, langpacks
您需要 root 权限执行此命令。
解决方法:为普通用户添加root权限 切换到root用户:
[username@master ~]$ su
密码:
进入/etc/sudoers文件:
[root@master username]
显示行号:[Shift]+:进入命令模式,输入set nu回车[Enter]。 大概91行:增加如下一行;保存:wq!,强制修改。
username ALL=(ALL) ALL
后面的普通用户使用yum安装需要使用sudo yum install xxx
再次运行yum -y install svn ,安装成功。接着执行下面所有命令:
yum -y install autoconf automake libtool cmake zlib-devel lzo-devel
yum -y install ncurses-devel
yum -y install openssl-devel
yum -y install zlib1g-dev libssl-dev
第二步:安装gcc、gcc-c++
检查是否安装过gcc[username@master ~]$ gcc -v
如果最后一行出现下面的版本信息,说明gcc已经安装
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
否则使用下面的yum命令进行安装
yum install -y gcc
安装gcc-c++
[username@master ~]$ sudo yum -y install gcc-c++
第四步:安装配置Maven
4.1 安装配置
解压apache-maven-3.6.3-bin.tar.gz安装包到/usr/local指定目录下
[root@master username]
配置Maven环境变量,进入/etc/profile,在文件最后一行添加:
export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
保存退出,并输入source /etc/profile命令,使环境变量生效。 最后输入mvn -v,检查是否安装成功。
[root@master apache-maven-3.6.3]
\Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/apache-maven-3.6.3
Java version: 1.8.0_261, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_261/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
出现上面版本信息日志,安装成功。下面进行本地仓库的配置与镜像地址。
4.2 本地仓库与镜像配置
进入apache-maven-3.6.3安装根目录下的conf文件夹,编辑配置文件:
[root@master conf]
在56行,修改本地仓库为:/home/username/mavenRepo,该文件夹位置需要手动创建。
<!-- 在这里我们可以配置,下载后的jar存放的文件夹和路径,请自行更改存放路径 -->
<localRepository>/home/username/mavenRepo</localRepository>
大概在160行,标签内部,输入如下内容,修改镜像为阿里地址。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
第五步:安装Ant
解压缩apache-ant-1.9.4-bin.tar.gz文件到指定文件夹下:
[root@master opt]
配置环境变量,在文件最后一行添加:(记得使环境变量生效)
export ANT_HOME=/opt/apache-ant-1.9.4
export PATH=$ANT_HOME/bin:$PATH
最后检查是否安装成功:
[root@master opt]
Apache Ant(TM) version 1.9.4 compiled on April 29 2014
第六步:安装FindBugs
解压缩findbugs-3.0.1.tar文件到指定文件夹下:(注意此处是-xvf)
[root@master username]
配置环境变量,在文件最后一行添加:(记得使环境变量生效)
export FINDBUGS_HOME=/opt/findbugs-3.0.1
export PATH=$PATH:$FINDBUGS_HOME/bin
最后检查是否安装成功:
[root@master username]
3.0.1
第七步:安装make、Cmake
检查是否安装了make工具
[root@master username]
GNU Make 3.82
Built for x86_64-redhat-linux-gnu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
如果没有安装make,执行如下命令:
yum install -y make
检查是否安装了cmake
[root@master username]
cmake version 2.8.12.2
第九步:安装Protobuf
解压缩protobuf-2.5.0.tar.gz文件到指定文件夹下:
[root@master username]
进入安装目录文件夹
[root@master username]
执行如下命令:(自己创建文件夹)表示安装到这个目录
[root@master protobuf-2.5.0]
依次执行下面的命令:
make
make check
make install
配置环境变量,在文件最后一行添加:(记得使环境变量生效)
export PROTOBUF_HOME=/opt/protobufHome
export PATH=$PATH:$PROTOBUF_HOME/bin
最后检查是否安装成功:
[root@master protobuf-2.5.0]
libprotoc 2.5.0
第十步:安装Snappy
解压缩findbugs-3.0.1.tar文件到指定文件夹下:(注意此处是-xvf)
[root@master username]
进入安装根目录
[root@master snappy-1.1.3]
编译安装
[root@master snappy-1.1.3]
make
make install
查看snappy lib库
[root@master snappy-1.1.3]
-rw-r--r--. 1 root root 510K 12月 5 20:21 libsnappy.a
-rwxr-xr-x. 1 root root 955 12月 5 20:21 libsnappy.la
lrwxrwxrwx. 1 root root 18 12月 5 20:21 libsnappy.so -> libsnappy.so.1.3.0
lrwxrwxrwx. 1 root root 18 12月 5 20:21 libsnappy.so.1 -> libsnappy.so.1.3.0
-rwxr-xr-x. 1 root root 253K 12月 5 20:21 libsnappy.so.1.3.0
开始编译Hadoop源码
进入工作目录到hadoop-2.7.3-src源码根目录下;
[username@master ~]$ cd ideaProjects/hadoop-2.7.3-src/
执行如下命令,开始编译;
[username@master hadoop-2.7.3-src]$ mvn package -Pdist,native,docs -DskipTests -Dtar
错误1:
[ERROR] Failed to execute goal org.codehaus.mojo:findbugs-maven-plugin:3.0.0:findbugs (default) on project hadoop-project-dist: Unable to parse configuration of mojo org.codehaus.mojo:findbugs-maven-plugin:3.0.0:findbugs for parameter pluginArtifacts: Cannot assign configuration entry ‘pluginArtifacts’ with value ‘${plugin.artifacts}’ of type java.util.Collections.UnmodifiableRandomAccessList to property of type java.util.ArrayList -> [Help 1]
解决方法:
执行该条命令编译源码:
[username@master hadoop-2.7.3-src]mvn package -Pdist,native -DskipTests -Dtar -Dsnappy.lib=/usr/local/lib -Dbundle.snappy -Drequire.openssl
错误2:
main: [mkdir] Created dir: /home/username/ideaProjects/hadoop-2.7.3-src/hadoop-common-project/hadoop-kms/downloads [get] Getting: http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.44/bin/apache-tomcat-6.0.44.tar.gz [get] To: /home/username/ideaProjects/hadoop-2.7.3-src/hadoop-common-project/hadoop-kms/downloads/apache-tomcat-6.0.44.tar.gz …
出现这个错误的原因是连接不上服务器下载tomcat,它要求的tomcat版本是6.0.44。
解决方法:
我们把下载好的apache-tomcat-6.0.44.tar.gz放在hadoop-2.7.3-src/hadoop-common-project/hadoop-kms/downloads下,因为build-main.xml文件说下载后放在这里,我们提前放在这里,它就不会再去下载了。 重新编译前,先清理一下将以前生成的删除;
[username@master hadoop-2.7.3-src]$ mvn clean
再次编译;
[username@master hadoop-2.7.3-src]mvn package -Pdist,native -DskipTests -Dtar -Dsnappy.lib=/usr/local/lib -Dbundle.snappy -Drequire.openssl
又发现错误,提示hadoop-2.7.3-src/hadoop-hdfs-project/hadoop-hdfs-httpfs/downloads下也需要一份,然后就OK了。 再次重新编译,等待编译······
编译成功了的日志信息如下,编译时间与电脑性能有关。 编译成功后的hadoop-2.7.3.tar.gz在hadoop-2.7.3-src/hadoop-dist/target目录下,如下所示:
[username@master bin]$ cd /home/username/ideaProjects/hadoop-2.7.3-src/hadoop-dist/target
[username@master target]$ ll
总用量 581476
drwxrwxr-x. 2 username username 28 12月 5 22:21 antrun
drwxrwxr-x. 3 username username 22 12月 5 22:21 classes
-rw-rw-r--. 1 username username 1883 12月 5 22:21 dist-layout-stitching.sh
-rw-rw-r--. 1 username username 656 12月 5 22:21 dist-tar-stitching.sh
drwxrwxr-x. 9 username username 149 12月 5 22:21 hadoop-2.7.3
-rw-rw-r--. 1 username username 197964672 12月 5 22:21 hadoop-2.7.3.tar.gz
-rw-rw-r--. 1 username username 26293 12月 5 22:21 hadoop-dist-2.7.3.jar
-rw-rw-r--. 1 username username 397374833 12月 5 22:21 hadoop-dist-2.7.3-javadoc.jar
-rw-rw-r--. 1 username username 23823 12月 5 22:21 hadoop-dist-2.7.3-sources.jar
-rw-rw-r--. 1 username username 23823 12月 5 22:21 hadoop-dist-2.7.3-test-sources.jar
drwxrwxr-x. 2 username username 51 12月 5 22:21 javadoc-bundle-options
drwxrwxr-x. 2 username username 28 12月 5 22:21 maven-archiver
drwxrwxr-x. 3 username username 22 12月 5 22:21 maven-shared-archive-resources
drwxrwxr-x. 3 username username 22 12月 5 22:21 test-classes
drwxrwxr-x. 2 username username 6 12月 5 22:21 test-dir
安装IDEA
JDK已经安装成功,然后去官网下载idea: https://www.jetbrains.com/idea/download/#section=linux 解压到指定安装目录
[username@master ~]$ tar -zxvf ideaIC-2020.2.3.tar.gz -C software/
进入到idea-IC-202.7660.26根目录下的bin文件夹
[username@master software]$ cd idea-IC-202.7660.26/bin/
执行./idea.sh 命令 错误:
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
Startup Error: Unable to detect graphics environment
解决方法: 不要在外面通过远程的方式执行此启动命令,要在linux图形界面中打开终端来执行此命令。
创建桌面快捷方式 在桌面上重新右击打开终端,命令行键入:vim idea.desktop ,进入之后按i进入插入模式,在打开的文件中编辑以下内容,保存退出。
[Desktop Entry]
Version=2020.2.7
Type=Application
Name=IntelliJ IDEA
Comment=Sophisticated text editor for code, markup and prose
Exec=/home/username/software/idea-IC-202.7660.26/bin/idea.sh
Terminal=false
Icon=/home/username/software/idea-IC-202.7660.26/bin/idea.png
Categories=Development;
|