2020Java面试大数据常见面试题+参考答案总结

技术面试题

1.Hadoop中有哪些组件?

Hadoop=HDFS+Yarn+MapReduce+Hive+Hbase+…

1).HDFS:分布式文件存储系统

  • 主:namenode,secondarynamenode
  • 从:datanode

2).Yarn:分布式资源管理系统,用于同一管理集群中的资源(内存等)

  • 主:ResourceManager
  • 从:NodeManager

3).MapReduce:Hadoop的计算框架,用map和reduce方式实现数据的全局汇总

4).Zookeeper:分布式协调服务,用于维护集群配置的一致性、任务提交的事物性、集群中服务的地址管理、集群管理等

  • 主:QuorumPeerMain
  • 从:QuorumPeerMain

5).Hbase:Hadoop下的分布式数据库,类似于NoSQL

  • 主:HMaster,HRegionserver,Region

7).Hive:分布式数据仓库,其实说白了就是一个数据分析工具,底层用的还是MapReduce

8).Sqoop:用于将传统数据库中数据导入到hbase或者Hdfs中一个导入工具

9).Spark:基于内存的分布式处理框架

  • 主:Master
  • 从:Worker

2.Hdfs中角色有哪些?

  • NameNode:管理元数据信息,给子节点分配任务(FSImage是主节点启动时对整个文件系统的快照,Edits是修改记录)
  • DataNode:负责数据存储,实时上报心跳给主节点
  • SecondaryNameNode:

1)首先,它定时到NameNode去获取edit logs,并更新到fsimage上。一旦它有了新的fsimage文件,它将其拷贝回NameNode中。

2) NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间。

3.Hdfs和Yarn有什么区别?

1)Hdfs是分布式文件存储系统,是用来存储文件的;

2)Yarn是一个资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和 数据共享等方面带来了巨大好处

4.MapReduce的shuffle过程?

从Map产生输出开始到Reduce取得数据作为输入之前的过程称作shuffle。

1).Collect阶段:将MapTask的结果输出到默认大小为100M的环形缓冲区,保存的是key/value,Partition分区信息等。

2).Spill阶段:当内存中的数据量达到一定的阀值的时候,就会将数据写入本地磁盘,在将数据写入磁盘之前需要对数据 进行一次排序的操作,如果配置了combiner,还会将有相同分区号和key的数据进行排序。

3).Merge阶段:把所有溢出的临时文件进行一次合并操作,以确保一个MapTask最终只产生一个中间数据文件。

4).Copy阶段:ReduceTask启动Fetcher线程到已经完成MapTask的节点上复制一份属于自己的数据,这些数据默认会 保存在内存的缓冲区中,当内存的缓冲区达到一定的阀值的时候,就会将数据写到磁盘之上。

5).Merge阶段:在ReduceTask远程复制数据的同时,会在后台开启两个线程对内存到本地的数据文件进行合并操作。

6).Sort阶段:在对数据进行合并的同时,会进行排序操作,由于MapTask阶段已经对数据进行了局部的排序, ReduceTask只需保证Copy的数据的最终整体有效性即可。

5.MapReduce的Partition和Combine有什么区别?

  • combine分为map端和reduce端,作用是把同一个key的键值对合并在一起,可以自定义,该类的主要功能是合并相同的key键
  • partition是分割map每个节点的结果,按照key分别映射给不同的reduce,也是可以自定义的,partition的作用就是把这些数据归类

6.Hadoop的高可用模式说一下?

7.Zookeeper在Hadoop中的作用?

1)Zookeepe主要用来解决分布式应用中经常遇到的数据管理问题,如集群管理、统一命名服务、分布式配置管理、 分布式消息队列、分布式锁、分布式协调等。

2)Zookeeper是一个由多个server组成的集群,一个leader,多个follower,每个server保存一份数据副本,全局数据 一致、分布式读写,更新请求转发,由leader实施。

8.Sqoop的底层原理?

是用来实现结构型数据(如关系数据库)和Hadoop之间进行数据迁移的工具。它充分利用了MapReduce的并行特点以批处理的方式加快数据的传输,同时也借助MapReduce实现了容错

9.Sqoop是怎么连接的关系型数据库?

sqoop import-all-tables –connect jdbc:mysql://192.168.52.110/hivemetadb --username root -password root

10.Java中抽象类怎么理解?

抽象类不能实例化,继承的关键字仍然是extends,而且继承过后可以不覆盖方法,只是使用继承而来的方法

A:抽象类和抽象方法必须用abstract关键字修饰;

B:抽象类中不一定有抽象方法,但是有抽象方法的类必须定义为抽象类;

C:抽象类不能直接实例化;(可以通过子类(重写方法后的子类)的多态方式实例化);

  • 它不是具体的;
  • 抽象类有构造方法,用于子类访问父类数据的初始化;

D:抽象类的子类;

  • 如果不想重写抽象方法,该子类必须是抽象类;
  • 成为具体类则必须重写所有的抽象方法;

由于篇幅有限,只展示了一部分,需要完整版的朋友可以点一点下方链接免费领取!

链接:1103806531暗号:CSDN

项目面试题

1.大概介绍一下项目;

2.hbase表你们是怎么存数据的?一天数据量是多少?这么多数据你们都存hbase里吗?一开始就是个文件,hbase是表结构,那你是怎么去获取数据然后给存成表结构的?

3.假如现在我要查询每个月的每个片区里订单成交量最高的那个司机ID,你怎么实现?

4.hive怎么读取数据的?我要只存里边我需要的数据,你给我想下怎么优化?

5.你都用过哪些ETL工具?怎么用的?就像flume是怎么获取数据的,你怎么配置的?那kafka怎么读取数据的?hive是直接从kafka里获取数据吗?

6.你建过外表吗?怎么建的?为什么要建外表?

7.你会写shell吗?写过哪些?

8.你应该也经常用linux命令吧,都用过哪些?我现在要查所有后缀是.txt的文件名,怎么查?grep用过吗?

9.我现在不想查司机,我想查订单,怎么去设计hbase表?

总结

我这边也整理了一份 架构师全套视频教程 和关于java的系统化资料,包括java核心知识点、面试专题和20年最新的互联网真题、电子书等都有。有需要的朋友可以点一点下方链接免费领取!

链接:1103806531暗号:CSDN

在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/XingXing_Java/article/details/108869452