大数据面试题之2018.01.05

5.简述Hadoop1和Hadoop2架构异同
Hadoop2相比较于Hadoop1来说,HDFS的架构与Mapreduce的都有较大的变化,且速度上和可用性上都有了很大的提高,Hadoop2中有两个重要的变更。
1 Hdfs的NameNodes可以以集群方式部署,增强了Namenodes的水平扩展能力和可用性。
1 Mapreduce将JobTracker中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的组件,并更名为YARN(Yet Another Resource Negotiator)
1.1HDFS的变化 - 增强了NameNode的水平扩展及可用性
6.描述一下Mapreduce的二次排序原理
在Hadoop中,默认情况下是按照key进行排序,有时需要再按照value进行排序,即,对于同一个key,reduce函数接收到的valuelist是按照value排序的,这种应用需求在join操作中很常见,比如有两种方法进行二次排序,分别为:buffer and in memory sort和value-to-key conversion
对于buffer and in memory sort ,主要思想是:在reduce()函数中,将某个key对应的所有value保存下来,然后进行排序。这种方法最大的缺点是;可能会造成 out of memory。
对于value-to-key conversion,主要思想是:将key和 部分value拼接成一个组合key(实现WritableComparable 接口或者调用setSortComparatorClass函数)这样reduce获取的结果便是先按key排序,后按value排序的结果。
7.请描述Mapreduce排序发生在几个阶段
(1)shuffle阶段,当环形内存缓冲区中的数据达到它的大小的阙值时会将数据刷新到磁盘上,在flush之前,利用快速排序,对缓冲区中的数据进行排序。
排序方式先按照partition分区索引号对数据排序,然后在对每个分区中的数据按照key进行排序,当该Map Task上的所有数据全部处理完成后,
Map Task会将所有溢写文件写入到一个大文件中,并且按照分区顺序进行排序。
(2)reduce阶段,当reduce将数据全部拉取过来后,把所有磁盘文件进行排序合并,按照key排序,并把相同key的value放在一起
3.请描述Mapreduce中Combiner的作用是什么,适合的场景?
Combiner是Map端执行reduce的过程,目的是为了减少Map端最终的数据量,从而减少Reduce端拉取数据的数据量,减少网络IO。Combiner适合用于一些幂等性操作,比如求和,不合适求平均值的场景。
9.请描述Mapreduce中shuffle阶段的工作流程,如何优化shuffle
配置方面:(1)增大map阶段的缓冲区大小
(2)map阶段输出结果使压缩;压缩算法使用lzo
(3)增加reduce阶段copy数据线程数
(4)增加副本数,从而提高计算时的数据本地化
程序方面:(1)在不影响计算结果的情况下建议使用combiner
(2)输出结果的序列化类型尽量选择占用字节少的类型
架构方面:将http改为udp,因为http还要进行3次握手操作。
10.Hadoop的sequencefile格式,什么是Java的序列化,如何实现Java序列化
SequenceFile是Hadoop API提供的一种二进制文件支持,这种二进制文件直接将

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值