From 13fce1391b98065180aa3e53c05ca3cb5e367af1 Mon Sep 17 00:00:00 2001 From: hxlong <1141741507@qq.com> Date: Thu, 15 Oct 2020 17:26:29 +0800 Subject: [PATCH] update assignment3 --- Assignment2.md | 1 - Assignment3.md | 14 ++++++++++++-- file/assignment3/学号-实验三.docx | Bin 11281 -> 11354 bytes img/assignment3/image-20201015170801613.png | Bin 0 -> 296484 bytes 4 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 img/assignment3/image-20201015170801613.png diff --git a/Assignment2.md b/Assignment2.md index bba0bac..fcf9109 100644 --- a/Assignment2.md +++ b/Assignment2.md @@ -181,7 +181,6 @@ hello from busybox ``` ##### hint:通常,docker image不在运行时叫image,加载运行以后叫container - `**************作业1:请将上述涉及docker run/image的操作界面截图,并插入实验报告中***************` ### 二) 熟悉Docker指令 diff --git a/Assignment3.md b/Assignment3.md index bd26e6e..2b37257 100644 --- a/Assignment3.md +++ b/Assignment3.md @@ -197,7 +197,7 @@ #### 统计词频 -- 创建目录,并上传测试数据 +- 创建目录,并上传测试数据(`所有操作在集群的master节点执行`) ``` hadoop fs -mkdir /input @@ -218,5 +218,15 @@ hadoop jar /home/hadoop/hadoop-examples.jar wordcount /input /output 如果/ou `**************作业4:统计/home/hadoop/etc/hadoop目录下所有文件的词频并截图,插入实验报告中***************` -​ ** +#### WordCount 实现原理 + +> MapReduce主要分为两步Map步和Reduce步,引用网上流传很广的一个故事来解释,现在你要统计一个图书馆里面有多少本书,为了完成这个任务,你可以指派小明去统计书架1,指派小红去统计书架2,这个指派的过程就是Map步,最后,每个人统计完属于自己负责的书架后,再对每个人的结果进行累加统计,这个过程就是Reduce步。下图是WordCount的实现原理图,[WordCount实现](https://hadoop.apache.org/docs/r1.0.4/cn/mapred_tutorial.html#用法)。 + +![image-20201015170801613](img/assignment3/image-20201015170801613.png) + +`**************作业5:用任何语言实现单线程的wordcount,然后给出运行时间截图,插入实验报告中***************` + + + +`******特别注意,实验结束后请删除UHadoop集群、EIP 和UHost主机******` diff --git a/file/assignment3/学号-实验三.docx b/file/assignment3/学号-实验三.docx index 55142696dcac8ca67ef7a6e62e2f01f3244bf480..2b00a622bcf5610bf0d09dec64e8be56ade519de 100644 GIT binary patch delta 2651 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 diff --git a/img/assignment3/image-20201015170801613.png b/img/assignment3/image-20201015170801613.png new file mode 100644 index 0000000000000000000000000000000000000000..86284e0ec476f500913e3db99a0662183489ac02 GIT binary patch literal 296484 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