MapReduce相关问题_飞少fly的博客-程序员宅基地

技术标签: mapreduce  hadoop  MapReduce  

1.在高阶数据处理中,往往无法把整个流程写在单个MapReduce作业中,下列关于链接MapReduce作业的说法,不正确的是?()答案:A
A.

ChainReducer.addMapper()方法中,一般对键/值对发送设置成值传递,性能好且安全性高 


B.使用ChainReducer时,每个mapper和reducer对象都有一个本地JobConf对象 


C.ChainMapper和ChainReducer类可以用来简化数据预处理和后处理的构成


D.Job和JobControl类可以管理非线性作业之间的依赖 

3.下列关于HDFS为存储MapReduce并行切分和处理的数据做的设计,错误的是 答案:B

(知识点:每个分片不能太小,否则启动与停止各个分片处理所需的开销将占很大一部分执行时间


A.FSDataInputStream扩展了DataInputStream以支持随机读


B.为实现细粒度并行,输入分片(Input Split)应该越小越好


C.一台机器可能被指派从输入文件的任意位置开始处理一个分片


D.输入分片是一种记录的逻辑划分,而HDFS数据块是对输入数据的物理分割

4.MapReduce框架提供了一种序列化键/值对的方法,支持这种序列化的类能够在Map和Reduce过程中充当键或值,以下说法错误的是  答案:C


A.实现Writable接口的类是值


B.实现WritableComparable接口的类可以是值或键


C.Hadoop的基本类型Text并不实现WritableComparable接口


D.键和值的数据类型可以超出Hadoop自身支持的基本类型

5.关于 mapreduce 执行过程,说法错误的是(B )

A.Reduce 大致分为 copy、sort、reduce 三个阶段

B.数据从环形缓冲区溢出时会进行分区的操作

C.Reduce默认只进行内存到磁盘和磁盘到磁盘合并

D.shuffle指的是map输出之后到reduce输入之前


9.MapReduce编程模型中以下组件哪个是最后执行的? 

A、Mapper

B、Partitioner

C、Reducer

D、RecordReader


答案:C
解答:以上这四个MapReduce编程模型中的执行顺序是:recordReader -->  mapper --> partitioner --> reducer

10.在MapReduce中,哪个组件是用户不指定也不会有默认的? 

A、Combiner

B、OutputFormat 

C、Partitioner 

D、InputFormat


答案:A
解答:在MapReduce编程模型中,Combiner是可有可无的组件,它的作用就是用来给mapTask的结果数据做局部合并以减少reduceTask接收的数据量,以减少网络数据传输。OutputFormat的默认组件是TextOutputFormat,InputFormat的默认组件是TextInputFormat,Partitioner的默认实现是HashPartitioner


11.下列关于使用MapReduce编程模型实现SQL中的join操作错误的是?
A、ReduceJoin可以实现内链接,也能实现各种外连接

B、ReduceJoin的join操作是在MapReduce程序中的reducer阶段完成的

C、MapJoin也适合各种join场景,也能实现内连接和各种外链接

D、MapJoin不会产生数据倾斜


答案:C
解答:MapJoin和ReduceJoin,顾名思义,就是mapper阶段完成join操作叫MapJoin,在reducer阶段完成join操作叫ReduceJoin,reduceJoin能够实现一到多个条件的各种等值链接,但是不能实现非等值连接,因为太困难。并且容易出现数据倾斜的情况,所以,出现MapJoin,因为能省掉reducer阶段,所以能完美避免数据倾斜,但是由于该机制的特性,只适合用来做大表和小表数据之间的链接。


12.下列哪种业务场景中,不适合使用Combiner的是哪种操作?

A、sum求和

B、max求最大值

C、count求计数

D、avg求平均


答案:D
解答:在不更改reducer业务逻辑的情况,以上四种,只有avg求平均是不能直接使用reducer充当combiner的。最终会造成业务结果不正确


13.一个MapReduce程序中的MapTask的个数由什么决定?

A、输入的总文件数

B、客户端程序设置的mapTask的个数

C、FileInputFormat.getSplits(JobContext job)计算出的逻辑切片的数量

D、输入的总文件大小/数据块大小
答案:C

解答:MapReduce编程模型中的mapTask的并行度决定机制是由:FileInputFormat.getSplits(JobContext job)决定的。该方法的返回值是List<InputSplit> splits,这个结果集合中的每个InputSplit就是一个逻辑输入切片,每个逻辑输入切片在默认情况下是会要启动一个mapTask任务进行计算的。


14.以下关于新旧 MapReduce API 的描述错误的是?

A、新API放在org.apache.hadoop.mapreduce包中,而旧API则是放在org.apache.hadoop.mapred中 

B、新API倾向于使用接口方式,而旧API倾向于使用抽象类 

C、新API使用Configuration,而旧API使用JobConf来传递配置信息 

D、新API可以使用Job对象来提交作业


答案:B
解答:在新API中,原来的大量接口都被改成了抽象类。所以使用新API编写MR程序时,都是由实现接口变成集成抽象类。

15.以下描述错误的是?

A、输入分片InputSplit其实是对数据的引用 

B、MultipleInputs可以设置多个数据源以及它们对应的输入格式 

C、可以通过重载isSplitable()方法来避免文件分片 

D、ReduceTask需要等到所有的map输出都复制完才进行Merge


答案:D
解答:ReduceTask在mapper阶段的所有mapTask还没有执行完毕的时候,就会预先启动,然后去已经执行完毕的mapTask节点拉取该reduceTask要执行的数据,执行预先合并。而不是等到所有的mapTask都执行完毕之后才开启reduceTask拉取文件进行merge操作

16.以下哪个组件可以指定对key进行Reduce分发的策略?

A、RecordReader 

B、Combiner 

C、Partitioner 

D、FileInputFormat


答案:C
解答:Partitioner组件就是负责给mapTask节点输出的数据进行分发的。 默认的实现是HashParitioner

17.MapReduce框架提供了一种序列化机制,支持这种序列化的类能够在Map和Reduce过程中充当键或值,以下说法错误的是?
A、实现Writable接口的类是值

B、实现WritableComparable<T>接口的类可以是值或键  

C、Hadoop的基本类型Text并不实现WritableComparable<T>接口  

D、键和值的数据类型可以超出Hadoop自身支持的基本类型


答案:A
解答:Hadoop中的基本类型和包装类型都有可能作为MapReduce编程中的key和value,所以都必须要进行序列化,都要事先Writable,如果作为key,那就必须实现WritableComparable接口。Text类也是实现了WritableComparable这个接口的

19.有关MapReduce的输入输出,说法错误的是?

A、链接多个MapReduce作业时,序列文件是首选格式  

B、FileInputFormat中实现的getSplits()可以把输入数据划分为分片,分片数目和大小任意定义  

C、想完全禁止输出,可以使用NullOutputFormat  

D、每个reduce需将它的输出写入自己的文件中,输出无需分片
答案:B


解答:FileInputFormat的分片大小是可以任意设置,可以调整的,输入分片数目不可以随意设置,是根据分片大小和文件计算出来的。

----------------------------------------------------------------------------------------------------------------

MapReduce可以高效的处理迭代计算()
combiner是在map端做一次局部reduce操作()
每个maptask和reducetask都是一个线程()
map阶段中k1,v1中的k1代表什么()
A.文件内容
B.文件名
C.偏移量
mapreduce默认分几个阶段()
A.4
B.5
C.6
D.7
2.有关MapReduce的输入输出,说法错误的是  答案:B

(知识点:分片数目在numSplits中限定,分片大小必须大于mapred.min.size个字节,但小于文件系统的块)


A.链接多个MapReduce作业时,序列文件是首选格式


B.FileInputFormat中实现的getSplits()可以把输入数据划分为分片,分片数目和大小任意定义


C.想完全禁止输出,可以使用NullOutputFormat


D.每个reduce需将它的输出写入自己的文件中,输出无需分片
 
6.在Mapreduce中定义的 InputFormat中,默认是哪一个?(  A    )


A.TextInputFormat 
B.KeyValueInputFormat 
C.SequenceFileInputFormat

7.MapReduce的Shuffle过程中哪个操作是最后做的? 

A.溢写

B.分区

C.排序 

D.合并
答案:D


解答:MapReduce编程模型分为Mapper和Reducer阶段,在mapper和reducer的中间还有一个shuffle阶段。但是Shuffle也分为MapperShuffle和ReducerShuffler两个阶段。这个Shuffle非常的重要,而且也是导致MapReduce执行效率低的一个重要原因。shuflle中的执行顺序是先分区,然后在溢写之前进行排序,最后溢出的多个磁盘文件会进行合并成一个大文件。

8.下面关于MapReduce的描述中正确的是?

A.MapReduce程序必须包含Mapper和Reducer 

B.MapReduce程序的MapTask可以任意指定

C.MapReduce程序的ReduceTask可以任意指定  

D.MapReduce程序的默认数据读取组件是TextInputFormat
答案:D


解答:MapReducer编程模型中,可以没有Reducer,MapTask是由逻辑切片规则决定,虽然可以通过参数进行调整,但是不能随意设置,reduceTask数量可以随意设置,但是通常都是和业务挂钩,所以也基本做不到随心所欲的设置,除非是HashPartitioner的分区器。MapReduce编程模型中的默认数据读取组件是TextInputFormat和LineRecordReader

18.执行一个job,如果这个job的输出路径已经存在,那么程序会?
A.覆盖这个输出路径 
B.抛出警告,但是能够继续执行 
C.抛出一个异常,然后退出 
D.创建一个新的输出路径
答案:C
解答:MapReduce编程模型中的输出目录必须是不存在的目录。否则程序抛出异常,并且退出运行。

----------------------------------------------------------------------------------------------------------------

1.下列关于HDFS为存储MapReduce并行切分和处理的数据做的设计,错误的是
A.FSDataInputStream扩展了DataInputStream以支持随机读


B.为实现细粒度并行,输入分片(Input Split)应该越小越好


C.一台机器可能被指派从输入文件的任意位置开始处理一个分片


D.输入分片是一种记录的逻辑划分,而HDFS数据块是对输入数据的物理分割
答案:B
知识点:每个分片不能太小,否则启动与停止各个分片处理所需的开销将占很大一部分执行时间


2.MapReduce编程模型中以下组件哪个是最后执行的? 

A.Mapper

B.Partitioner

C.Reducer

D.RecordReader


答案:C
以上这四个MapReduce编程模型中的执行顺序是:recordReader -->  mapper --> partitioner --> reducer


3.在MapReduce中,哪个组件是用户不指定也不会有默认的? 

A.Combiner

B.OutputFormat 

C.Partitioner 

D.InputFormat
答案:A


在MapReduce编程模型中,Combiner是可有可无的组件,它的作用就是用来给mapTask的结果数据做局部合并以减少reduceTask接收的数据量,以减少网络数据传输。OutputFormat的默认组件是TextOutputFormat,InputFormat的默认组件是TextInputFormat,Partitioner的默认实现是HashPartitioner


4.下列关于使用MapReduce编程模型实现SQL中的join操作错误的是?
A.ReduceJoin可以实现内链接,也能实现各种外连接

B.ReduceJoin的join操作是在MapReduce程序中的reducer阶段完成的

C.MapJoin也适合各种join场景,也能实现内连接和各种外链接

D.MapJoin不会产生数据倾斜


答案:C
解答:MapJoin和ReduceJoin,顾名思义,就是mapper阶段完成join操作叫MapJoin,在reducer阶段完成join操作叫ReduceJoin,reduceJoin能够实现一到多个条件的各种等值链接,但是不能实现非等值连接,因为太困难。并且容易出现数据倾斜的情况,所以,出现MapJoin,因为能省掉reducer阶段,所以能完美避免数据倾斜,但是由于该机制的特性,只适合用来做大表和小表数据之间的链接。

5.一个MapReduce程序中的MapTask的个数由什么决定?

A.输入的总文件数

B.客户端程序设置的mapTask的个数

C.FileInputFormat.getSplits(JobContext job)计算出的逻辑切片的数量

D.输入的总文件大小/数据块大小
答案:C
MapReduce编程模型中的mapTask的并行度决定机制是由:FileInputFormat.getSplits(JobContext job)决定的。该方法的返回值是List<InputSplit> splits,这个结果集合中的每个InputSplit就是一个逻辑输入切片,每个逻辑输入切片在默认情况下是会要启动一个mapTask任务进行计算的。

6.以下描述错误的是?

A.输入分片InputSplit其实是对数据的引用 

B.MultipleInputs可以设置多个数据源以及它们对应的输入格式 

C.可以通过重载isSplitable()方法来避免文件分片 

D.ReduceTask需要等到所有的map输出都复制完才进行Merge


答案:D
解答:ReduceTask在mapper阶段的所有mapTask还没有执行完毕的时候,就会预先启动,然后去已经执行完毕的mapTask节点拉取该reduceTask要执行的数据,执行预先合并。而不是等到所有的mapTask都执行完毕之后才开启reduceTask拉取文件进行merge操作

7.以下哪个组件可以指定对key进行Reduce分发的策略?

A.RecordReader 

B.Combiner 

C.Partitioner 

D.FileInputFormat


答案:C
解答:Partitioner组件就是负责给mapTask节点输出的数据进行分发的。 默认的实现是HashParitioner

8.MapReduce框架提供了一种序列化机制,支持这种序列化的类能够在Map和Reduce过程中充当键或值,以下说法错误的是?
A.实现Writable接口的类是值

B.实现WritableComparable<T>接口的类可以是值或键  

C.Hadoop的基本类型Text并不实现WritableComparable<T>接口  

D.键和值的数据类型可以超出Hadoop自身支持的基本类型


答案:A
解答:Hadoop中的基本类型和包装类型都有可能作为MapReduce编程中的key和value,所以都必须要进行序列化,都要事先Writable,如果作为key,那就必须实现WritableComparable接口。Text类也是实现了WritableComparable这个接口的

9.MapReduce做二次排序是要对什么内容进行排序
A.对文件名进行排序
B.对key进行再次排序
C.对分区进行排序
D.对key进行排序
答案:D
解答:MapReduce默认的只对key进行排序,二次排序的目的就是为了让value也变得有序

10.下列哪种业务场景中,不适合使用Combiner的是哪种操作?

A.sum求和

B.max求最大值

C.count求计数

D.avg求平均


答案:D
解答:使用Combiner的前提是不能对最终的输出结果造成影响,比如我们求(0, 20, 10, 25, 15)的平均值应该是为14,但是如果在map端先进行一次Combiner操作会造成(0,20,10)的平均值是10,(25,15)的平均值是20,最终汇总(10,20)的平均值是15。这样就造成了结果错误
 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35400008/article/details/106438730

智能推荐

COMPSCI230 Assignment 2 – Trace File Viewer_weixin_30393907的博客-程序员宅基地

COMPSCI230 Assignment 2 – Trace File ViewerLearning outcomes of this assignmentIn completing this assignment, you will gain experience in: Designing the class structure for a Java GUI application with...

luo3372线段树模板的分块做法_weixin_30408675的博客-程序员宅基地

题目大意请你维护一个有n个元素的整数序列,要求支持区间查询&amp;区间修改对于100%的数据,\(1&lt;=n&lt;=10^5\)分析正常做法是线段树维护区间修改、区间查询,今天我要讲的是一种暴力做法:分块分块的思想并不复杂,分块把一个长度为n的区间分成num段,操作时如果是整段用标记修改,不是整段的部分暴力修改分析时间复杂度:在这题中,每段的标记修改是\(O(1)\)的,最多有...

oracle数据库12528,解决(Oracle)ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接 问题..._ManUtd孙泽宇的博客-程序员宅基地

洋名字叫:ORA-12528: TNS:listener: all appropriate instances are blocking new connections通过在CMD下用lsnrctl status 查看出的问题。Listening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=lypch)(PORT=15...

ios 内购正式环境_iOS内购集成_weixin_39900531的博客-程序员宅基地

In-App Purchase:应用内购买服务,简称IAP。是苹果为App内的虚拟商品和服务的交易定制的系统。所谓应用内购买,是指在操作虚拟商品交易的时候,不允许使用类似微信/支付宝/Apple Pay第三方支付手段,如果通过另类方式避开的话,会被下架。配置内购信息创建商品类型消耗型:使用一次并耗尽,可以重复购买。类似于宝箱,武器皮肤非消耗型:只需购买一次,不会过期。类似于地图,电子书自动续期订阅...

npm run dev报错解决方案_One玛玛小王子的博客-程序员宅基地

npm run dev报错解决方案个人问题仅供参考:使用npm run dev 运行,出现如下错误 :Failed to compile../src/styles/index.scss(./node_modules/css-loader??ref–11-1!./node_modules/postcss-loader/lib??ref–11-2!./node_modules/sass-loader/lib/loader.js??ref–11-3!./src/styles/index.scss)M

gdb调试多进程程序_Michael-H的博客-程序员宅基地

 1.gdb下调试多进程程序只需要以下几条命令即可            除此之外还可以查看正在调试的进程 info inferiors, 同时也可以将当前正在调试的进程切换到另外一个进程中让其取运行    2.代码调试演示#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;unistd.h&gt;void...

随便推点

[C] 提取 URL 中的 domain_FeatureOverload的博客-程序员宅基地_url的domain

[C] 提取 URL 中的 domain一个简单实现,仅供参考。如果只是要提取 domain 来比较,并且放宽条件的话,可以直接使用 strstr(URL, domain) 即可。从开源成熟的代码中拿出“提取 URL 中的 domain” 方案可能代码更健壮,但是因为本人经验有限,不清楚从哪里找到,所幸这个功能不是很复杂,我的场景要求也不高,所以简单自己实现了一份 solution。如...

书单 | 速看,你不知道的大前端世界!_bobo79888的博客-程序员宅基地_大前端读书

《大前端入门指南》▲▲▲任玉刚 等 著从目前的形势来看,大前端的概念越来越火热了,但什么是大前端,如何学习大前端,很多人都不甚了解。大前端到底是什么呢?直接来说,大前端就是所有前端的统称。《大前端入门指南》是一本大前端入门书籍,对大前端技术栈进行了全面的讲解,内容涉及HTML/CSS、JavaScript、React Native、Flu...

Nginx 整合 FastDFS 实现文件服务器_哈喽沃德先生的博客-程序员宅基地

上一篇文章《FastDFS 分布式文件系统详解》中带大家详细了解它的核心概念,架构体系及 FastDFS 环境的搭建与使用。但是此时还无法通过 HTTP 对文件进行访问,这篇文章将带大家解决这个问题。如果我们想通过 HTTP 访问 FastDFS 中保存的图片信息,需要借助其他工具实现,Nginx 就是一个不错的选择,它是一个高性能的 HTTP 和反向代理 Web 服务器。关于 Nginx 更多的内容请阅读《一篇文章搞定 Nginx 反向代理与负载均衡》。那么问题来了:既然文件都上传至 Stora

centos安装mysql5.6tar_CentOS-6.4安装MySQL-5.6_夏天的火苗的博客-程序员宅基地

下面介绍下在CentOS-6.4安装MySQL-5.6.14。[1]下载源码包[[email protected] ~]# http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.14.tar.gz[2]必要软件包[[email protected] ~]# yum -y install gcc gcc-c++ gcc-g77 autoconf automake zli...

PDF中的图片怎么设置透明度_cocowei0306的博客-程序员宅基地

我们都知道PDF文档修改起来比较难,尤其是图文的PDF要修改其中的图片更难,比如要重新设置文档中的图片透明度要怎么操作呢?首先下载并安装极速PDF编辑器后,双击运行软件,并打开需要修改的PDF文档。先选择编辑器菜单栏中的“对象工具”后,单击图片即可选中然后进行其他修改的操作。修改图片透明度可以通过以下2种方式进行设置:方式1:选中图片后右击并选择“透明度”进入下一步;在设置窗口直接输入透明度百分比或者通过左右拖动滑动条来调整即可。方式2:可以在选中图片后,点击编辑器右上角“对象”功能中的

android嵌入前端,Flutter与Android的混合开发(1)如何在现有Android项目里嵌入Flutter Module..._weixin_39945679的博客-程序员宅基地

全部源码已上传github1.如何在现有Android项目里嵌入Flutter Module1. 用Android Studio新建一个Android项目,我们起名叫hyBridAndroid2. 然后关闭项目,创建一个新目录,这里我们起名叫HyBrid然后在HyBrid目录下执行命令flutter create -t module flutter_lib(注意这里只能命令行创建,Android ...

推荐文章

热门文章

相关标签