根据网络上的教程是需要对Hadoop的源码在window环境下编译才能使用。
参考教程:http://mmicky.blog.163.com/blog/static/150290154201311136482094/
1、我没选择编译源码,而是下载hadoop-commin-2.2.zip别人编译好的文件,之后得到一些文件 (winutils.exe, hadoop.dll),把它们覆盖放入Hadoop2.2的Bin目录下。
hadoop-commin-2.2.zip 下载地址:http://download.csdn.net/detail/foart/7344477
2、安装官方提供的办法配置Hadoop2.2,最后启动是用.CMD控制台命令启动的。(当时尝试用cygwin启动总是失败,改用.CMD则顺利通过)
启动脚本在此目录下: c:\hadoop\hadoop-2.2.0\sbin
参考教程:
http://my.oschina.net/hhdys412/blog/188602
http://blog.csdn.net/jiutianhe/article/details/17688015
3、如果使用cygwin执行hadoop version后报错:
错误: 找不到或无法加载主类 org.apache.hadoop.hdfs.server.namenode.NameNode
解决办法打开Hadoop2.2里的hadoop-config.sh
找到最后一行
if [ "$HADOOP_CLASSPATH" != "" ]; then
# Prefix it if its to be preceded
if [ "$HADOOP_USER_CLASSPATH_FIRST" != "" ]; then
CLASSPATH=${HADOOP_CLASSPATH}:${CLASSPATH}
else
CLASSPATH=${CLASSPATH}:${HADOOP_CLASSPATH}
fi
fi
替换为
CLASSPATH=`cygpath -wp "$CLASSPATH"`
if [ "$HADOOP_CLASSPATH" != "" ]; then
# Prefix it if its to be preceded
if [ "$HADOOP_USER_CLASSPATH_FIRST" != "" ]; then
CLASSPATH=${HADOOP_CLASSPATH}:${CLASSPATH}
else
CLASSPATH=${CLASSPATH}:${HADOOP_CLASSPATH}
fi
fi
参考教程:
http://stackoverflow.com/questions/19363402/classpath-issue-in-hadoop-on-cygwin-while-running-hadoop-version-command