MapReduce是一种程序开发模式,可以使用大量服务器来并行处理。MapReduce,就是Map分配工作,Reduce将工作结果汇总整理。
本次之中以WordCount为范例,计算文件中每一个英文单词出现的次数。
1)创建wordcount目录
mkdir -p ~/wordcount/input
cd ~/wordcount
使用sudo gedit WordCount.java来编辑文档。
2)编译WordCount.java
sudo gedit ~/.bashrc
然后加入配置文件
让~/.bashrc设置生效
source ~/.bashrc
接下来开始编译
hadoop com.sun.tools.javac.Main WordCount.java
jar cf wc.jar WordCount*.class
ll
3)创建测试文本文件
cp /usr/local/hadoop/LICENSE.txt ~/wordcount/input
ll ~/wordcount/input
接下来启动所有虚拟服务器
启动集群
start-all.sh
上传测试文件到HDFS目录
hadoop fs -mkdir -p /user/wordcount/input
切换到~/wordcount/input目录
cd ~/wordcount/input
上传文本文件到HDFS
hadoop fs -copyFromLocal LICENSE.txt /user/wordcount/input
列出HDFS文件
hadoop fs -ls /user/wordcount/input
4)运行WordCount.java
切换目录
cd ~/wordcount
运行WordCount程序
hadoop jar wc.jar WordCount /user/wordcount/input/LICENSE.txt /user/wordcount/output
5)查看运行结果
查看HDFS的目录
hadoop fs -ls /user/wordcount/output
查看HDFS中的输出文件内容
hadoop fs -cat /user/wordcount/output/part-r-00000 |more
再次执行WordCount程序请先删除输出目录
hadoop fs -rm -R /user/wordcount/output
Hadoop的MapReduce不是很好用,这里简单介绍一下。