MepReduce\Yarn面试题
谦卑t
终身学习
展开
-
MepReduce面试题:我们在开发分布式计算 job 时,是否可以去掉 reduce()阶段?为什么?
可以,例如我们的集群就是为了存储文件而设计的,不涉及到数据的计算,就可以将mapReduce都省掉。去掉之后就不排序了,不进行shuffle操作了。比如,流量运营项目中的行为轨迹增强功能部分。...原创 2018-11-28 18:36:57 · 821 阅读 · 0 评论 -
最近做大数据面试官的感想
时间是不可逆的,我们不可能经历之后,然后再返回来修正自己过去的行为,但是我们可以通过观察不同时间段的相同职业人的现状来修正自己。最近一段时间,浪尖忙于招人面试,在面试别人的过程中收获了很多,我相信被我面试的人也会收获很多。面试者的工作经验有十年以上的,有五六年,还有两三年的,每个年龄段都有自己的优点和缺点(这是句废话,每个人都是优缺点参半,实际上强调的是技术实力的优缺点),在这里,其实我想...转载 2018-12-23 10:42:04 · 621 阅读 · 0 评论 -
MapReducer面试题:编写MapReduce作业时,如何做到在Reduce阶段,先对key排序,再对value排序?
该问题通常称为“二次排序”,最常用的方法是将value放到key中,实现一个组合Key,然后自定义key排序规则(为key实现一个WritableComparable)。原创 2018-11-28 19:09:53 · 788 阅读 · 1 评论 -
Yarn面试题:Yarn作业执行流程
1.用户向 YARN 中提交应用程序,其中包括 MRAppMaster 程序,启动 MRAppMaster 的命令,用户程序等。2.ResourceManager 为该程序分配第一个 Container,并与对应的 NodeManager 通讯,要求它在这个 Container 中启动应用程序 MRAppMaster。3.MRAppMaster 首先向 ResourceManager 注册...原创 2018-11-28 19:07:58 · 2475 阅读 · 1 评论 -
MepReduce面试题:Yarn支持的调度器和硬件资源种类?
Yarn自带的三种资源调度器,分辨是FIFO、Capacity Scheduler 和Fair Scheduler,其中,,FIFO是默认调度器,属于批量处理调度器,而后两个属于多租户调度器,它采用树形多队列的形式组织资源,更适合公司应用场景YARN支持内存和CPU两种资源类型的管理和分配:YARN对内存资源和CPU资源采用了不同的资源隔离方案。对于内存资源,为了能够更灵活的控制内存使用量,YA...原创 2018-11-28 19:01:01 · 985 阅读 · 6 评论 -
MepReduce面试题:MepReduce数据倾斜
利用combiner提前进行reduce,把一个mapper中的相同key进行了聚合,减少shuffle过程中数据量,以及reduce端的计算量。这种方法可以有效的缓解数据倾斜问题,但是如果导致数据倾斜的key大量分布在不同的mapper的时候,这种方法就不是很有效了。局部聚合加全局聚合。即进行两次mapreduce,第一次在map阶段对那些导致了数据倾斜的key 加上1-n的随机前缀,这样之...原创 2018-11-28 18:55:48 · 316 阅读 · 1 评论 -
MepReduce面试题:MapReduce join
1.map join缺点:只适合大小表join优点:不会出现数据倾斜实现:将小表数据加入缓存分发到各个计算节点,按连接关键字建立索引job.addCacheFile(new URI(“xxxxxxx”));job.setNumReduceTasks(0);2.reduce join缺点:会出现数据倾斜...原创 2018-11-28 18:54:29 · 224 阅读 · 0 评论 -
MapReduce面试题:MapReduce如何实现数据的去重?
在map阶段,map方法的输出key也应该是数据,value 任意值都可以。而map的输入key和value 是已知的,key为每行文本首地址相对于整个文本首地址的偏移量,value 是每行文本,因此在map方法从输入到输出的过程中,只需要将输入的value 赋给输出的key即可。 在mapreduce整个框架下,在map输出和reduce输入之间还有一个shuffule过程,这个是系统自...原创 2018-11-28 18:34:30 · 925 阅读 · 0 评论 -
MapReduc面试题:MapReduce的流程
Map端:1:读取输入文件的内容,并解析成键值对(<key, value>)的形式,输入文件中的每一行被解析成一个<key, value>对,每个<key, value>对调用一次map()函数。2:用户写map()函数,对输入的<key,value>对进行处理,并输出新的<key,value&a原创 2018-11-28 17:30:47 · 532 阅读 · 1 评论 -
MepReduce面试题:如何决定一个job中需要多少个maptask和reducetask?
如何决定一个job中需要多少个maptask和reducetask?一、影响map个数,即split个数的因素主要有:1)HDFS块的大小,即HDFS中dfs.block.size的值。如果有一个输入文件为1024m,当块为256m时,会被划分为4个split;当块为128m时,会被划分为8个split。2)文件的大小。当块为128m时,如果输入文件为128m,会被划分为1个split;当块...原创 2018-11-28 15:54:05 · 3142 阅读 · 1 评论 -
MepReduce面试题:MapReduce中排序发生在哪几个阶段?这些排序是否可以避免?为什么?
1.map最后阶段进行partition分区,一般使用job.setPartitionerClass设置的类,如果没有自定义Key的hashCode()方法进行分区。在map阶段写出到环形缓冲区,在环形缓冲区溢写时会进行一次排序,每个分区内部调用job.setSortComparatorClass设置的key的比较函数类进行排序,如果没有则使用Key的实现的compareTo方法。 2.在...原创 2018-11-28 18:43:20 · 4428 阅读 · 0 评论