大家好,我是砖家小胖,今天我们在Win10系统上编译一下Hadoop源码,顺便搭建Hadoop客户端环境,为接下来的开发做准备。
为什么要编译Hadoop源码?
Hadoop主要是基于Java语言所编写的,但有也部分需求和功能并不适合Java代码开发,所以这部分内容就基于C++代码去开发,于是就引出了Native Libraries概念,我们知道Java语言去调用C++代码是基于JNI的方式去调用的,Java去调用本地的C++代码打包好的本地库(NativeLibraries)文件去运行。但由于Linux系统的本地库文件为.so格式,而Windows的本地库文件格式为dll,所以为了适应不同操作系统的架构,我们需要进行重新编译下Hadoop的源代码。
接下来,我们来编译Hadoop源码
1.下载Hadoop3.1.2源码

2.从BUILDING.txt文件中,我们可以得知编译源码,需要以下东西
* Windows System
* JDK 1.8
* Maven 3.0 or later
* ProtocolBuffer 2.5.0
* CMake 3.1 or newer
* Visual Studio 2010 Professional or Higher
* Windows SDK 8.1 (if building CPU rate control for the container executor)
* zlib headers (if building native code bindings for zlib)
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
* Unix command-line tools from GnuWin32: sh, mkdir, rm, cp, tar, gzip. These
tools must be present on your PATH.
* Python ( for generation of docs using 'mvn site')

3.安装并配置JDK1.8
配置环境变量JAVA_HOME

在Path里添加%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin

4.安装并配置Maven
编辑apache-maven-3.6.3/conf/settings.xml文件


配置本地仓库地址
<localRepository>D:\development\repo</localRepository>
配置远程仓库网络地址(由于Maven速度比较慢,所以我们改为阿里巴巴镜像)
<mirrors><mirror><id>central</id><mirrorOf>central</mirrorOf><name>aliyunmaven</name><url>https://maven.aliyun.com/repository/central</url></mirror><mirror><id>apache.snapshots.https</id><mirrorOf>apache.snapshots.https</mirrorOf><name>aliyunmaven</name><url>https://maven.aliyun.com/repository/apache-snapshots</url></mirror></mirrors>
配置环境变量MAVEN_HOME

在Path里添加MAVEN_HOME\bin

5.下载并配置ProtocolBuffer 2.5.0

在Path里加入ProtocolBuffer的目录

6.安装并配置CMake

配置环境变量CMAKE_HOME

在Path里添加%CMAKE_HOME%\bin

7.安装VisualStudio2015


8.安装Windows SDK 8.1

9.下载并配置Zlib

在Path中添加Zlib的目录

10.安装并配置Git(Hadoop编译时需要UNIX命令)

配置环境变量GIT_HOME,这里注意是USR下的Bin目录
D:\development\Git\Git\usr\bin

在Path中添加%GIT_HOME%\bin

我们已经做好了准备工作,大体需要的工具就是这些

我们继续
11.编译Hadoop3.1.2源码
以管理员权限打开VS 2015 的开发人员命令终端

进入到源代码目录D:\development\hadoop-3.1.2-src\hadoop-3.1.2-src
设置64位系统 set Platform=x64

输入Maven命令编译
mvn package -Pdist,native-win -DskipTests -Dtar



由于第一次编译过程中要下载大量的第三方支持jar包,整个编译过程大概需要30分钟左右及可编译完成。
当所有模块全部为Success时,则代表编译成功


编译成功的项目在D:\development\hadoop-3.1.2-src\hadoop-3.1.2-src\hadoop-dist\target目录下面


接下来我们搭建Hadoop客户端
1.我们将之前集群的Hadoop的所有配置全部搬到Win10编译后的这个Hadoop上

2.配置环境变量HADOOP_HOME

在Path添加%HADOOP_HOME%\bin

3.测试Hadoop环境
输入winutils,能正常找到winutils命令

win10编译后的hadoop bin目录

测试工程正常读出HDFS文件数据,不在爆异常。






