因为用cygwin的方式在windows7上配置hadoop(使用Cygwin 的主要目的是为了执行hadoop bin 目录下的Linux Shell 脚本),老是出问题,索性就放弃了,刚好在网上找到一个教程,无需使用Cygwin即可配置,所以就记下来供大家参考,有误之处请多海涵。
- 需要配置JDK环境,版本号要注意,一般1.6以上。
- 下载hadoop-0.20.2.tar.gz软件包,解压至目录比如F:\apache\hadoop-0.20.2,设置环境变量HADOOP_HOME为hadoop安装目录
- 使用hadoop 补丁,将hadoop 相关进程作为Windows 服务执行,并使之可以在Windows 命令行中直接执行hadoop 命令。
(1) 将补丁包解压。
(2) 将补丁包目录下的hadoop-0.20.2-core.jar 和service 目录复制到HADOOP_HOME
(3) 将补丁包bin 目录下的:cpappend.bat、hadoop.bat 复制到HADOOP_HOME\bin
(4) 将补丁包lib 目录下的:commons-compress-1.0.jar、commons-io-1.4.jar、jna-3.2.2.jar 复制到 HADOOP_HOME\lib
-
- 设置HADOOP_USER 环境变量(系统变量):HADOOP_USER= hadoop(hadoop为当前登录Windows 的用户帐号名称)
- 打开Window 命令行提示符(在Windows 7 中要以管理员身份执行)。进入HADOOP_HOME 的service\bin 目录创建服务,执行下列命令:
InstallService.bat ..\conf\JobTracker.conf
InstallService.bat ..\conf\NameNode.conf
InstallService.bat ..\conf\TaskTracker.conf
InstallService.bat ..\conf\DataNode.conf
(提示输入HADOOP_USER 用户的密码。应看到如下输出:wrapper | Hadoop XXXXXXX installed.)
打开Windows 服务工具(执行命令services.msc),确认上述服务安装成功。
- 接下来,需要修改hadoop 的配置文件,它们位于conf 子目录下,分别是hadoop-env.sh、core-site.xml、hdfs-site.xml 和mapred-site.xml 共四个文件。
- 修改hadoop-env.sh
只需要将JAVA_HOME 修改成JDK 的安装目录即可,请注意JDK 必须是1.6 或以上版本。
-
- 修改core-site.xml
为简化core-site.xml 配置,将D:\hadoop\run\src\core 目录下的core-default.xml 文件复制到
D:\hadoop\run\conf 目录下, 并将core-default.xml 文件名改成core-site.xml 。修改fs.default.name 的值, 如下所示:
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri's authority is used to
determine the host, port, etc. for a filesystem.</description>
</property>
-
- 修改hdfs-site.xml
为简化hdfs-site.xml 配置,将D:\hadoop\run\src\hdfs 目录下的hdfs-default.xml 文件复制到 D:\hadoop\run\conf 目录下,并将hdfs-default.xml 文件名改成hdfs-site.xml。不需要再做其它修改。
-
- 修改mapred-site.xml
为简化mapred-site.xml 配置,将D:\hadoop\run\src\mapred 目录下的mapred-default.xml文件复制到 D:\hadoop\run\conf 目录下,并将mapred-default.xml 文件名改成mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
<description>The host and port that the MapReduce job tracker runs
at. If "local", then jobs are run in-process as a single map
and reduce task.
</description>
</property>
- 格式化HDFS 文件系统:
进入HADOOP_HOME\bin 目录,执行:hadoop.bat namenode -format
- 编写服务启动脚本start-all.bat:在 HADOOP_HOME\bin 目录下,新建文件:start-all.bat 输入内容为:
@echo off
net start namenode
net start datanode
net start jobtracker
net start tasktracker
编写服务停止脚本stop-all.bat:在 HADOOP_HOME\bin 目录下,新建文件:stop-all.bat 输入内容为:
@echo off
net stop tasktracker
net stop jobtracker
net stop datanode
net stop namenode
- 进入HADOOP_HOME\bin 目录,执行命令start-all.bat
在浏览器中通过Web 界面查看namenode:http://localhost:50070/
在浏览器中通过Web 界面查看jobtracker:http://localhost:50030/
我在启动服务的过程中遇到了问题,即NameNode无法启动,解决方案:
在 HADOOP_HOME/conf/ hadoop-env.sh 里面,修改配置如下: export HADOOP_PID_DIR=/home/hadoop/pids pid文件默认在/tmp目录下,而/tmp是会被系统定期清理的,所以Pid文件被删除后就no namenode to stop core-site.xml添加hadoop.tmp.dir :
<property> <name>hadoop.tmp.dir</name> <value>/home/XXX/hadoop/namenode</value> </property>
最后重新执行hadoop.bat namenode format命令,然后start-all.bat即可。