在实际动手之前,网上找了文章学习了,都说要装cygwin。
实际上,现在hadoop已经可以直接在windows上安装了,可以忽略cygwin了。
安装前,需要准备的软件
1.java_jdk
2.hadoop
3.winutils
java jdk的安装不是本文的重点,如果没装的同学自行去百度吧。这里只强调一点,安装后,在环境变量中添加JAVA_HOME,默认的安装路径一般类似"C:\Program Files\Java\jdk1.7.0_80",这个路径中间包含空格,需要把路径修改为“C:\Progra~1\Java\jdk1.7.0_80”
2.hadoop的下载安装
点击download,点击releases,选择你需要下载的版本
点击binary进行下载,这个下载的就是软件。
下载后,把压缩包copy到准备安装的目录下解压,解压后目录如下:
把hadoop目录添加到环境变量
新建HADOOP_HOME变量
把hadoop_home加到path变量中
;%HADOOP_HOME%\bin;
3.下载winutils
winutils是一套类库,是第三方的,下载地址:
https://github.com/steveloughran/winutils
点击download,download ZIP,会弹出下载窗口。
解压后,找到自己下载的hadoop对应的版本,我是用的2.8
用它下面的bin文件夹替换hadoop下的bin文件夹
4.修改配置文件
修改etc\hadoop\文件夹下的5个配置文件
yarn-site.xml
mapred-site.xml
hdfs-site.xml
core-site.xml
hadoop-env.cmd
core-site.xml文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml,需要根据下面的配置文件的目录结构在hadoop\data\dfs下建立2个文件夹,datanode和namenode
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/data/dfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/hadoop/data/dfs/datanode</value>
</property>
</configuration>
mapred-site.xml,这个文件原来叫mapred-site.xml.template,改下名字
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<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>
</configuration>
hadoop-env.cmd
set JAVA_HOME=C:\Progra~1\Java\jdk1.7.0_80
也可以使用java_home的变量
set JAVA_HOME=%JAVA_HOME%
到这里,所有的步骤都已经完成了, 可以开始运行了
1.格式化hdfs
hadoop namenode -format
2.启动dfs
进入sbin目录下,start-dfs.cmd,弹出2个窗口,一个是namenode,一个是datanode
3.启动yarn
start-yarn.cmd,一样弹出2个窗口
#注:start-all.cmd是2和3命令的组合
在运行中如果提示端口或者被占用,可以先把进程kill掉再运行
我在测试中就发现被pptv的一个进程ppap占用了9000端口。
进程kill的方法,一共3步
1.查找占用端口的进程号
netstat -ano|findstr "端口号"
netstat -ano|findstr "80"
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 7796
2.根据进程号查找进程名
tasklist|findstr 进程号
tasklist|findstr 7796
Java.exe 7796 Console 1 57,368 K
3.杀死进程
taskkill /f /t /im 进程名
taskkill /f /t /im java.exe
成功: 已终止 PID 7796 (属于 PID 9052 子进程)的进程。
这个时候再重新运行启动hadoop的命令即可
hadoop运行后访问
http://localhost:8088/ 和 http://localhost:50070/ 就可以成功见到如下界面