最新要闻
- 素描鼻子的画法(素描鼻子)
- 马斯克:决斗可能约在斗兽场 需要锻炼一下我的耐力
- 世界今头条!湖南遇特大暴雨:市民街头抱团互救 防灾减灾进行时
- 当前时讯:中国创纪录一箭41星揭秘:印度一箭104星弱爆了
- 小学毕业典礼多名学生疑因天热晕倒 学校:当天多云 孩子因低血糖出现状况|速看料
- 3499元 优派新款便携显示器上架:4K OLED屏-环球快报
- 快讯:科普书单·新书|动物园开饭啦
- 月销2.1万辆 大众速腾彻底爆发 反超丰田卡罗拉
- 焦点要闻:胖东来老板称企业家要活得像人:要对得起自己的人生
- 夏季用电高峰来袭 你家能不断电 北斗立大功了
- 18叶双环扇叶:云米电风扇79元起大促(90元大额券)
- 佳能晒出EOS系列里程碑:累积产量已达1.1亿台
- 保利联合:上半年净利润预计盈利5560万元–7522万元
- 天天微头条丨6月总票房破40亿!国产悬疑片《消失的她》16亿票房第一:你贡献几张票?
- 称孩子报新闻学就打晕!大学新闻教授称张雪峰的话不无道理
- 天际汽车停工停产 被发动机厂商起诉“还钱”
手机
光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯
搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注
- 光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯
- 搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注
- 视点!美国首位女总统即将诞生?拜登恐怕要提前下岗,美政坛迎来变局?
- 当前速递!用理想仪器实现更好的颗粒 德国新帕泰克亮相CPHI & PMEC China获好评
- 微粒贷怎么申请开通 开通方法如下
- 焦点简讯:心疼!这位40岁的云南缉毒警,已是满头白发
家电
大数据面试题集锦-Hadoop面试题(三)-MapReduce-每日看点
目录你准备好面试了吗?这里有一些面试中可能会问到的问题以及相对应的答案。如果你需要更多的面试经验和面试题,关注一下"张飞的猪大数据分享"吧,公众号会不定时的分享相关的知识和资料。
- 1、谈谈Hadoop序列化和反序列化及自定义bean对象实现序列化?
- 2、FileInputFormat切片机制
- 3、在一个Hadoop 任务中,什么是InputSplit(切片),以及切片是用来做什么的,切片与block有什么区别?
- 4、如何判定一个job的map和reduce的数量?
- 5、 Maptask的个数由什么决定?
- 6、MapTask和ReduceTask工作机制或工作原理
- 7、描述mapReduce有几种排序及排序发生的阶段
- 8、描述mapReduce中shuffle阶段的工作流程,如何优化shuffle阶段
- 9、描述mapReduce中combiner的作用是什么,一般使用情景,以及和reduce的区别?
- 10、如果没有定义partitioner,那数据在被送达reducer前是如何被分区的?
- 11、MapReduce 出现单点负载多大,怎么负载平衡?
- 12、MapReduce 怎么实现 TopN?
- 13、Hadoop的缓存机制(Distributedcache)是怎么样的?
- 14、mapReduce如何实现两个表的join?
- 15、什么样的计算不适用mr来提速?
- 16、更多大数据面试集锦
1、谈谈Hadoop序列化和反序列化及自定义bean对象实现序列化?
1)序列化和反序列化 (1)序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储(持久化)和网络传输。 (2)反序列化就是将收到字节序列(或其他数据传输协议)或者是硬盘的持久化数据,转换成内存中的对象。 (3)Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,header,继承体系等),不便于在网络中高效传输。所以,hadoop自己开发了一套序列化机制(Writable),精简、高效。
(相关资料图)
2)自定义bean对象要想序列化传输步骤及注意事项:
(1)必须实现Writable接口 (2)反序列化时,需要反射调用空参构造函数,所以必须有空参构造 (3)重写序列化方法 (4)重写反序列化方法 (5)注意反序列化的顺序和序列化的顺序完全一致 (6)要想把结果显示在文件中,需要重写toString(),且用"\t"分开,方便后续用 (7)如果需要将自定义的bean放在key中传输,则还需要实现comparable接口,因为mapreduce框中的shuffle过程一定会对key进行排序
2、FileInputFormat切片机制
job提交流程源码详解
waitForCompletion() submit(); // 1、建立连接 connect(); // 1)创建提交job的代理 new Cluster(getConfiguration()); // (1)判断是本地yarn还是远程 initialize(jobTrackAddr, conf); // 2、提交job submitter.submitJobInternal(Job.this, cluster) // 1)创建给集群提交数据的Stag路径 Path jobStagingArea = JobSubmissionFiles.getStagingDir(cluster, conf); // 2)获取jobid ,并创建job路径 JobID jobId = submitClient.getNewJobID(); // 3)拷贝jar包到集群 copyAndConfigureFiles(job, submitJobDir); rUploader.uploadFiles(job, jobSubmitDir); // 4)计算切片,生成切片规划文件 writeSplits(job, submitJobDir); maps = writeNewSplits(job, jobSubmitDir); input.getSplits(job); // 5)向Stag路径写xml配置文件 writeConf(conf, submitJobFile); conf.writeXml(out); // 6)提交job,返回提交状态 status = submitClient.submitJob(jobId, submitJobDir.toString(), job.getCredentials());
3、在一个Hadoop 任务中,什么是InputSplit(切片),以及切片是用来做什么的,切片与block有什么区别?
FileInputFormat源码解析(input.getSplits(job))(1)找到你数据存储的目录。(2)开始遍历处理(规划切片)目录下的每一个文件。(3)遍历第一个文件xx.txt。 a)获取文件大小fs.sizeOf(xx.txt);。 b)计算切片大小computeSliteSize(Math.max(minSize,Math.min(maxSize,blocksize)))。 c)默认情况下,切片大小=blocksize。 d)开始切,形成第1个切片:xx.txt—0:128M 第2个切片xx.txt—128:256M 第3个切片xx.txt—256M:300M(每次切片时,都要判断切完剩下的部分是否大于块的1.1倍,不大于1.1倍就划分一块切片)。 e)将切片信息写到一个切片规划文件中。 f)整个切片的核心过程在getSplit()方法中完成。 g)数据切片只是在逻辑上对输入数据进行分片,并不会再磁盘上将其切分成分片进行存储。InputSplit只记录了分片的元数据信息,比如起始位置、长度以及所在的节点列表等。 h)注意:block是HDFS上物理上存储的存储的数据,切片是对数据逻辑上的划分。(4)提交切片规划文件到yarn上,yarn上的MrAppMaster就可以根据切片规划文件计算开启maptask个数。
4、如何判定一个job的map和reduce的数量?
1)map数量 splitSize=max{minSize,min{maxSize,blockSize}} map数量由处理的数据分成的block数量决定default_num = total_size / split_size;2)reduce数量 reduce的数量job.setNumReduceTasks(x);x 为reduce的数量。不设置的话默认为 1。
5、 Maptask的个数由什么决定?
一个job的map阶段MapTask并行度(个数),由客户端提交job时的切片个数决定。
6、MapTask和ReduceTask工作机制或工作原理
MapTask工作机制
(1)Read阶段:Map Task通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value。(2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value。(3)Collect收集阶段:在用户编写map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。在该函数内部,它会将生成的key/value分区(调用Partitioner),并写入一个环形内存缓冲区中。(4)Spill阶段:即“溢写”,当环形缓冲区满后,MapReduce会将数据写到本地磁盘上,生成一个临时文件。需要注意的是,将数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并、压缩等操作。(5)Combine阶段:当所有数据处理完成后,MapTask对所有临时文件进行一次合并,以确保最终只会生成一个数据文件。
ReduceTask工作机制(1)Copy阶段:ReduceTask从各个MapTask上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。(2)Merge阶段:在远程拷贝数据的同时,ReduceTask启动了两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上文件过多。(3)Sort阶段:按照MapReduce语义,用户编写reduce()函数输入数据是按key进行聚集的一组数据。为了将key相同的数据聚在一起,Hadoop采用了基于排序的策略。 由于各个MapTask已经实现对自己的处理结果进行了局部排序,因此,ReduceTask只需对所有数据进行一次归并排序即可。(4)Reduce阶段:reduce()函数将计算结果写到HDFS上。
7、描述mapReduce有几种排序及排序发生的阶段
1)排序的分类: (1)部分排序: MapReduce根据输入记录的键对数据集排序。保证输出的每个文件内部排序。 (2)全排序: 如何用Hadoop产生一个全局排序的文件?最简单的方法是使用一个分区。但该方法在处理大型文件时效率极低,因为一台机器必须处理所有输出文件,从而完全丧失了MapReduce所提供的并行架构。 替代方案:首先创建一系列排好序的文件;其次,串联这些文件;最后,生成一个全局排序的文件。主要思路是使用一个分区来描述输出的全局排序。例如:可以为待分析文件创建3个分区,在第一分区中,记录的单词首字母a-g,第二分区记录单词首字母h-n, 第三分区记录单词首字母o-z。 (3)辅助排序:(GroupingComparator分组) Mapreduce框架在记录到达reducer之前按键对记录排序,但键所对应的值并没有被排序。甚至在不同的执行轮次中,这些值的排序也不固定,因为它们来自不同的map任务且这些map任务在不同轮次中完成时间各不相同。一般来说,大多数MapReduce程序会避免让reduce函数依赖于值的排序。但是,有时也需要通过特定的方法对键进行排序和分组等以实现对值的排序。 (4)二次排序: 在自定义排序过程中,如果compareTo中的判断条件为两个即为二次排序。2)自定义排序WritableComparable bean对象实现WritableComparable接口重写compareTo方法,就可以实现排序 @Override public int compareTo(FlowBean o) { // 倒序排列,从大到小 return this.sumFlow > o.getSumFlow() ? -1 : 1; }3)排序发生的阶段: (1)一个是在map side发生在spill后partition前。 (2)一个是在reduce side发生在copy后 reduce前。
8、描述mapReduce中shuffle阶段的工作流程,如何优化shuffle阶段
分区,排序,溢写,拷贝到对应reduce机器上,增加combiner,压缩溢写的文件。
9、描述mapReduce中combiner的作用是什么,一般使用情景,以及和reduce的区别?
1)Combiner的意义就是对每一个maptask的输出进行局部汇总,以减小网络传输量。2)Combiner能够应用的前提是不能影响最终的业务逻辑,而且,Combiner的输出kv应该跟reducer的输入kv类型要对应起来。3)Combiner和reducer的区别在于运行的位置。 Combiner是在每一个maptask所在的节点运行; Reducer是接收全局所有Mapper的输出结果。
10、如果没有定义partitioner,那数据在被送达reducer前是如何被分区的?
如果没有自定义的 partitioning,则默认的 partition 算法,即根据每一条数据的 key 的 hashcode 值摸运算(%)reduce 的数量,得到的数字就是“分区号“。
11、MapReduce 出现单点负载多大,怎么负载平衡?
通过Partitioner实现
12、MapReduce 怎么实现 TopN?
可以自定义groupingcomparator,对结果进行最大值排序,然后再reduce输出时,控制只输出前n个数。就达到了topn输出的目的。
13、Hadoop的缓存机制(Distributedcache)是怎么样的?
分布式缓存一个最重要的应用就是在进行join操作的时候,如果一个表很大,另一个表很小,我们就可以将这个小表进行广播处理,即每个计算节点上都存一份,然后进行map端的连接操作,经过我的实验验证,这种情况下处理效率大大高于一般的reduce端join,广播处理就运用到了分布式缓存的技术。 DistributedCache将拷贝缓存的文件到Slave节点在任何Job在节点上执行之前,文件在每个Job中只会被拷贝一次,缓存的归档文件会被在Slave节点中解压缩。将本地文件复制到HDFS中去,接着Client会通过addCacheFile() 和addCacheArchive()方法告诉DistributedCache在HDFS中的位置。当文件存放到文地时,JobClient同样获得DistributedCache来创建符号链接,其形式为文件的URI加fragment标识。当用户需要获得缓存中所有有效文件的列表时,JobConf 的方法 getLocalCacheFiles() 和getLocalArchives()都返回一个指向本地文件路径对象数组。
14、mapReduce如何实现两个表的join?
1)reduce side join : 在map阶段,map函数同时读取两个文件File1和File2,为了区分两种来源的key/value数据对,对每条数据打一个标签(tag),比如:tag=0 表示来自文件File1,tag=2 表示来自文件File2。 2)map side join : Map side join 是针对以下场景进行的优化:两个待连接表中,有一个表非常大,而另一个表非常小,以至于小表可以直接存放到内存中。这样,我们可以将小表复制多份,让每个map task 内存中存在一份(比如存放到hash table 中),然后只扫描大表:对于大表中的每一条记录key/value,在hash table 中查找是否有相同的key 的记录,如果有,则连接后输出即可。
15、什么样的计算不适用mr来提速?
1)数据量很小2)特别多的小文件3)特别频繁的读的时候,索引是更好的存取机制的时候4)需要使用事务的时候5)只有一台机器的时候
16、更多大数据面试集锦
- 大数据书籍资料分享
- 大数据面试题集锦
关键词:
大数据面试题集锦-Hadoop面试题(三)-MapReduce-每日看点
素描鼻子的画法(素描鼻子)
【金融街发布】外汇局:一季度我国外债规模有所回升 结构保持基本稳定
马斯克:决斗可能约在斗兽场 需要锻炼一下我的耐力
世界今头条!湖南遇特大暴雨:市民街头抱团互救 防灾减灾进行时
当前时讯:中国创纪录一箭41星揭秘:印度一箭104星弱爆了
小学毕业典礼多名学生疑因天热晕倒 学校:当天多云 孩子因低血糖出现状况|速看料
3499元 优派新款便携显示器上架:4K OLED屏-环球快报
快讯:科普书单·新书|动物园开饭啦
北方热过南方 高温屡破纪录!大数据看这个6月北方有多热-新动态
月销2.1万辆 大众速腾彻底爆发 反超丰田卡罗拉
焦点要闻:胖东来老板称企业家要活得像人:要对得起自己的人生
夏季用电高峰来袭 你家能不断电 北斗立大功了
18叶双环扇叶:云米电风扇79元起大促(90元大额券)
佳能晒出EOS系列里程碑:累积产量已达1.1亿台
记录--让整个网站界面无滚动条
保利联合:上半年净利润预计盈利5560万元–7522万元
每日机构分析:6月30日
天天微头条丨6月总票房破40亿!国产悬疑片《消失的她》16亿票房第一:你贡献几张票?
称孩子报新闻学就打晕!大学新闻教授称张雪峰的话不无道理
天际汽车停工停产 被发动机厂商起诉“还钱”
女高材生制售救猫药获刑15年 罚金4000万:没有获批 卖了8000多万
Maven高级相关知识:模块,打包方式,依赖继承,聚合,私服搭建-每日报道
热热热!全球多地出现极端高温|天天快播
【金融街发布】人民银行增加支农支小再贷款、再贴现额度2000亿元-全球最资讯
孟羽童离职格力后 董明珠谈接班人:一把手要把企业视为自己生命
只有4节车厢的绿皮火车:一开就是27年!你见过吗? 世界今热点
天天热讯:售价218万 没有机翼也能飞 北美首款飞行汽车正式发布
阿斯巴甜可能致癌!无糖饮料还能放心喝吗?
焦点资讯:小区一保时捷内燃冒烟 保安拿铁锹拍烂前挡风灭火!网友:这物业费值
git rebase合并多个commit
处理开发者账号到期导致APP下架的方处理开发者账号到期导致APP下架的方法
头条焦点:艾隆科技:智慧医疗领域迎来黄金期,公司布局精准,稳步发展,前景可期!|投资者问答精选
趴桌子午睡是怎么毁掉你的身体的?
7399元 壹号本OneXPlayer 2Pro EVA联名限量版今晚开售:8.4寸大屏|今日热闻
全国最大“吃鸡”外挂案宣判:卖挂赚近3千万 两被告获刑4年
苹果带出来得“歪路”要改 手机重回可拆卸电池是必然
胖东来8页报告调查顾客与员工争执:管理人员携礼登门致歉
环球精选!使用Python字符串访问与修改局部变量
在python中实现使用迭代生成器yield减少内存占用的方法
文心一言 VS 讯飞星火 VS chatgpt (52)-- 算法导论6.2 4题_观焦点
使用Python字符串访问与修改局部变量_每日热议
热点在线丨狂收 3.2k star!百度开源压测工具,可模拟几十亿的并发场景,太强悍了!
【津云镜头】特警三支队、金街治安派出所做好爱警暖警工作
布局高端车载PHY芯片,加速推动高速以太网通信芯片国产化——访裕太微首席运营官李晓刚
科创板收盘播报:科创50指数涨0.37% 新股芯动联科较发行价涨75.21%
满满的回忆!赵雅芝吕良伟同台合唱《上海滩》 头条焦点
印度加入美国载人登月计划 被赞苏醒中的巨人:航天将远超俄罗斯
特斯拉天幕变全景烤炉 开车戴帽子冰袖 女子调侃自己变烤乳猪
这就是差距!AMD ROCm开发平台终于要支持RX 7900 XTX
蓉港高铁明天正式开行:成都10小时直达香港
收评:创业板指涨1.6% 复合集流体概念涨幅居前-焦点速讯
证监会公布第三批企业债注册批文 职责划转后核发募资超千亿元
天热要注意!女子连吃两个超甜菠萝肝衰竭 医生称元凶可能是蜡样芽孢杆菌
上市公司回应给员工放暑假:放假情况属实 但个位数员工在岗不实
比盐粒还小的“LV”手提包卖出46.2万:用显微镜才能看清
从此告别毛巾了:芷雨加大洗脸巾13.9元200抽狂促
世界热讯:索尼第一方大作改编!电影《GT赛车:极速狂飙》官宣引进国内
今日讯!交易所协会再提积极服务低碳转型 绿色债券这三年发展有多快?
「隐私计算黑客松」获奖代码全部开源!快去打卡~
当前资讯!干货|三个维度详解 Taier 本地调试原理和实践
通过 ChatGPT 提高你的创造力 焦点报道
天天微速讯:JetBrains系IDE使用Git很慢的问题
第一批实验室培育肉在美获准销售,人造肉市场发展风口何时来?
世界快报:流水线“造人”成真?科学家成功培养首个人类胚胎模型 全球哗然专家释疑
索尼称Xbox太有钱 能花50亿美元做3款独占《COD》
手握309亿利润却不分红 中芯国际:为股东长期利益考虑 滚动
大棕熊“下班”咣咣砸门急得直跳脚 绝不加班:网友直呼像极了打工人的我
盘点C#中感叹号"!"的作用_全球时讯
数码教程资讯:小米11青春版怎么设置24小时 全球聚看点
热热热!全国多地气温超40度 新能源车主如何经受“烤验”_环球头条
热文:炸串店老鼠啃食香肠被拍下 网友:主打一个明目张胆
315曝光假泰国香米公司被吊销:完全香精勾兑 和香米不沾边
何小鹏:和李斌、李想还在一个群里 但跟李斌聊得多些
上新了!小米平板6 Max首曝:12.4寸屏+10000mAh电池_环球关注
什么是 ChatGPT? 环球短讯
js中的解构赋值
Spring事件监听在业务使用中的优化
我国首个万吨级光伏制氢项目投产-环球今亮点
好作品应如实呈现时代的偏见吗?——《漫长的季节》中的女性角色塑造 焦点
【速看料】国产办公软件WPS出现服务故障 官微道歉:正在紧急排查修复
全球实时:红魔电竞平板官宣:首款骁龙8 Gen2+内置风扇平板
《博德之门3》反向跳票!不会为主机版质量向30帧妥协 全球快讯
你退了吗?网易暴雪国服游戏退款申请今天截止:过期视为自动放弃 全球快消息
男生长胖20斤被公司解约 官方回应:如举报会责令整改_当前短讯
每日播报!Linux 中重置数据库的 root 密码的技巧
海外视频直播源码技术视频直播间的搭建
BabylonJS教程_编程入门自学教程_菜鸟教程-免费教程分享|动态焦点
海康威视产品命名规则
焦点快看:记录一次项目数据采集分析-NEWC数据泄漏
微软只保证《使命召唤》停留三年 索尼官方回应
新资讯:携程正式宣布员工生孩后补贴5万元:每年1万 连领5年
超值优惠手慢无:真维斯Z+冰丝短裤29元、长裤/Polo衫39元
特斯拉充电中被临车女车主强行拔枪:哨兵模式拍个正着-焦点信息
你能坚持多久?小伙在没信号的原始森林隐居4年火了:中国最神秘部落揭秘_环球今热点
每日消息!特斯拉人形机器人将亮相上海:预计未来售价不超过15万元
IAM风险CTF挑战赛
PC网站如何实现微信扫码登录
【世界热闻】马价十倍说明了什么道理_马价十倍
【新视野】7月新规来了