WordCount.java的简单介绍

  以WordCount为例,计算文件中每一个英文单词出现的次数,主要是这样的思路:
Map: 将原本文字转换为(key,value)的形式,其中key是word,value是单词出现的次数

Shuffle: 将相同的key排列在一起

Reduce: 将相同的key 的value相加

 主要操作步骤分为这样几步:

  • 编辑WordCount.java
  • 编译WordCount.java
  • 创建测试文本文件
  • 运行WordCount.java
  • 查看运行结果

 结论前置,Hadoop MapReduce存在以下的缺点:

  • 程序设计模式不容易使用,很难提高开发者效率
  • 有运行效率问题,MapReduce需要将中间产生的数据保存到硬盘,因此会有读写数据延迟问题
  • 似乎不支持实时处理,原始设计好像是以批处理为主

(1)编辑WordCount.java

# Step1 创建wordcount测试目录
mkdir -p ~/wordcount/input
# Step2 切换至wordcount测试目录
cd ~/wordcount
# Step3 复制WordCount.java程序代码
# 在Hadoop说明文件中就有WordCount.java的程序代码,所以可以直接复制,如图1
# 网址:http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Example:_WordCount_v1.0

# Step4 编辑WordCount.java程序代码
sudo gedit WordCount.java

# Step5 复制刚才网址的java程序代码过来,保存并退出
# Main函数主要设置了map和reduce以及combiner的类,如图2

图1
图2
(2)编译WordCount.java

需要预先设置环境变量

# 编辑 ~/.bashrc
sudo gedit ~/.bashrc
# 在末尾输入
export PATH=${JAVA_HOME}/bin:${PATH}
export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar

source ~/.bashrc

# 开始编译
hadoop com.sun.tools.javac.Main WordCount.java
# 打包
jar cf wc.jar WordCount*.class

(3)创建测试文件

为了测试WordCount程序,我们可以使用Hadoop目录下的License.txt文件

# 复制
cp /usr/local/hadoop/LICENSE.txt ~/wordcount/input/

# 启动所有虚拟服务器master、data1、data2、data3
# 在master服务器启动hadoop multi-node Cluster
start-all.sh

# 上传测试文件到HDFS目录
hadoop fs - mkdir -p /user/hadooptest/wordcount/input
cd ~/wordcount/input
hadoop fs -copyFromLocal LICENSE.txt /user/hadooptest/wordcount/input
# 列出Hdfs文件
hadoop fs -ls /user/hadooptest/wordcount/input
命令说明
hadoop fs -mkdir创建HDFS目录
hadoop fs -ls列出HDFS目录
hadoop fs -copyFromLocal使用-copyFromLocal复制本地文件到HDFS
hadoop fs -put使用-put复制本地文件到HDFS
hadoop fs -cat列出HDFS目录下文件内容
hadoop fs -copyToLocal使用-copyToLocal将HDFS上的文件复制到本地
hadoop fs -get使用-get将HDFS上的文件复制到本地
hadoop fs -cp复制HDFS文件
hadoop fs -rm删除HDFS文件

(4)运行WordCount.java

cd ~/wordcount

# 运行WordCount.java,语句格式为hadoop jar wc.jar【输入文件】【输出目录】
hadoop jar wc.jar WordCount /user/hadooptest/wordcount/input/LICENSE.txt /user/hadooptest/wordcount/output

# 查看运行结果
hadoop fs -ls /user/hadooptest/wordcount/output
# _SUCCESS:代表程序运行陈宫
# part-r-00000:运行结果的文本文件
hadoop fs -cat /user/hadooptest/wordcount/output/part-r-00000|more

##### 如果需要再次执行,请先删除输出目录,否则会出现文件已经存在的报错信息
# hadoop fs -rm -R /user/hadooptest/wordcount/output/

运行结果
运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值