MapReduce控制流和数据流

x33g5p2x  于2021-03-14 发布在 MapReduce  
字(1.3k)|赞(0)|评价(0)|浏览(387)

一、运行WordCount程序

WordCount程序是Hadoop自带的演示java程序,用于统计一个文本里面单词出现的次数。本实验将会在伪分布式环境中,运行WordCount程序统计文本中单词出现的次数。

[info] (1)jar放在Hadoop包的哪个目录?

hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar

[info] (2)知识点回顾

# 之前提到过MapReduce需要运算的数据是存放在HDFS的,运算结果也是存放在HDFS中
# 在学习HDFS基本操作的时候,已经学过如何把本地的一个文件传过去HDFS中

[info] (3)实验流程:运行WordCount程序

# 1.Linux本地创建一个word.txt文本,内容为:
I Love China
I Love Beijing

:-:

:-:

# 2.1先在HDFS中创建一个huatec目录 hdfs dfs -mkdir /huatec
# 2.2把本地的word.txt文件推上去HDFS的目录 /huatec

:-:

# 3.运行WordCount程序进行统计该文本的单词出现次数,并把结果输出到目录 /huatec/output

:-:

:-:

:-:

:-:

:-:

[info] 二、MapReduce控制流

:-:

:-:

  • JobTracker:负责MapReduce的控制及调度
  • TaskTracker:负责运行MapReduce,当然MapReduce运行是分成Map Task和Reduce Task,而不是完整的Job
  • 控制流:
    • JobTracker调度任务给TaskTracker,TaskTracker执行任务时会返回进度报告
    • JobTracker则会记录进度的进行状况,如果某个TaskTracker上的任务执行失败,那么JobTracker会把这个任务分配给另一台TaskTracker,直到任务执行完成

[info] 二、MapReduce数据流

这个WordCount程序到底是怎样进行单词统计的呢?底层是使用Java代码,那么一个单词统计的业务逻辑代码是怎么编写的呢?我们在写一个MapReduce程序的时候,首先需要分析代码逻辑,也就是数据流程是怎么走的,接下来分析一下WordCount程序的数据流程。

:-:

  • 1.数据首先按照TextInputFormat形式处理成两个InputSplit,然后输入到两个Map中
  • 2.Mapper阶段根据输入的Map进行处理数据,形成新的Map,处理完后写入到本地磁盘(因为Map阶段的输出在Job完成后即可删除了,因此不需要存储到HDFS上,虽然存储到HDFS上会更安全,但是因为网络传输会降低MapReduce任务的执行效率,因此Map的输出文件是写在本地磁盘上的)
  • 3.Reduce阶段会读取Map阶段输出在本地的Map数据,合并value,然后将他们输出到HDFS上(Reduce的输出会占用很多的网络带宽,不过这与上传数据一样是不可避免的)

本课程是带大家感受一下,WordCount程序是怎么在Hadoop运行的,并且一个MapReduce程序是如何实现业务逻辑的,数据流是怎么走动的

相关文章

热门文章

更多