刚入门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
回车,上述命令详解,见这个链接:
出现如下界面则表示成功:
计算结果存放在output中:
查询计算结果,命令如下:
hdfs dfs -cat /user/lyy/output/part*
计算结果如下图所示: