在当前日益兴盛的大数据(big data)时代,hadoop和它的生态体系从中脱颖问出,因为我们开发环境大多在windows上,但因安全策略限制等原因不方便用虚拟机运行Linux和租用云服务器怎么办,不要慌,windows同样可以完美搭建起来hadoop的环境。
环境
windows 7-64bit
jdk-1.8.0_161
hadoop-2.7.1
操作步骤
一、下载并安装jdk
下载和安装的过程就不多说了,需要注意的是记得设置好JAVA_HOME系统环境变量,因为hadoop的配置文件中用到了这个参数。
我采用的jdk是1.8的,配置JAVA_HOME,如果默认安装,会安装在
C:\Program Files\Java\jdk1.8.0_161
。此目录存在空格,启动hadoop时将报错,JAVA_HOME is incorrect ...
。建议安装在D:\Java\jdk1.8.0_161
,如果已经安装过了,也不用怕,此时只需要将环境变量JAVA_HOME值中的Program Files
替换为Progra~1
。如:C:\Progra~1\Java\jdk1.8.0_161
。
二、安装配置hadoop
1、下载
http://hadoop.apache.org/
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common
官网和各镜像站提供了最新版本的各个下载包
http://archive.apache.org/dist/hadoop/core
这边我从归档站下载了hadoop-2.7.1的tar包
2、解压并配置环境变量
复制到D盘根目录直接解压,出来一个目录D:\hadoop-2.7.1
,配置到环境变量HADOOP_HOME
中,在PATH里加上%HADOOP_HOME%\bin;
3、下载windows专用二进制文件和工具类依赖库
hadoop在windows上运行需要winutils支持和hadoop.dll等文件
https://github.com/steveloughran/winutils
在github仓库中找到对应版本的二进制库hadoop.dll
和winutils.exe
文件,然后把文件拷贝到D:\hadoop-2.7.1\bin
目录中去
注意hadoop.dll等文件不要与hadoop冲突,若出现依赖性错误可以将
hadoop.dll
放到C:\Windows\System32
下一份。
4、hadoop环境测试
启动windows cmd命令行窗口执行hadoop version
,显示如下:
5、最小化配置hadoop伪集群
去D:\hadoop-2.7.1\etc\hadoop
找到下面4个文件并按如下最小配置粘贴上去:
core-site.xml
fs.defaultFS
hdfs://localhost:9000
hdfs-site.xml (将value的路径改为自己的路径,盘符/d:/
的前后都有正斜杠)
dfs.replication
1
dfs.namenode.name.dir
/d:/hadoop-2.7.1/data/dfs/namenode
dfs.datanode.data.dir
/d:/hadoop-2.7.1/data/dfs/datanode
mapred-site.xml (拷贝mapred-site.xml.template
并改名)
mapreduce.framework.name
yarn
yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
6、格式化namenode并启动hadoop
启动windows cmd命令行窗口执行hdfs namenode -format
,待执行完毕没有报错即可,不需要重复format:
执行完毕后hadoop目录会多出data
文件夹:
格式化完成后到hadoop的sbin
目录下执行start-all.cmd
启动hadoop
再启动一个新的windows cmd命令行窗口执行jps
通过jps
命令可以看到ResourceManager、NameNode、NodeManager、DataNode这4个进程都拉起来了,到这里hadoop的安装启动已经完成了。
接着我们可以用浏览器
到localhost:8088
看mapreduce任务
到localhost:50070
--> Utilites
--> Browse the file system
看hdfs文件。
如果需要重启hadoop无需再格式化namenode
,只要stop-all.cmd
再start-all.cmd
就可以了。
参考文档:
https://wiki.apache.org/hadoop/Hadoop2OnWindows