MapReduce课后练习

1【单选题】
下列说法错误的是________。

A、Map函数将输入的元素转换成<key,value>形式的键值对

B、Hadoop框架是用Java实现的,MapReduce应用程序则一定要用Java来写

C、不同的Map任务之间不能互相通信

D、MapReduce框架采用了Master/Slave架构,包括一个Master和若干个Slave

2【单选题】
在使用MapReduce程序WordCount进行词频统计时,对于文本行“hello hadoop hello world”,经过WordCount程序的Map函数处理后直接输出的中间结果,应该是下面哪种形式________。

A、<“hello”,1>、<“hello”,1>、<“hadoop”,1>和<“world”,1>

B、<“hello”,1,1>、<“hadoop”,1>和<“world”,1>

C、<“hello”,<1,1>>、<“hadoop”,1>和<“world”,1>

D、<“hello”,2>、<“hadoop”,1>和<“world”,1>

3【单选题】
在词频统计中,对于文本行"hello hadoop hello world",经过WordCount的Reduce函数处理后的结果是________。

A、<“hello”,2><“hadoop”,1><“world”,1>

B、<“hadoop”,1><“hello”,2><“world”,1>

C、<“hello”,1,1><“hadoop”,1><“world”,1>

D、<“hadoop”,1><“hello”,1><“hello”,1><“world”,1>

4【单选题】
关于Hadoop MapReduce的叙述错误的是________。

A、MapReduce采用“分而治之”的思想

B、MapReduce的输入和输出都是键值对的形式

C、MapReduce将计算过程划分为Map任务和Reduce任务

D、MapReduce的设计理念是“数据向计算靠拢”

5【单选题】
Hadoop MapReduce计算的流程是________。

A、Map任务—Shuffle—Reduce任务

B、Map任务—Reduce任务—Shuffle

C、Reduce任务—Map任务—Shuffle

D、Shuffle—Map任务—Reduce任务

6【单选题】
编写MapReduce程序时,下列叙述错误的是______。

A、reduce函数所在的类必须继承自Reducer类

B、map函数的输出就是reduce函数的输入

C、reduce函数的输出默认是有序的

D、启动MapReduce进行分布式并行计算的方法是start()

7【多选题】
下列关于传统并行计算框架(比如MPI)和MapReduce并行计算框架比较正确的是__ABCD______。

A、前者相比后者学习起来更难
B、前者是共享式(共享内存/共享存储),容错性差,后者是非共享式的,容错性好
C、前者适用于实时、细粒度计算、计算密集型,后者适用于批处理、非实时、数据密集型
D、前者所需硬件价格贵,可扩展性差,后者硬件便宜,扩展性好

8
【多选题】
MapReduce体系结构主要由哪几个部分组成___ABCD_____。

A、TaskTracker

B、Task

C、JobTracker

D、Client

9
【多选题】
对MapReduce的体系结构,以下说法正确的是___ABCD_____。

A、分布式编程架构

B、以数据为中心,更看重吞吐率

C、分而治之的思想

D、将一个任务分解成多个子任务

10
【多选题】
MapReduce为了保证任务的正常执行,采用________等多种容错机制。

A、重复执行

B、重新开始整个任务

C、推测执行

D、直接丢弃执行效率低的作业

11
【多选题】
关于MapReduce的shuffle过程,叙述正确的是___ABCD_____。

A、Shuffle分为Map任务端的Shuffle和Reduce任务段的Shuffle

B、Map任务的输出结果不是立即写入磁盘,而是首先写入缓存

C、并非所有场合都可以使用合并操作

D、每个Reduce任务真正开始之前,大部分时间都在从Map端领取所需的数据

12
【判断题】
MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为,移动数据需要大量的网络传输开销。

答案:√
13
【判断题】
两个键值对<“hello”,1>和<“hello”,1>,如果对其进行归并(merge),会得到<“hello”,<1,1>>,如果对其进行合并(combine),会得到<“hello”,2>。

答案:√
14
【判断题】
HDFS集群开始启动时,其处于安全模式,可以进行读操作,不能进行写操作。

答案:√
15
【判断题】
HDFS是分布式文件系统,其命名空间包括块、目录和文件。

答案:√
16
【判断题】
Map的主要工作是将多个任务的计算结果进行汇总。

答案:×
17
【判断题】
在Hadoop中每个应用程序被表示成一个作业,每个作业又被分成多个任务,JobTracker的负责作业的分解、状态监控以及资源管理。

答案:√

Java API方式的MapReduceHadoop中最常用的方式之一,MapReduce是一种分布式计算模型,可用于对大规模数据进行处理和分析。下面是一个使用Java API方式的MapReduce的练习: 假设我们有一个文本文件,其中包含一些单词和它们出现的次数,我们需要编写一个程序来统计每个单词出现的次数。我们可以使用MapReduce来完成这个任务。 1. 创建一个Java项目,并添加Hadoop依赖。 2. 创建一个Java类来实现Mapper接口。在这个类中,我们需要实现map()方法,这个方法将会接收到输入键值对,即每行文本内容和行号。我们需要将文本内容切分成单个单词,并将每个单词作为键,将值设置为1,表示出现次数为1。 ```java public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); context.write(word, one); } } } ``` 3. 创建一个Java类来实现Reducer接口。在这个类中,我们需要实现reduce()方法,这个方法将会接收到键值对列表,每个键值对中的键为单词,值为出现次数。我们需要将每个单词的出现次数加起来,并将结果作为值输出。 ```java public class WordCountReducer 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); } } ``` 4. 在主方法中,我们需要设置Job信息,并将Mapper和Reducer类设置为Job的输入和输出。还需要设置输入文件和输出文件的路径信息。 ```java public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(WordCountMapper.class); job.setCombinerClass(WordCountReducer.class); job.setReducerClass(WordCountReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } ``` 5. 在命令行中运行程序,并指定输入文件和输出文件的路径信息。 ```bash hadoop jar WordCount.jar /input /output ``` 以上就是使用Java API方式的MapReduce的练习,通过这个练习,我们可以更深入地了解MapReduce的实现原理和使用方法,同时也能更好地掌握Hadoop的使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值