本文所写内容,在win7(64位)环境下搭建hadoop2.8.0环境,亲测可行。
注:1、hadoop3以上版本需jdk1.8以上
一、下载hadoop2.8.0,解压
地址:http://hadoop.apache.org/releases.html
如果不需要源码的话,下载binary就可以了
二、配置环境变量
1、配置HADOOP_HOME(根据自身情况配置)
2、往path中添加%HADOOP_HOME%\bin;%HADOOP_HOME%\sbin;
三、下载hadoop.dll和winutils.exe
其中hadoop.dll各个版本不兼容,如果你不是下载hadoop2.8.0,则去百度搜索下载对应版本的hadoop.dll和winutils.exe,本文仅提供hadoop2.8.0版本的下载地址
下载地址:http://download.youkuaiyun.com/detail/a327919006/9882492
下载后把这hadoop.dll和winutils.exe放到hadoop-2.8.0\bin,hadoop.dll也放一份到C:\Windows\System32下
四、修改配置文件
文件目录:hadoop-2.8.0\etc\hadoop
1、core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/E:/hadoop-2.8.0/tmp</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/E:/hadoop-2.8.0/tmp/name</value>
</property>
</configuration>
注:hadoop.tmp.dir与dfs.name.dir可根据自身情况配置目录
2、hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/E:/hadoop-2.8.0/tmp/data</value>
</property>
</configuration>
注:dfs.data.dir可根据自身情况配置目录
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4、yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<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>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
</configuration>
注:yarn.resourcemanager.hostname可根据自身情况配置目录
然后可以起个cmd,运行 hadoop version,结果如下:
五、格式化namenode
1、cmd下,进入hadoop所在盘,我电脑是e盘
2、执行hadoop namenode -format 没报错的情况下,只要执行一次
执行后会根据core-site.xml配置的目录,进行格式化
执行完,看下打印出来的日志的最后几行,应该有一句类型 ***(你所配置的目录)*** has been successfully formatted.说明格式化成功
六、启动dfs和yarn
1、cmd下执行start-dfs,实际上运行的文件在hadoop-2.8.0\sbin下,因为配置了环境变量,可以直接执行
启动后会自动启两个cmd窗口,一个是datanode,一个是namenode,不要关掉,关掉就等于停止dfs
启动完后可访问节点管理GUI, 地址:http://localhost:50070/
2、cmd下执行start-yarn
启动后也会起两个cmd窗口,一个是nodemanager,一个是resoucemanager,不要关掉,关掉等于停止yarn
启动完后可访问资源管理GUI,地址:http://localhost:8088/
七、运行hadoop提供的demo,计算单词数量
1、在你电脑任意位置创建一个文本文件如E:\hadoop-2.8.0\tmp\hadoop_test.txt
输入一些英文单词如:
my name is zhangsan.
I'm from china.
I'm ok.
2、用dfs创建一个文件夹,名字任意
3、把hadoop_test.txt上传到dfs,并查看
-put 是上传命令
-ls是查看命令
如图:已经上传成功
4、运行hadoop提供的demo,计算单词数
demo文件所在目录为E:\hadoop-2.8.0\share\hadoop\mapreduce\hadoop-mapreduce-examples-2.8.0.jar
cmd下运行hadoop jar E:\hadoop-2.8.0\share\hadoop\mapreduce\hadoop-mapreduce-examples-2.8.0.jar wordcount /zhangsan/input/ /zhangsan/output/
运行结果在dfs中的/zhangsan/output文件夹下,可用命令查看
到此为止:hadoop环境及demo运行已完成。下面是我遇到的坑,有的坑可能忘了记录,但是只要拿异常百度下,都能找到解决方法。
异常处理:
一、hadoop jar E:\hadoop-2.8.0\share\hadoop\mapreduce\hadoop-mapreduce-examples-2.8.0.jar wordcount /zhangsan/input/ /zhangsan/output/
1、错误信息:17/06/26 16:52:28 INFO ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 0 time(s); retry policy isRetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
解决办法:在yare-site.xml里添加如下信息之后问题得到解决
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
2、错误信息:org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/chennan/output already exists
解决办法:输出文件夹hadoop要自行创建,如果输出文件夹已手工创建,删除即可
二、在hadoop/sbin下启动start-yarn
1、错误信息:FATAL nodemanager.NodeManager: Error starting NodeManagerjava.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V
解决办法:hadoop.dll的版本与当前hadoop版本不一致,我用的是hadoop2.8.0,但是hadoop.dll用的是2.7.1
就会报此错误,去百度上下个2.8.0的hadoop.dll就可以了,放在bin和system32下。