Ubantu-命令行编译打包MapReduce程序并在Hadoop下运行

时间:2021-10-11 17:43:06

一、概述

在Linux下, 使用命令行编译并打包成jar,使用Hadoop运行自己的MapReduce程序,以WordCount为例。

二、环境

1、笔记本电脑一台,操作系统:window10

2、VMwearWorkstation 12.0

3 、虚拟机操作系统: Ubuntu16.04

三、步骤及测试

1. 添加 Hadoop 的 classhpath 信息添加到 CLASSPATH 变量中

在 ~/.bashrc 中增加如下几行:

export HADOOP_HOME=/usr/local/hadoop

exportCLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH

执行 source ~/.bashrc 使变量生效

2. 使用Javac编译自己的MapReduce程序

javac WordCount.java

编译后可以看到生成了几个 .class 文件。

3.把 .class 文件打包成 jar

jar -cvf WordCount.jar ./WordCount*.class

4.在hadoop上运行程序

创建WordCount的输入

1.  mkdir input
2.  echo "echo of the rainbow" > ./input/file0
3.  echo "the waiting game" > ./input/file1

开始运行:

/usr/local/hadoop/bin/hadoop jar WordCount.jar org.apache.hadoop.examples.WordCount input output

正确运行后的结果如下:

本次使用的是,已经上传到hdfs的protocols文件

(1)开始运行wordcount任务

Ubantu-命令行编译打包MapReduce程序并在Hadoop下运行

(2)map 100% reduce 100% ;Job成功执行

Ubantu-命令行编译打包MapReduce程序并在Hadoop下运行

(3)Job执行后的整体情况

Ubantu-命令行编译打包MapReduce程序并在Hadoop下运行

(4)hdfs上查看是否生成输出文件

Ubantu-命令行编译打包MapReduce程序并在Hadoop下运行

(5)查看生成的单词统计数据
Ubantu-命令行编译打包MapReduce程序并在Hadoop下运行