hadoop伪分布式环境搭建、测试与配置详解

来源:互联网 发布:android手机刷linux 编辑:程序博客网 时间:2024/06/05 03:51

本文参考均来源于此处http://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-common/SingleCluster.html

      刚入门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、测试文本内容:(如下所示)
这里写图片描述
      测试文本随便放一个路径就可以了,但必须记住,小编放在了home下,如图所示
这里写图片描述

二、相关文件配置

      配置文件位置如下图所示:
这里写图片描述

      1、hadoop-env.sh:这个文件中只配置
JAVA_HOME=/home/lyy/modules/jdk1.8.0_131,如下图所示:
这里写图片描述

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

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

这里写图片描述

      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

刚开始建议在这个目录下输入下列命令:
这里写图片描述

      第一次启动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查看启动是否成功:
这里写图片描述

四、运行wordcount程序

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

      还记得在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是分布式文件系统的端口,会出现如下界面:
这里写图片描述

      选择浏览文件系统,红圈所示。
这里写图片描述

      就能看到刚才创建的目录和上穿的文件。
这里写图片描述

      文件上传好了,运行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

      回车,上述命令详解,见这个链接:
      http://blog.csdn.net/yy_diego/article/details/72774833

      出现如下界面则表示成功:
这里写图片描述

      计算结果存放在output中:
这里写图片描述

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

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

      计算结果如下图所示:
这里写图片描述

第一次觉得写博客好费时间,上述操作小编亲测成功,若表述有误,大虾见谅!