所需工具

1.Windows 7 32 Bit OS(你懂的)

2.Apache Hadoop 2.2.0-bin(hadoop-2.2.0.tar.gz)

3.Apache Hadoop 2.2.0-src(hadoop-2.2.0-src.tar.gz)

3.JDK 1.7

4.Maven 3.2.1(apache-maven-3.2.1-bin.zip)

5.Protocol Buffers 2.5.0

6.Unix command-line tool Cygwin(Setup-x86.exe)

7.Microsoft Windows SDK v7.1

Apache Hadoop 2.X推荐运行环境是64Bit机器,因为实际运行过程中要超过4GB内存嘛!32Bit适合个人开发调试学习使用。

环境配置

前言:由于Apache Hadoop 2.2.0发行版使用的动态链接库(bin\hadoop.dll、libwinutils.lib、winutils.exe)是Windows 64bit的,所以需要使用源代码重新编译成32bit的(有可能你下载回来的hadoop-2.2.0.tar.gz发行包里没有这些Windows动态库的)。如果你的系统盘是SSD的话,建议将安装在C盘根目录。

环境变量

(工具软件:3,4,5,6,7)安装过程不再详述,一路Next就行(JavaSE推荐根目录:c:\java)。重点在环境变量的配置部分,增加以下环境变量到“系统变量”中(Java路径不能有空格):

JAVA_HOME=C:\Java\jdk1.7.0_45

Platform=Win32

M2_HOME=C:\apache-maven-3.2.1

Path=;C:\cygwin\bin;C:\apache-maven-3.2.1\bin;C:\protoc-2.5.0-win32;

配置示例(别忘了设置Path哦):

解压源代码

将hadoop-2.2.0-src.tar.gz源代码解压到D盘根目录,看上去路径如下:D:\hadoop-2.2.0\

Apache Hadoop svn 代码库地址:http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0

需要手工修正源代码的几处编译错误:

第一处:

修改文件:\hadoop-common-project\hadoop-auth\pom.xml

修改内容:在大约56行的位置增加一个Xml配置节点。

<dependency>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-util</artifactId>
  <scope>test</scope>
</dependency>

修改示例:

第二处:

修改文件:hadoop-common-project\hadoop-common\src\main\native\native.sln

修改内容:用记事本打开文件。

替换内容:

GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Debug|Mixed Platforms.ActiveCfg = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Debug|Mixed Platforms.Build.0 = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Debug|Win32.ActiveCfg = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Debug|Win32.Build.0 = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Debug|x64.ActiveCfg = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Debug|x64.Build.0 = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Release|Mixed Platforms.ActiveCfg = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Release|Mixed Platforms.Build.0 = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Release|Win32.ActiveCfg = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Release|Win32.Build.0 = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Release|x64.ActiveCfg = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Release|x64.Build.0 = Release|x64
EndGlobalSection

新内容:

GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Debug|Win32.ActiveCfg = Release|Win32
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Debug|Win32.Build.0 = Release|Win32
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Debug|x64.ActiveCfg = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Debug|x64.Build.0 = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Release|Win32.ActiveCfg = Release|Win32
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Release|Win32.Build.0 = Release|Win32
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Release|x64.ActiveCfg = Release|x64
{4C0C12D2-3CB0-47F8-BCD0-55BD5732DFA7}.Release|x64.Build.0 = Release|x64
EndGlobalSection

修改示例:

第三处:

修改文件:hadoop-common-project\hadoop-common\src\main\native\native.vcxproj

修改内容:

查找替换”Release|x64“为”Release|Win32“

查找替换”<Platform>x64</Platform>“为”<Platform>Win32</Platform>“

修改示例:

第四处:

右键单击”D:\hadoop-2.2.0“文件夹,选择”管理员取得所有权“。否则编译过程中可能会发生”拒绝访问“错误(右键没有显示该菜单的,自行网上查找注册表修改方法)。

编译过程

打开“开始”--“所有程序”--“Microsoft Windows SDK v7.1”--“Windows SDK 7.1 Command Prompt”,进入VC++的命令行工具(一定要从此处进入方可顺利编译Hadoop源代码,记着是以管理员身份运行)。命令如下:

切换至源代码根目录,执行编译命令:mvn package -Pdist,native-win -DskipTests -Dtar

示例运行结果

Setting SDK environment relative to C:\Program Files\Microsoft SDKs\Windows\v7.1
\.
Targeting Windows 7 x86 Debug

C:\Windows\system32>d:

D:\>cd D:\hadoop-2.2.0

D:\hadoop-2.2.0>mvn package -Pdist,native-win -DskipTests -Dtar

................................2.2.1版本编译完成大约需要16分钟左右

................................2.4.0版本编译完成大约需要22分钟左右(觉得编译过程慢的话:自己动手配置镜像服务器)

配置运行

Hadoop编译成功后,程序集输出在: hadoop-common-project\hadoop-common\target\hadoop-common-2.2.0目录下。

1.解压缩”hadoop-2.2.0.tar.gz“至D盘如下目录:D:\hadoop-common-2.2.0

2.合并替换发行版本的64动态链接库:主要是是以下几个文件(bin\hadoop.dll、bin\hadoop.exp、bin\hadoop.lib、bin\hadoop.pdb、bin\libwinutils.lib、bin\winutils.exe、bin\winutils.pdb),从编译成功后的输出目录Copy到Apache发行版形同目录下替换即可。

3.修改配置文件

core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop-bin/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop-bin/data/datanode</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>

其他配置文件保持默认即可。

4.配置Hadoop Hdfs运行环境变量(重要)

HADOOP_HOME=D:\hadoop-common-2.2.0

Path=D:\hadoop-common-2.2.0\bin

5.格式化hdfs文件系统

以管理员身份打开命令行,并切换到:D:\hadoop-common-2.2.0\bin目录下,执行命令:

hadoop namenode -format

如果不出意外,hdfs文件系统将格式化成功,你会在D:\hadoop-bin\data看到已经生成了namenode文件夹。

6.启动Hadoop HDFS服务器

同样管理员身份命令行,切换到:D:\hadoop-common-2.2.0\sbin目录下,执行命令:

start-all.cmd

不出意外,用浏览器打开:http://localhost:8042 或者 http://localhost:50070 会有惊喜哦!记得别把本地的端口占用了。

7.上传文件到HDFS

如果你对命令行熟悉的话,可以采用命令行的方式推送的HDFS。如果你的hdfs-site.xml配置文件时Copy我以上的示例的话,那么WEBHDFS默认是开启的,什么意思?就是通过Http RestFull风格API管理文件哦!另外还要记得把dfs.permissions设置为false,要不你没有权限上传文件的哦!

推荐个HDFS文件管理工具:Red Gate Software Ltd(大名鼎鼎的Red Gate)

上传文件到HDFS

8.停止Hadoop HDFS服务器

同样管理员身份命令行,切换到:D:\hadoop-common-2.2.0\sbin目录下,执行命令:

stop-all.cmd

编后语

Windows 64 Bit是有它自己的道理的,虽然通过一些努力编译出了32Bit环境下的程序。。。

参考链接

http://www.srccodes.com/p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windows-os

你还可以用我编译好的32Bit程序先撸一把:http://yunpan.cn/Qir4aFYb96jkL  访问密码 a873

Hadoop:Windows 7 32 Bit 编译与运行的更多相关文章

  1. Windows 下使用 GNUstep 编译并运行 Objective-C 程序

    今晚上开始看<Objective-C 程序设计(第4版)>这本书(OSChina 正在做此书的书评活动,详情请看这里),到现在为止看到第 7 章,于是想动手试试写两简单的程序编译跑跑看. ...

  2. hadoop——在命令行下编译并运行map-reduce程序 2

     hadoop map-reduce程序的编译需要依赖hadoop的jar包,我尝试javac编译map-reduce时指定-classpath的包路径,但无奈hadoop的jar分布太散乱,根据自己 ...

  3. Windows 10 x64 下编译 Hadoop 源码

    Windows 10 x64 下编译 Hadoop 源码 环境准备 Hadoop并没有提供官方的 Windows 10 下的安装包,所以需要自己手动来编译,官方文档中 BUILDING.txt 文件中 ...

  4. win7 64位平台编译的程序在XP 32位平台无法运行的解决方法

    win7 64位平台编译的程序在XP 32位平台无法运行的解决方法 vs2010的开发环境,制作了一个DLL库.但DLL在XP 32位平台一直无法使用.解决方法如下: 右键项目,属性->配置属性 ...

  5. [JAVA] 一个可以编辑、编译、运行Java简单文件的记事本java实现

    本来是Java课做一个仿windows记事本的实验,后来突然脑子一热,结果就给它加了一个编译运行Java文件的功能. 本工程总共大约3000行代码,基本上把所学的java界面.文件.控件的功能都包含在 ...

  6. 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)

    转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...

  7. windows 平台使用 VS2017 编译openssl源码

    windows 平台使用 VS2017 编译openssl源码 1)依赖安装 安装 perl 脚本解释器 下载 http://libevent.net/download 安装 nasm 汇编器 C:\ ...

  8. windows系统,boost编译安装

    windows系统,boost编译安装vs2017 1.下载https://www.boost.org/users/download/下载windows对应的zip包解压 2.配置vc环境变量我的是: ...

  9. windows 平台使用 VS2017 编译 libevent 源码

    一 依赖库编译 先要将其依赖的库编译好,其中openssl需要编译到libevent中,编译成libevent_openssl.lib库,zlib在新版本中只有示例用到. 1)windows 平台使用 ...

随机推荐

  1. php 乱码解决

    1)首先确定你的终端编码,如果你不知道如何确定,分别执行这两段代码,看看哪个能输出中文. PHP code   ? 1 echo pack("H12","E4B8ADE6 ...

  2. Allegro16.3约束设置 (转载)

    原文地址:http://blog.chinaunix.net/uid-21198646-id-3212383.html 差分对的约束设置 第一步,差分对的设置 差分对的设置有很多方法,下面介绍两种最常 ...

  3. web应用中对配置文件的包装

    <bean id="placeholderConfig" class="com.shz.utils.AdvancedPlaceholderConfigurer&qu ...

  4. 在VMware上安装Ubuntu14.04 , Docker

    最近在公司做了一个关于 How to use Docker to deploy a java-based website 的KT,总结如下: 准备材料(Linux+64bit) 1. Tomcat安装 ...

  5. 根据关键词kill进程

    #!/bin/sh pid=`ps -ef | grep /usr/bin/memcached | grep -v grep | awk '{print $2}'` kill $pid

  6. java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView

    最近在学习drawerLayout时,遇到这个bug.如下示: java.lang.ClassCastException: android.widget.RelativeLayout cannot b ...

  7. centos6.5 安装cmake 3.3.2

    os:centos6.5 cmake版本:3.3.2 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 下载cmake 使用wget工具 ...

  8. css控制页面打印(分页、屏蔽不需要打印的对象)

    样式: <style   media="print">     .Noprint   {   DISPLAY:   none;}     .PageNext   {   ...

  9. oracle中的数据对象

    oracle中的数据对象有表.视图.索引.序列等 表的相关操作 1.创建表 方式一: 方式二:create table person( create table person1 id number(1 ...

  10. linux桌面环境gnome,kde,xfce,lxde 使用比较(转)

    Linus Torvalds大神前几日在 Google+上表示,GNOME 3"无可容忍的凌乱",改投Xfce桌面环境.下面就GNOME, KDE, XFCE和 LXDE略作比较. ...