刚入门hadoop网上有好多搭建hadoop伪分布式的资料,而且相互之间都有区别,弄得小编有点糊涂,终于搞定了,做个记录方便以后查看,也希望其他新手少走弯路,若有表述不准确大虾还望见谅!
      小编以wordcount为例,在yarn上以伪分布式模式运行mapreduce任务:

一、相关软件路径和测试文本内容

      1、JDK安装路径:/home/lyy/modules/jdk1.8.0_131

      2、hadoop安装路径:/home/lyy/modules/hadoop-2.6.0

      Java与hadoop的环境变量自己配置,小编不在此赘述

      3、测试文本名字:mr.input

      4、测试文本内容:(如下所示)

hadoop 伪分布式 hadoop伪分布式搭建实验报告_文件配置


      测试文本随便放一个路径就可以了,但必须记住,小编放在了home下,如图所示

hadoop 伪分布式 hadoop伪分布式搭建实验报告_hadoop_02

二、相关文件配置

      配置文件位置如下图所示:

hadoop 伪分布式 hadoop伪分布式搭建实验报告_伪分布式_03

      1、hadoop-env.sh:这个文件中只配置

JAVA_HOME=/home/lyy/modules/jdk1.8.0_131,如下图所示:

hadoop 伪分布式 hadoop伪分布式搭建实验报告_hadoop_04

      2、core-site.xml: 这个属性作用是告诉操作系统当前任务使用分布式文件系统,而不是本地文件系统。有人也许会问,什么是本地文件系统,什么是分布式文件系统(HDFS)?本地文件系统就是我们平时在Ubuntu的终端里操作的cd、ls 、mkdir等等进去一个目录,找个文件、创建啊 删除什么的,这就是本地文件系统。HDFS是一个与本地文件系统独立的文件系统,哪里也可以存放文件,它也有进入、创建、查看、删除,上传、下载等命令,先这么记着,具体操作下面再说,配置如下图所示:

<property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
</property>

hadoop 伪分布式 hadoop伪分布式搭建实验报告_hadoop_05

      3、hdfs-site.xml: 这个属性用来设置节点的个数,默认是3,因为是伪分布式只有一台机器,所以改成1。属性放在configuration之间,如上图所示,下面的也一样,就不一张张贴图了。

<property>
        <name>dfs.replication</name>
        <value>1</value>
 </property>

      4、yarn-site.xml: 这个属性的作用是让mapreduce任务跑在yarn上,yarn可以理解为一个操作系统一样的东西,上面可以跑各种计算框架,mapreduce只是hadoop计算框架的一种。如果不配置,则mapreduce任务就跑在本地上。

<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>

      5、yarn-site.xml:这个属性是对服务器命名的一个限制,记住就好了。

<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
三、启动HDFS和YARN

刚开始建议在这个目录下输入下列命令:

hadoop 伪分布式 hadoop伪分布式搭建实验报告_wordcount_06

      第一次启动hdfs需要先格式化一下,namenode,以后就不需要了,命令如下:

bin/hdfs namenode -format

      启动namenode:

sbin/hadoop-daemon.sh start namenode

      启动datanode:

sbin/hadoop-daemon.sh start datanode

      启动yarn:

sbin/start-yarn.sh

      输入jps查看启动是否成功:

hadoop 伪分布式 hadoop伪分布式搭建实验报告_伪分布式_07

四、运行wordcount程序

      安装好hadoop后,里面自带了wordcount的demo,在这里可以找见:

hadoop 伪分布式 hadoop伪分布式搭建实验报告_hadoop_08

      还记得在core-site.xml这个文件中配置了属性,让mapreduce任务使用分布式文件系统么,但是我们的测试文本mr.input放在本地文件系统的home目录下面,所以我们得把mr.input上传到hdfs中,在上传之前,还得先在hdfs中建立一个目录用来存放mr.input。
      创建目录,命令如下:

hdfs dfs -mkdir -p /user/lyy/input

      上传mr.input,命令如下:

hdfs dfs -put ~/wc.input /user/lyy/input

      hadoop提供了以web的方式来查询hdfs,在浏览器中输入:

http://192.168.174.128:50070

      其中,192.168.174.128是虚拟机的IP,50070是分布式文件系统的端口,会出现如下界面:

hadoop 伪分布式 hadoop伪分布式搭建实验报告_wordcount_09

      选择浏览文件系统,红圈所示。

hadoop 伪分布式 hadoop伪分布式搭建实验报告_wordcount_10

      就能看到刚才创建的目录和上穿的文件。

hadoop 伪分布式 hadoop伪分布式搭建实验报告_伪分布式_11

      文件上传好了,运行wordcount程序,命令如下:

hadoop jar ~/modules/hadoop-2.6.0/share/hadoop/mapreduce2/hadoop-mapreduce-examples-2.6.0-cdh5.11.0.jar wordcount /user/lyy/intput/mr.input /user/lyy/output

      回车,上述命令详解,见这个链接:
      

      出现如下界面则表示成功:

hadoop 伪分布式 hadoop伪分布式搭建实验报告_hadoop 伪分布式_12

      计算结果存放在output中:

hadoop 伪分布式 hadoop伪分布式搭建实验报告_文件配置_13

      查询计算结果,命令如下:

hdfs dfs -cat /user/lyy/output/part*

      计算结果如下图所示:

hadoop 伪分布式 hadoop伪分布式搭建实验报告_伪分布式_14