zoukankan      html  css  js  c++  java
  • mapreduce测试题

    1请写出Mapper类中的run()方法中的三个方法的执行顺序以及执行次数

    1 setup(context) 加载环境初始化 1

    2 map() 执行map方法 等于行数

    3 clearnup() map的全局输出 1

    2 统计mapper端的种类,是在mappre端还是在reduce端统计?

    记录map或者reduce的信息条数,可以持续化输出到操作以及所在机器的数据库, 用来生成报表记录处理的信息来源的情况。

    默认120种?不建议设置太大,会影响application master性能

    拿到结果后可以持久化的输出到数据库

    3 mapreduce任务的map输出类型是由什么确定的

    默认的mapper是IdentityMapper,默认的reducer是IdentityReducer,它们将输入的键和值原封不动地写到输出中。 默认的partitioner是HashPartitinoer,它根据每条记录的键进行哈希操作来分区。

    参考

    4 已知输入目录有三个文件夹和文件大小,hdfs大小为32m,请问会产生几个mapper对象

    word1.txt 4m

    word2.txt 4m

    word3.txt 98m

    5个

    5 mapreduce为什么要排序

    问题:shffle为什么要排序?|| 我理解错了???

    shuffle要排序是为了在shuffle阶段的排序降低reduce阶段的内存使用量

    因为reduce阶段(应该是在shuffle后期???reeduce接收数据之前???)要分组,将key相同的放在一起进行规约: 使用了一种数据结构(HashMap)和一种排序算法(quicksort??吗)如果在reduce阶段执行就 太消耗内存了 ,而map阶段的输出是要溢写到磁盘上的,在磁盘中的可以忽略算法的空间复杂度(因为存储容量够大???),而换取时间复杂度(快?) 所以 map端排序(shuffle)是为了减轻reduce端的排序压力。

    参考1 参考2 参考3

    6 如果有两个reduce 一个maptask会产生多少个分区?如何实现哪个数据放在哪个分区

    2个

    通过hash的方式

    7 说说对mapreduce中数据倾斜的理解,以及如何解决,

    reduce拉取的数据分布不均匀造成大量数据热点,

    hadoop计算框架的特性:不怕数据大,但是怕数据倾斜,job数比较多的时候 作业运行下效率低,如子查询较多。 不会发生数据倾斜的情况:sum count max min 会发生数据倾斜的情况:group by count(dicstict)小表关联大表(???)

    优化办法

    重写partition类(==重置hash值????)???

    取hash值时加入随机数或者设置序列

    其他请参考

    参考1 参考2

    8 mapreduce的shuffle过程是从哪里到哪里

    (map的出口,reduce的入口)

    9 combine的理解

    1.Combiner是MR程序中Mapper和Reduce之外的一种组件

    2.Combiner组件的父类就是Reducer

    3.Combiner和Reducer之间的区别在于运行的位置

    4.Reducer是每一个接收全局的Map Task 所输出的结果

    5.Combiner是在MapTask的节点中运行

    参考

    10 请问下面代码设置的压缩格式生效吗, 为什么

    Configuration conf = getConf();

    Job job = Job.getInstance(conf, "wordcount");

    job.getConfiguration().set("mapreduce.map.output.compress", "true");

    job.getConfiguration("mapreduce.map.output.compress.codec", SnappyCodec.class.getName());

    ....

    job.waitForCompletion()

    生效 ???

    11 mapreduce中的Configuration 对象有什么作用

    Configuration 是hadoop五大组件(???)的公用类,所以放在了core下,这个类是作业的配置信息类, 任何作业的配置信息必须通过Configuration传递,因为通过Configuratiaon可以实现多个map 与多个reducer任务之间的共享信息。

    参考
  • 相关阅读:
    JAVA-初步认识-第七章-static关键字-数据共享
    JAVA-初步认识-第七章-this关键字应用
    JAVA-初步认识-第七章-this关键字的使用场景二和细节
    JAVA-初步认识-第七章-this关键字的使用场景和原理图解
    未能找到Microsoft.Office.Core.MsoTriState的引用
    Windows Server 2012 FTP配置 后客户机一直登录不上
    ArcEngine 不能再打开其他表了
    CreateFeatureClass 异常,尝试读取或写入受保护的内存 Access
    ArcEngine开发异常:无当前记录
    一个文科妹子的前端悲欢编程之路
  • 原文地址:https://www.cnblogs.com/xido/p/13862333.html
Copyright © 2011-2022 走看看