MapReduce安装及Wordcount实例
一. MapReduce安装配置
准备工作:
①本机主要配置了3台虚拟机:node01、 node02、 node03
②配置mapreduce需要解决的配置:mapred-site.xml yarn-site.xml yarn--site.xml
③关闭防火墙:service iptables stop
具体操作:
1.配置mapred-site.xml
//启用yarn 作为资源管理框架
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
2.配置yarn-site.xml
<configuration>
<!--启用mapreducer 的shuffle 功能 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
<!-- 启动高可用 --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property>
<!-- 定义集群名:我的名称sxt --> <property> <name>yarn.resourcemanager.cluster-id</name> <value>sxt</value> </property>
<!--定义resourcemanager别名 --> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property>
<!--为为别名指定服务器id node02 --> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>node02</value> </property>
<!--为别名指定服务器Id node03--> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>node03</value> </property>
<!--指定zk服务器--> <property> <name>yarn.resourcemanager.zk-address</name> <value>node01:2181,node02:2181,node03:2181</value> </property> </configuration>
3.拷贝到其它节点:scp -r hadoop-2.6.5 node02: /home/mysoft scp -r hadoop-2.6.5 node03: /home/mysoft
4.验证:jps查看进程 ------浏览器:node01:50070 node02:50070(是否active standby)
二、利用MapReduce实现Wordcount
准备工作:
①pycharm中编写wc.py的启动脚本,需要安装mrjob包
from mrjob.job import MRJob class WordCount(MRJob): def mapper(self,key,lines): line =lines.strip().split(' ') for word in line: yield word,1 def reduceer(self,words,occrrence): yield words,sum(occrrence) if __name__ =="__main__": WordCount.run()
②准备测试文本: 随机去网上摘取一段英文文本 本机: text.py
③上传hadoop: a.在本地root新建一个MRJob目录(方便操作)
,b.上传测试文件跟wc.py启动脚本到MRJob
c.在hdfs中新建input目录并上传text.py文件:
④在虚拟机中安装mrjob: pip install mrjob
具体过程:
1.本地运行命令:
[root@node01 MRJob]# python3 wc.py -r local ./text.py >outputfile 这是在MRJob目录中执行命令,将结果重定向到本地outputfile文件中!
2.hdfs上运行命令:
[root@node01 MRJob]# python3 wc.py -r hadoop hdfs://sxt/input/text.py