本文主要参考这篇文档
Build, Install,Configure and Run Apache Hadoop 2.2.0 in Microsoft WindowsOS
美中不足的是没有给出遇到的问题的解决方案,我就班门弄斧,狗尾续貂。
以下是我的编译过程,我所遇到的坑。因为没有截图,所以我尽量详细。
软件环境:
- Hadoop 源码
- Cygwin
- Visual studio 2010(或者windows SDK 7)
- Cmake
- Protobuf 2.5
- JDK 1.7(不要使用JDK1.8 会报错)
- maven
ps.
- Cmake请单独安装,不要使用cygwin中的。否则会报CMake Error: Could not create namedgenerator Visual Studio 10
- Protobuf 请使用2.5,有windows的版本,解压即可。其他版本会报错!
- 保持.net版本与编译环境一致,否则会出现一个LNK1123错误(下文给出解决方案)
安装编译过程:
- 首先JDK、Maven
-
下载protobuf 2.5 解压
Github的,比较难下,分享个链接 http://yunpan.cn/cHfL9be93HTke (提取码:ca79)
- 安装cmake 下载地址
- 安装cygwin 下载地址:x64
x86 - 下载hadoop源码,解压
Ps.
-
Cygwin下载安装好就行,不需要额外安装其他软件包。Cygwin尽量选择国内地址163的比较快,直接点就可以了。
阿里云的需要添加http://mirrors.aliyun.com/cygwin/速度也可以,教育网可以选择中科大的ustc
-
Maven 的仓库镜像是可以配置的,否则速度会很慢!我是直接下载的oschina的文件。
-
配置环境变量,以上提到的所有软件包(除了hadoop源码),都需要配置到path中
Ps.
- 如果你的软件安装在Program Files下,请用PROGRA~1代替对应部分;Program Files(x86)用PROGRA~2代替;
-
配置平台
-
打开vs2010 编译命令行 (不是cmd),切换到hadoop源码目录:
-
输入命令:
mvnpackage -Pdist,native-win -DskipTests–Dtar
-
遇到问题及解决方案:
-
[ERROR] Failed to execute goalorg.apache.maven.plugins:maven-javadoc-plugin:2.8.1:jar
JDK版本请换1.7
-
LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
cvtres.exe版本不一致
网上有好多解决办法,我安装了vs2010 sp1补丁,然后替换了文件,搞定。
(不确定是否一定需要安装sp1补丁,有兴趣的可以先替换试试)
-
buildbot and cmake cannot create vs2010 generator
检查是否安装了cmake(我不知道vs是否自带cmake,我是安装之后解决的)
如果安装了,请确保cmake在环境变量path中配置在cygwin前面(cygwin没有装make的可以忽略)
-
这就是我遇到的问题,也查了好久才解决。然后就一马平川了!生成的文件在{$源文件目录}\hadoop-dist\target\hadoop-2.2.0.tar.gz
以下是hadoop启动过程:
- 解压hadoop-2.2.0.tar.gz到任意路径(c:\hadoop_2.6.0),配置环境变量HADOOP_HOME
- 修改配置文件
- {$HADOOP_HOME}\etc\hadoop\core-site.xml
fs.defaultFS
hdfs://localhost:9000
- {$HADOOP_HOME}\etc\hadoop\hdfs-site.xml
dfs.replication
1
dfs.namenode.name.dir
file:/hadoop/data/dfs/namenode
dfs.datanode.data.dir
file:/hadoop/data/dfs/datanode
-
{$HADOOP_HOME}\etc\hadoop\yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.application.classpath
%HADOOP_HOME%\etc\hadoop,
%HADOOP_HOME%\share\hadoop\common\*,
%HADOOP_HOME%\share\hadoop\common\lib\*,
%HADOOP_HOME%\share\hadoop\mapreduce\*,
%HADOOP_HOME%\share\hadoop\mapreduce\lib\*,
%HADOOP_HOME%\share\hadoop\hdfs\*,
%HADOOP_HOME%\share\hadoop\hdfs\lib\*,
%HADOOP_HOME%\share\hadoop\yarn\*,
%HADOOP_HOME%\share\hadoop\yarn\lib\*
-
{$HADOOP_HOME}\etc\hadoop\mapred-site.xml
mapreduce.framework.name
yarn
-
Format namenode
c:\hadoop_2.6.0\bin>hdfsnamenode -format
-
Start HDFS (Namenode andDatanode)
c:\hadoop_2.6.0\sbin>start-dfs
会自动启namenode 和datanode
-
Start MapReduce aka YARN (ResourceManager and Node Manager)
c:\hadoop_2.6.0\sbin>start-yarn
-
校验安装是否成功
-
停止
c:\hadoop_2.6.0\sbin>stop-dfs
c:\hadoop_2.6.0\sbin>stop-yarn
截图
没耐心看完的我也没办法了!生成的hadoop包链接:
360云盘:http://yunpan.cn/cHfLd6U4gVDUa (提取码:10da)
微盘:http://vdisk.weibo.com/s/zhvOw_wNHwFh5