大数据常见面试题汇总

习得一身大数据技术,却苦于没有一套面试总结来帮助自己完成面试的第一关。话说,这大数据技术面试中的笔试,真的就像我们之前考试似的,没有重点真的很抓瞎,不过幸亏你看到我这篇文章,可以坐收渔翁之利了!

1、用mr设计一个分组排重计数算法
输入文件格式:二级域名,一级频道,二级频道,访问ip地址,访问者id
需求:按照二级域名,一级频道,二级频道分组,计算pageview数,计算独立ip数和独立访问者id数。
2、hadoop中combiner的作用
当map生成的数据过大时,带宽就成了瓶颈,怎样精简压缩传给Reduce的数据,有不影响最终的结果呢。有一种方法就是使用Combiner,Combiner号称本地的Reduce,Reduce最终的输入,是Combiner的输出。
3、Linkedlist和ArrayList的区别
ArrayList是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
4、列举几个配置文件优化?
  1)Core-site.xml 文件的优化
    a、fs.trash.interval,默认值: 0;说明: 这个是开启hdfs文件删除自动转移到垃圾箱的选项,值为垃圾箱文件清除时间。一般开启这个会比较好,以防错误删除重要文件。单位是分钟。
    b、dfs.namenode.handler.count,默认值:10;说明:hadoop系统里启动的任务线程数,这里改为40,同样可以尝试该值大小对效率的影响变化进行最合适的值的设定。
    c、mapreduce.tasktracker.http.threads,默认值:40;说明:map和reduce是通过http进行数据传输的,这个是设置传输的并行线程数。
5、HDFS读写数据的过程
(1)读:
跟namenode通信查询元数据,找到文件块所在的datanode服务器
挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流
datanode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验)
客户端以packet为单位接收,现在本地缓存,然后写入目标文件
 (2)写:
根namenode通信请求上传文件,namenode检查目标文件是否已存在,父目录是否存在
namenode返回是否可以上传
client请求第一个 block该传输到哪些datanode服务器上
namenode返回3个datanode服务器ABC
client请求3台dn中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将真个pipeline建立完成,逐级返回客户端
client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答
当一个block传输完成之后,client再次请求namenode上传第二个block的服务器。
以为就这样结束了?!NO NO NO!未完待续~

猜你喜欢

转载自blog.51cto.com/14070466/2321039