前言
在网上找了一大圈,把号称在windows操作系统下成功安装Hadoop的文章都看了,也照着做了一下,但是没有成功。
最后还是按照wiki.apache.org的英文说明,终于试验成功。而且步骤十分简单,确实不用CYGWIN。
首先还是配置环境:
JKD 1.7
按照https://wiki.apache.org/hadoop/HadoopJavaVersions的说明,
选择1.7.0.21版本,下载链接如下。
http://www.oracle.com/technetwork/java/archive-139210.html
然后按照wiki.apache.org的说明,首先用mvn Build Hadoop source,生成 tar.gz文件。其实网上有编译好的Binary版本,方便其见就直接下载了个2.6.5版的。然后解压到C:\deploy文件夹。
在说明的第3节,配置了一个Single Node。
首先做一些配置,以下文件都在c:\deploy\etc\hadoop中。
1 hadoop-env.cmd文件把以下的行添加进去:
set HADOOP_PREFIX=c:\deploy
set HADOOP_CONF_DIR=%HADOOP_PREFIX%\etc\hadoop
set YARN_CONF_DIR=%HADOOP_CONF_DIR%
set PATH=%PATH%;%HADOOP_PREFIX%\bin
2 core-site.xml文件
原文是hdfs://0.0.0.0:19000, 我感觉应该是hdfs://0.0.0.0:9000
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://0.0.0.0:9000</value>
</property>
</configuration>
3 hdfs-site.xml 文件
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
4 slaves 文件,确保有以下内容。
localhost
默认的配置会把 metadata and data files放在tmp路径下,这里就是以C:\tmp了。
5 Yarn配置的例子。在mapred-site.xml中添加以下内容,记得把%USERNAME%替换成自己的Windows用户名。
<configuration>
<property>
<name>mapreduce.job.user.name</name>
<value>%USERNAME%</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.apps.stagingDir</name>
<value>/user/%USERNAME%/staging</value>
</property>
<property>
<name>mapreduce.jobtracker.address</name>
<value>local</value>
</property>
</configuration>
6 最后配置yarn-site.xml:
<configuration>
<property>
<name>yarn.server.resourcemanager.address</name>
<value>0.0.0.0:8032</value>
</property>
<property>
<name>yarn.server.resourcemanager.application.expiry.interval</name>
<value>60000</value>
</property>
<property>
<name>yarn.server.nodemanager.address</name>
<value>0.0.0.0:45454</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.server.nodemanager.remote-app-log-dir</name>
<value>/app-logs</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/dep/logs/userlogs</value>
</property>
<property>
<name>yarn.server.mapreduce-appmanager.attempt-listener.bindAddress</name>
<value>0.0.0.0</value>
</property>
<property>
<name>yarn.server.mapreduce-appmanager.client-service.bindAddress</name>
<value>0.0.0.0</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>-1</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>%HADOOP_CONF_DIR%,%HADOOP_COMMON_HOME%/share/hadoop/common/*,%HADOOP_COMMON_HOME%/share/hadoop/common/lib/*,%HADOOP_HDFS_HOME%/share/hadoop/hdfs/*,%HADOOP_HDFS_HOME%/share/hadoop/hdfs/lib/*,%HADOOP_MAPRED_HOME%/share/hadoop/mapreduce/*,%HADOOP_MAPRED_HOME%/share/hadoop/mapreduce/lib/*,%HADOOP_YARN_HOME%/share/hadoop/yarn/*,%HADOOP_YARN_HOME%/share/hadoop/yarn/lib/*</value>
</property>
</configuration>
配置结束,就是验证的时刻了。
打开命令提示行,切换到C:\deploy路径,输入:
etc\hadoop\hadoop-env.cmd
初始化一些环境变量。
然后格式化文件系统:
%HADOOP_PREFIX%\bin\hdfs namenode -format
输出的内定中最主要的是,看到这些就是成功了:
14/01/18 08:36:23 INFO namenode.FSImage: Saving image file \tmp\hadoop-username\dfs\name\current\fsimage.ckpt_0000000000000000000 using no compression
14/01/18 08:36:23 INFO namenode.FSImage: Image file \tmp\hadoop-username\dfs\name\current\fsimage.ckpt_0000000000000000000 of size 200 bytes saved in 0 seconds.
下一步就可以启动HDFS了:
sbin\start-dfs.cmd
输入命令回车后,会弹出两个命令行界面:
下一步是启动Yarn Daemons:
%HADOOP_PREFIX%\sbin\start-yarn.cmd
至此,单个节点集群搭建终于成功了!