Hadoop源码编译+IDEA安装

编译了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] vim /etc/sudoers

显示行号:[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] tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /usr/local

配置Maven环境变量,进入/etc/profile,在文件最后一行添加:

#maven
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] mvn -v
\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] vim settings.xml

在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] tar -zxvf apache-ant-1.9.4-bin.tar.gz -C /opt

配置环境变量,在文件最后一行添加:(记得使环境变量生效)

#ant
export ANT_HOME=/opt/apache-ant-1.9.4
export PATH=$ANT_HOME/bin:$PATH

最后检查是否安装成功:

[root@master opt] ant -version
Apache Ant(TM) version 1.9.4 compiled on April 29 2014

第六步:安装FindBugs

解压缩findbugs-3.0.1.tar文件到指定文件夹下:(注意此处是-xvf)

[root@master username] tar -xvf findbugs-3.0.1.tar -C /opt

配置环境变量,在文件最后一行添加:(记得使环境变量生效)

#findbugs
export FINDBUGS_HOME=/opt/findbugs-3.0.1
export PATH=$PATH:$FINDBUGS_HOME/bin

最后检查是否安装成功:

[root@master username] findbugs -version
3.0.1

第七步:安装make、Cmake

检查是否安装了make工具

[root@master username] make -version
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
cmake version 2.8.12.2

第九步:安装Protobuf

解压缩protobuf-2.5.0.tar.gz文件到指定文件夹下:

[root@master username] tar -zxvf protobuf-2.5.0.tar.gz -C /opt

进入安装目录文件夹

[root@master username] cd /opt/protobuf-2.5.0/

执行如下命令:(自己创建文件夹)表示安装到这个目录

[root@master protobuf-2.5.0] ./configure --prefix=/opt/protobufHome

依次执行下面的命令:

make 
make check 
make install

配置环境变量,在文件最后一行添加:(记得使环境变量生效)

#protobuf
export PROTOBUF_HOME=/opt/protobufHome
export PATH=$PATH:$PROTOBUF_HOME/bin

最后检查是否安装成功:

[root@master protobuf-2.5.0] protoc --version
libprotoc 2.5.0

第十步:安装Snappy

解压缩findbugs-3.0.1.tar文件到指定文件夹下:(注意此处是-xvf)

[root@master username] tar -zxvf snappy-1.1.3.tar.gz -C /opt

进入安装根目录

[root@master snappy-1.1.3] cd snappy-1.1.3/

编译安装

[root@master snappy-1.1.3] ./configure
make 
make install

查看snappy lib库

[root@master snappy-1.1.3] ls -lh /usr/local/lib |grep snapp
-rw-r--r--. 1 root root 510K 125 20:21 libsnappy.a
-rwxr-xr-x. 1 root root  955 125 20:21 libsnappy.la
lrwxrwxrwx. 1 root root   18 125 20:21 libsnappy.so -> libsnappy.so.1.3.0
lrwxrwxrwx. 1 root root   18 125 20:21 libsnappy.so.1 -> libsnappy.so.1.3.0
-rwxr-xr-x. 1 root root 253K 125 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 125 22:21 antrun
drwxrwxr-x. 3 username username        22 125 22:21 classes
-rw-rw-r--. 1 username username      1883 125 22:21 dist-layout-stitching.sh
-rw-rw-r--. 1 username username       656 125 22:21 dist-tar-stitching.sh
drwxrwxr-x. 9 username username       149 125 22:21 hadoop-2.7.3
-rw-rw-r--. 1 username username 197964672 125 22:21 hadoop-2.7.3.tar.gz
-rw-rw-r--. 1 username username     26293 125 22:21 hadoop-dist-2.7.3.jar
-rw-rw-r--. 1 username username 397374833 125 22:21 hadoop-dist-2.7.3-javadoc.jar
-rw-rw-r--. 1 username username     23823 125 22:21 hadoop-dist-2.7.3-sources.jar
-rw-rw-r--. 1 username username     23823 125 22:21 hadoop-dist-2.7.3-test-sources.jar
drwxrwxr-x. 2 username username        51 125 22:21 javadoc-bundle-options
drwxrwxr-x. 2 username username        28 125 22:21 maven-archiver
drwxrwxr-x. 3 username username        22 125 22:21 maven-shared-archive-resources
drwxrwxr-x. 3 username username        22 125 22:21 test-classes
drwxrwxr-x. 2 username username         6 125 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;
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值