首页 > 其他分享 >MapReduce思考问题

MapReduce思考问题

时间:2024-05-15 19:58:39浏览次数:8  
标签:map shuffle 思考问题 reduce MapReduce split 排序

MapReduce思考问题(每一个都算面试题)

Q1、map数量数越多越好吗?

不是,因为产生map任务是需要资源和时间,map任务越多,占用的资源和时间越多

Q2、hdfs是否适合存储小文件(MR角度出发)

不适合,小文件一多,意味着block块就多了,切片split也就多了,这样产生的map数量也就多了起来

Q3、split和map的关系

split的大小默认和block大小一致,如果想要减少map任务,就要将split切片大小调大,反之就调小

Q4、split大小可以随意调整吗?

split切片大小理论上来说调多大都可以,但是官方建议是128的整倍数,为了防止跨界点存储数据,加大网络消耗带宽,增加读取数据时间

Q5、map的数量一定是与split切片数量一致吗?

如果最后两个split切片实际大小加起来没有超过128M*1.1,那么会被读取到一个map任务中进行操作,如果超过的话,就分为两个map任务读取数据进行操作

Q6、map以什么样的格式读取数据

默认情况下读取文件中的一行数据,将这一行数据封装成一个键值对读取进来,键值对的默认类型是<LongWritable,Text>,LongWritable代表的是行开始索引,Text代表的是一行数据

Q7、 reduce默认的个数可以调整吗?

可以调整,默认mr只提供一个reduce,但是将来可以在代码中或者集群配置文件中设置reduce的个数

Q8、reduce的个数会带来什么影响

a、有几个reduce最终就会产生几个结果文件
b、reduce的数量会影响数据在环形缓冲区的分区编号的计算
c、reduce的数量也会影响整体的执行速度和效率

Q9、reduce干了什么

reduce主要是先从map中的结果文件中的对应数据拉取过来,去除编号后,对拉取到的小文件进行归并排序,执行reduce逻辑

针对整个MapReduce整个流程的思考

Q1、map的数量可以通过配置文件设置吗?

map的数量不能直接进行设置,但是可以设置splt切片的大小来影响map的数量

Q2、整个MapReduce过程中,经历了几次排序,分别是?

过程中总共经历了三次排序,分别是一次快速排序和两次归并排序,快速排序发生在环形缓冲区内部排序之后,第一次归并排序是是在环形缓冲区溢写完小文件之后,新进程将小文件进行归并排序生成map任务结果文件,第二次归并排序是在reduce拉取完每个map任务结果文件之后对这些拉取的数据进行归并排序

Q3、MapReduce中的shuffle阶段是哪几个阶段(请你说一说MapReduce中的shuffle阶段)

shuffle并不是官方定义的,是人为定义的一种阶段,是从map进入到环形缓冲区的时候到执行reduce任务之前这个阶段(也就是图中的红色虚线框这一部分)
还有一种shuffle阶段划分,map阶段shuffle和reduce阶段shuffle:
map阶段shuffle就是在map进入环形缓冲区之后到redue进行拉取之前这个阶段
reduce阶段shuffle是在reduce拉取数据到执行reduce执行任务之前整个阶段

MapReduce流程

标签:map,shuffle,思考问题,reduce,MapReduce,split,排序
From: https://www.cnblogs.com/peculiar/p/18194593

相关文章

  • MapReduce流程
    MapReduce流程将文件上传到HDFS中,默认每128M切分为一个block块,MapReduce会对数据进行逻辑上的切片(split),并不是实际上的切分,默认与block块的大小一致为128M,根据split切分产生map任务,切片越多产生的map任务就越多,map默认每次读取一行数据,map阶段产生的数据会进入环形缓冲区中(基于......
  • 基于Python实现MapReduce
    一、什么是MapReduce首先,将这个单词分解为Map、Reduce。Map阶段:在这个阶段,输入数据集被分割成小块,并由多个Map任务处理。每个Map任务将输入数据映射为一系列(key,value)对,并生成中间结果。Reduce阶段:在这个阶段,中间结果被重新分组和排序,以便相同key的中间结果被传递到同一个R......
  • Hive中sql语句是如何转换成MapReduce的(面试题)
    Hive中的sql语句是如何转化成MR任务的(面试)元数据存储在数据库中,默认存在自己自带的derby数据库中(derby在Hive启用的时候会占用元数据库,且数据不会共享给客户端,所以1一次只能有一个客户端使用,开了另一个客户端就会连接不上)1)、解析器(SQLParser):将SQL字符串转换成抽象语法树AST(3.......
  • MapReduce介绍
    MapReduce是一种编程模型,用于大规模数据集(多达数十亿个数据项)的并行处理。它由Google开发,用于简化大量数据的处理,特别是分布式系统中的数据。MapReduce模型的核心思想是将大型计算分解成多个小块,这些小块可以并行执行。它主要包括两个步骤:Map和Reduce。MapReduce的工作流程......
  • MIT6824 MapReduce总结
    MapReduce是一个分布式大任务计算框架,旨在可以方便Google内部的将大型任务拆分到集群环境下,以得到并行化的处理速度。在分布式情况下,多台机器协作完成一个大型任务需要考虑很多问题:整个分布式系统中都有哪些角色?可以预见的就是肯定有任务的拆分者负责拆分调度任务,有任务的实际......
  • MapReduce:简化集群上的大数据处理.18139822
    本文是论文《MapReduce:SimplifiedDataProcessingonLargeClusters》的翻译。原作者:JeffreyDeanandSanjayGhemawat@Google,Inc.为了刷MIT6.8242021,分布式系统课程,可以去B站看下,也有Lab可以刷概述MapReduce是一个针对处理大数据集的编程模型以及关联实现。用户......
  • sqoop:错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster(已
    1报错信息错误:找不到或无法加载主类org.apache.hadoop.mapreduce.v2.app.MRAppMaster说明:操作将数据库中的数据导入到HDFS中执行sqoopimport --connectjdbc:mysql://aaa01:3306/mysql--usernameroot--passwordroot--tabletest时报了以下错误2报错截图:......
  • 大数据实验统计-1、Hadoop安装及使用;2、HDFS编程实践;3、HBase编程实践;4、MapReduce编
    大数据实验统计1、Hadoop安装及使用;一.实验内容Hadoop安装使用:1)在PC机上以伪分布式模式安装Hadoop;2)访问Web界面查看Hadoop信息。二.实验目的1、熟悉Hadoop的安装流程。2、熟悉Hadoop访问Web界等基本操作。大数据实验一,Hadoop安装及使用-CSDN博客文章浏览阅读149次,点赞3......
  • 大数据之 MapReduce 相关的 Java API 应用
    注意:本文基于前两篇教程Linux系统CentOS7上搭建HadoopHDFS集群详细步骤YARN集群和MapReduce原理及应用MapReduce是ApacheHadoop项目中的一种编程模型,用于大规模数据集的并行处理。在Hadoop中,MapReduce使用JavaAPI来编写Map和Reduce函数。API简......
  • 6.Hadoop MapReduce
    6.1编辑WordCount.java创建wordcount测试目录 编辑WordCount.java输入下面代码:可以访问https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html查看importjava.io.IOException;importjava.util.String......