将以下文本内容存放入HADOOP_HOME\bin 目录下 , 命名为hadoop.bat,将set HADOOP_HOME=C:\work\hadoop 修改为HADOOP存放的目录,设置一下JAVA_HOME,然后命令行进入 HADOOP_HOME\bin 目录下 ,运行 hadoop 就可以看到效果了。
需要注意的是 Hadoop 运行datanode 的时候,它使用了 Runtime 执行操作系统命令 df -k 来获得存储空间信息,而windows 下是不支持这个命令的,所以需要修改一下org.apache.hadoop.fs.DF.java 的 141 行左右如下:
private String[] getExecString() {
return new String[] {"df","-k", dirPath};
}
把这个命令改掉后编译打包就OK了
@echo off
set JAVA_HEAP_MAX="-Xmx1000m"
set JAVA=$JAVA_HOME/bin/java
if not "%1"=="" goto INIT else goto echoMSG
:echoMSG
echo Title:欢迎使用北京线点科技 Hadoop 运行脚本
echo Author:jaddy0302 mail:jaddy0302@126.com QQ:5622928
echo Site:http://www.xd-tech.com.cn 线点科技 专业垂直搜索引擎产品
echo Usage: hadoop [--config confdir] COMMAND
echo where COMMAND is one of:
echo namenode -format format the DFS filesystem
echo secondarynamenode run the DFS secondary namenode
echo namenode run the DFS namenode
echo datanode run a DFS datanode
echo dfsadmin run a DFS admin client
echo fsck run a DFS filesystem checking utility
echo fs run a generic filesystem user client
echo jobtracker run the MapReduce job Tracker node
echo pipes run a Pipes job
echo tasktracker run a MapReduce task Tracker node
echo job manipulate MapReduce jobs
echo version print the version
echo jar jar run a jar file
echo distcp srcurl desturl copy file or directories recursively
echo or
echo CLASSNAME run the class named CLASSNAME
echo Most commands print help when invoked w/o parameters.
goto end;
:INIT
set HADOOP_HOME=C:\work\hadoop
if "%HADOOP_HOME%"=="" set HADOOP_HOME=..
set CLASSPATH=%HADOOP_HOME%;%HADOOP_HOME%\conf;%JAVA_HOME%/lib/tools.jar;
set HADOOP_LOG_DIR=%HADOOP_HOME%/logs
set HADOOP_LOGFILE=hadoop.log
@echo @echo off>setclasspath.bat
for %%i in (%HADOOP_HOME%\hadoop-*.jar) do @echo set CLASSPATH=%%CLASSPATH%%%%i>>setclasspath.bat;
for %%i in (%HADOOP_HOME%\lib\*.jar) do @echo set CLASSPATH=%%CLASSPATH%%%%i>>setclasspath.bat;
for %%i in (%HADOOP_HOME%\lib\jetty-ext\*.jar) do @echo set CLASSPATH=%%CLASSPATH%%%%i>>setclasspath.bat;
goto EXEC
:EXEC
call setclasspath.bat
if "%1" == "namenode" set CLASS=org.apache.hadoop.dfs.NameNode
if "%1" == "secondarynamenode" set CLASS=org.apache.hadoop.dfs.SecondaryNameNode
if "%1" == "datanode" set CLASS=org.apache.hadoop.dfs.DataNode
if "%1" == "fs" set CLASS=org.apache.hadoop.fs.FsShell
if "%1" == "dfs" set CLASS=org.apache.hadoop.fs.FsShell
if "%1" == "dfsadmin" set CLASS=org.apache.hadoop.dfs.DFSAdmin
if "%1" == "fsck" set CLASS=org.apache.hadoop.dfs.DFSck
if "%1" == "jobtracker" set CLASS=org.apache.hadoop.mapred.JobTracker
if "%1" == "tasktracker" set CLASS=org.apache.hadoop.mapred.TaskTracker
if "%1" == "job" set CLASS=org.apache.hadoop.mapred.JobClient
if "%1" == "pipes" set CLASS=org.apache.hadoop.mapred.pipes.Submitter
if "%1" == "version" set CLASS=org.apache.hadoop.util.VersionInfo
if "%1" == "jar" set CLASS=org.apache.hadoop.util.RunJar
if "%1" == "distcp" set CLASS=org.apache.hadoop.util.CopyFiles
goto SPLI
:SPLI
set HADOOP_OPTS=
set HADOOP_OPTS=%HADOOP_OPTS% -Dhadoop.log.dir=%HADOOP_LOG_DIR%
set HADOOP_OPTS=%HADOOP_OPTS% -Dhadoop.log.file=%HADOOP_LOGFILE%
set HADOOP_OPTS=%HADOOP_OPTS% -Dhadoop.home.dir=%HADOOP_HOME%
set HADOOP_OPTS=%HADOOP_OPTS% -Dhadoop.id.str=%HADOOP_IDENT_STRING%
call "%JAVA_HOME%\bin\java" %JAVA_HEAP_MAX% %HADOOP_OPTS% -classpath "%CLASSPATH%" %CLASS% %2 %3 %4 %5 %6 %7 %8 %9
rem if "%ERRORLEVEL%" == "1" goto SPLI else goto end
:end
[收藏自:http://www.xd-tech.com.cn/blog/article.asp?id=60] 查看原网页