从本教程开始熟悉Ubuntu16.04下eclipse的使用,开始我们当然先从入门的WordCount代码入手。
代码详解
一方面为了了解MapReduce的工作流程,另一方面为后续代码的改编应用做准备,下面的源码我们需了解其含义,已加入注释,可以自行阅读:
//package org.apache.hadoop.examples;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class WordCount {
public static class TokenizerMapper
extends Mapper
eclipse的WordCount实现
此专题继续在和的基础上进行
一定要记住打开服务先!!!!!!!!
$ cd /usr/local/hadoop
$ ./sbin/start-all.sh
首先,不要试图图形化显示DFS Location的内容,不然会持续报错,已经搞了很久,目前还没有找到解决方法,但是需要强调的是hdfs仍然可以通过终端命令行进行创建、上传和删除文件(夹)操作。


第二点,讲一下eclipse如何创建MapReduce java应用程序。
右击创建的工程按如图选择,文件名必须与类名一致,所以在此时必须使用WordCount作为文件名

将源码粘贴到代码区域后,右击文件,按图选择

在配置窗口中,选择Java Application,选择Arguments选项卡,分别填入数据输入和输出目录,两者之间有空格(输入数据提前上传至hdfs,第一节中我们上传了LICENSE.txt到user/hadoop,可仿照那里的操作在命令行进行操作,如下所示)
$ hdfs dfs -mkdir /user
$ hdfs dfs -mkdir /user/hadoop
$ hdfs dfs -copyFromLocal LICENSE.txt /user/hadoop

需要注意的是,输出路径的最后一级文件夹名需要与其本级目录文件夹名都不同,这是我们自定义的存放结果文件的文件夹,换言之,此文件夹名为系统自动根据用户填写的文件夹名来生成的,如图填写的话,我的user目录下会自动生成文件夹Out来存放结果文件
Apply后Run
可能会出现以下问题

这个问题是日志问题,解决方法为将此文件

复制至

即可解决问题
可能还会有

于是我free -m了一下,发现Swap内存区满了

这个问题是我开机好几天没关的缘故,很简单,只需要重启虚拟机即可
再不出意外的话,就会成功执行,我们可以在localhost:9870找到user/Out/里有我们的结果文件
