运行Hadoop自带的MapReduce WordCount单词统计程序

启动

 start-dfs.sh

start-yarn.sh

mr-jobhistroy-daemon.sh start historyserver

找到mapreduce的路径,使用以下指令

find -name mapreduce

可以看到,就是 hadoop-mapreduce-examples-2.7.1jar 这个压缩包。可能有其他版本,反正带有example字样

/usr/local/hadoop/share/hadoop/mapreduce

(这里我找到的是mapreduce的绝对路径)

(一)

1.创建txt文件,我在这里创建/home/input.txt

切换路径:

cd /home

创建txt.文件

touch input.txt

编辑文件

vim input.txt

进去后按i键进行输入,然后Esc,再shift+;  最后输入wq

即是保存退出

在里面我输入了hello world

2.创建一个多级目录,保存MapReduce的输入文件

/usr/local/hadoop/bin/hadoop fs -mkdir -p /data/wordcount

3.创建一个目录,保存MapReduce的输出文件

/usr/local/hadoop/bin/hadoop fs -mkdir /output

标红表示可以自己设定的

(二)

上传这个文件到HDFS中:

/usr/local/hadoop/bin/hadoop fs -put /home/input.txt /data/wordcount

红色为之前创建txt文件的路径

表绿色为表示要和之前自己文件路径要一致

(三)

查看是否上传成功

/usr/local/hadoop/bin/hadoop fs -ls /data/wordcount

/usr/local/hadoop/bin/hadoop fs -cat /data/wordcount/input.txt

四、运行 WordCount 程序

/usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /data/wordcount /output/wordcount

标红这里指定了输出文件里面统计结果的文件名称

查看统计结果

/usr/local/hadoop/bin/hadoop fs -ls /output/wordcount

/usr/local/hadoop/bin/hadoop fs -cat /output/wordcount/part-r-00000

感谢您的浏览,希望可以帮到您

### Hadoop WordCount 单词统计 示例 实现 教程 HadoopWordCountMapReduce 编程模型的经典入门案例之一,用于演示如何通过分布式计算框架处理大规模数据集。以下是关于该示例的具体实现方法: #### 1. 数据准备阶段 在执行 WordCount 程序之前,需先准备好输入文件并将其上传到 HDFS 中。例如,在 Linux 环境下可以使用如下命令完成操作: ```bash hadoop fs -put myword.txt /data/wordcount ``` 此命令会将本地路径中的 `myword.txt` 文件复制到 HDFS 上指定目录 `/data/wordcount` 下[^2]。 #### 2. 运行内置 WordCount 程序 如果希望快速验证功能而无需编写自定义代码,则可以直接调用 Hadoop 提供的预编译 JAR 包来启动 WordCount 应用程序。具体指令形式如下所示: ```bash /usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /data/wordcount /output/wordcount ``` 上述脚本指定了源码位置以及目标存储地址分别为 `/data/wordcount` 和 `/output/wordcount`[^3]。 #### 3. 自定义 Java 开发流程 对于更复杂的业务需求或者学习目的来说,通常还需要自行开发相应的 Mapper 和 Reducer 类型逻辑。下面给出了一种典型的基于 Eclipse 或 IntelliJ IDEA 平台构建项目的方式,并最终打包成可部署于集群环境下的 Jar 文件实例化过程描述: ##### (a) 创建 Maven 工程结构 确保 pom.xml 配置文件中引入必要的依赖项,比如 hadoop-common、hadoop-hdfs 及其 mapreduce-client-core 组件版本号匹配当前安装好的发行版系列。 ##### (b) 定义核心算法组件 Mapper 负责解析每一行文本内容拆分成键值对集合;Reducer 接收来自多个 Mappers 输出后的中间状态进一步聚合得到最终结果。 ```java // TokenizerMapper.java public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } } // IntSumReducer.java public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } ``` ##### (c) 设置作业参数提交任务 最后一步是在主函数里配置好 InputFormatClass、OutputKeyClass、CombinerClass 等属性之后再正式发起请求交给 YARN ResourceManager 处理调度资源分配事宜。 ```java Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); ``` 当所有准备工作完成后即可按照以下方式运行自制的应用包: ```bash hadoop jar E:/code/IdeaProjects/bigdata/out/artifacts/bigdata_jar/bigdata_jar.jar WordCountMain /test_dir/myfile /test_dir/result ``` 这里需要注意的是实际路径应当替换为自己机器上的绝对物理定位信息[^4]。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值