当前位置: 首页 > 面试题库 >

简答说一下hadoop的map-reduce编程模型

丘友樵
2023-03-14
本文向大家介绍简答说一下hadoop的map-reduce编程模型相关面试题,主要包含被问及简答说一下hadoop的map-reduce编程模型时的应答技巧和注意事项,需要的朋友参考一下

MapReducer工作过程

  • 首先map task会从本地文件系统读取数据,转换成key-value形式的键值对集合,使用的是hadoop内置的数据类型,比如longwritable、text等;
  • 将键值对集合输入mapper进行业务处理过程,将其转换成需要的key-value在输出之后会进行一个partition分区操作,默认使用的是hashpartitioner,可以通过重写hashpartitioner的getpartition方法来自定义分区规则;
  • 之后会对key进行进行sort排序,grouping分组操作将相同key的value合并分组输出,在这里可以使用自定义的数据类型,重写WritableComparator的Comparator方法来自定义排序规则,重写RawComparator的compara方法来自定义分组规则
  • 之后进行一个combiner归约操作,其实就是一个本地段的reduce预处理,以减小后面shufle和reducer的工作量
  • reduce task会通过网络将各个数据收集进行reduce处理,最后将数据保存或者显示,结束整个join

hadoop架构

  • Namenode:也叫名称节点,是HDFS的守护程序(一个核心程序),对整个分布式文件系统进行总控制,会纪录所有的元数据分布存储的状态信息,比如文件是如何分割成数据块的,以及这些数据块被存储到哪些节点上,还有对内存和I/O进行集中管理,用户首先会访问Namenode,通过该总控节点获取文件分布的状态信息,找到文件分布到了哪些数据节点,然后在和这些节点打交道,把文件拿到。故这是一个核心节点。 不过这是个单点,发生故障将使集群崩溃。

  • Secondary Namenode:辅助名称节点,或者检查点节点,它是监控HDFS状态的辅助后台程序,可以保存名称节点的副本,故每个集群都有一个,它与NameNode进行通讯,定期保存HDFS元数据快照。NameNode故障可以作为备用NameNode使用,目前还不能自动切换。但是功能绝不仅限于此。所谓后备也不是它的主要功能。后续详细解释。

  • DataNode:叫数据节点,每台从服务器节点都运行一个,负责把HDFS数据块读、写到本地文件系统。这三个东西组成了Hadoop平台其中一个支柱——HDFS体系。

  • JobTracker:叫作业跟踪器,运行到主节点(Namenode)上的一个很重要的进程,是MapReduce体系的调度器。用于处理作业(用户提交的代码)的后台程序,决定有哪些文件参与作业的处理,然后把作业切割成为一个个的小task,并把它们分配到所需要的数据所在的子节点。 Hadoop的原则就是就近运行,数据和程序要在同一个物理节点里,数据在哪里,程序就跑去哪里运行。这个工作是JobTracker做的,监控task,还会重启失败的task(于不同的节点),每个集群只有唯一一个JobTracker,类似单点的nn,位于Master节点(稍后解释Master节点和slave节点)。

  • TaskTracker:叫任务跟踪器,MapReduce体系的最后一个后台进程,位于每个slave节点上,与datanode结合(代码与数据一起的原则),管理各自节点上的task(由jobtracker分配),每个节点只有一个tasktracker,但一个tasktracker可以启动多个JVM,用于并行执行map或reduce任务,它与jobtracker交互通信,可以告知jobtracker子任务完成情况。

  • Master与Slave: Master节点:运行了Namenode、或者Secondary Namenode、或者Jobtracker的节点。还有浏览器(用于观看管理界面),等其它Hadoop工具。Master不是唯一的! Slave节点:运行Tasktracker、Datanode的机器。

     

 类似资料:
  • 本文向大家介绍简答说一下hadoop的map-reduce编程模型?相关面试题,主要包含被问及简答说一下hadoop的map-reduce编程模型?时的应答技巧和注意事项,需要的朋友参考一下 首先map task会从本地文件系统读取数据,转换成key-value形式的键值对集合。 将键值对集合输入mapper进行业务处理过程,将其转换成需要的key-value在输出。 之后会进行一个partiti

  • 本文向大家介绍简单说一下hadoop和spark的shuffle过程相关面试题,主要包含被问及简单说一下hadoop和spark的shuffle过程时的应答技巧和注意事项,需要的朋友参考一下 hadoop:map端保存分片数据,通过网络收集到reduce端 spark:spark的shuffle是在DAGSchedular划分Stage的时候产生的,TaskSchedule要分发Stage到各个w

  • 我是Hadoop新手。我试图根据Apache hadoop站点上给出的示例创建一个hadoop集群。 然而,当我运行map reduce示例时,应用程序卡在map 100%和reduce 0%。 请帮忙 我已经设置了使用Vagrant和Virtual Box的环境。创建了两个实例。 yarn-site.xml

  • map/reduce/filter 是 Python 中较为常用的内建高阶函数,它们为函数式编程提供了不少便利。 map map 函数的使用形式如下: map(function, sequence) 解释:对 sequence 中的 item 依次执行 function(item),并将结果组成一个 List 返回,也就是: [function(item1), function(item2), f

  • 问题内容: 谁能指出我一个简单的Java开源Map / Reduce框架/ API?似乎没有太多证据表明存在这种事物,但是其他人可能知道不同。 我所能找到的最好的当然是HadoopMapReduce,但这不符合“简单”标准。我不需要运行分布式作业的能力,仅需要让我使用标准Java5风格的并发性在单个JVM中的多核计算机上运行映射/简化样式的作业。 写自己不​​是一件难事,但我宁愿不必这样做。 问题

  • 如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大概明白map/reduce的概念。 map 举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个数组[1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map实现如下: 由于map()方法定义在JavaSc