Skip to content

1、什么是DAG

叫有向无环图,原始RDD通过转换形成DAG,RDD之间的依赖关系的不同划分为不同的Stage调度阶段

2、为什么会产生RDD

什么是窄依赖,宽依赖

窄依赖指的是每一个父RDD的partition最多被子RDD的一个Partition使用

一对一

宽依赖指的是多个子RDD的partition会依赖于同一个父RDD的partition

多对一

3、如果在SSH中添加key,是否还需要设置密码?

是的,即使在SSH中添加了key,还是需要设置密码。

4、Hadoop是否遵循UNIX模式?

是的,在UNIX用例下,Hadoop还拥有“conf”目录。

5、请描述一下开发过程中如何对上面的程序进行性能分析,对性能分析进行优化的过程。

现有 1 亿个整数均匀分布,如果要得到前 1K 个最大的数,求最优的算法。

参见《海量数据算法面试大全》

95.mapreduce的大致流程

主要分为八个步骤

1/对文件进行切片规划

2/启动相应数量的maptask进程

3/调用FileInputFormat中的RecordReader,读一行数据并封装为k1v1

4/调用自定义的map函数,并将k1v1传给map

5/收集map的输出,进行分区和排序

6/reduce task任务启动,并从map端拉取数据

7/reduce task调用自定义的reduce函数进行处理

8/调用outputformat的recordwriter将结果数据输出

6、请简述mapreduce中的combine和partition的作用

combiner是发生在map的最后一个阶段,其原理也是一个小型的reducer,主要作用是减少输出到reduce的数据量,缓解网络传输瓶颈,提高reducer的执行效率。

partition的主要作用将map阶段产生的所有kv对分配给不同的reducer task处理,可以将reduce阶段的处理负载进行分摊

7、Hadoop的shuffle过程

Map端的shuffle

Map端会处理输入数据并产生中间结果,这个中间结果会写到本地磁盘,而不是HDFS。每个Map的输出会先写到内存缓冲区中,当写入的数据达到设定的阈值时,系统将会启动一个线程将缓冲区的数据写到磁盘,这个过程叫做spill。

在spill写入之前,会先进行二次排序,首先根据数据所属的partition进行排序,然后每个partition中的数据再按key来排序。partition的目是将记录划分到不同的Reducer上去,以期望能够达到负载均衡,以后的Reducer就会根据partition来读取自己对应的数据。接着运行combiner(如果设置了的话),combiner的本质也是一个Reducer,其目的是对将要写入到磁盘上的文件先进行一次处理,这样,写入到磁盘的数据量就会减少。最后将数据写到本地磁盘产生spill文件(spill文件保存在{mapred.local.dir}指定的目录中,Map任务结束后就会被删除)。

最后,每个Map任务可能产生多个spill文件,在每个Map任务完成前,会通过多路归并算法将这些spill文件归并成一个文件。至此,Map的shuffle过程就结束了。

Reduce端的shuffle

Reduce端的shuffle主要包括三个阶段,copy、sort(merge)和reduce。

首先要将Map端产生的输出文件拷贝到Reduce端,但每个Reducer如何知道自己应该处理哪些数据呢?

因为Map端进行partition的时候,实际上就相当于指定了每个Reducer要处理的数据(partition就对应了Reducer),所以Reducer在拷贝数据的时候只需拷贝与自己对应的partition中的数据即可。

每个Reducer会处理一个或者多个partition,但需要先将自己对应的partition中的数据从每个Map的输出结果中拷贝过来。

接下来就是sort阶段,也成为merge阶段,因为这个阶段的主要工作是执行了归并排序。

从Map端拷贝到Reduce端的数据都是有序的,所以很适合归并排序。

最终在Reduce端生成一个较大的文件作为Reduce的输入。

最后就是Reduce过程了,在这个过程中产生了最终的输出结果,并将其写到HDFS上。

8、什么是Kafka?

开源消息系统,由scala写成

Kafka是一个分布式消息队列:生产者、消费者的功能,他提供类似于JMS的特性,但是设计上完全不同,此外它并不是JMS规范的实现

Kafka对消息保存 根据Topic进行归类,Producer生产者为发送消息 ,接收消息为Consumer 消费者,Kafka集群有多个Kafka实例组成,每个实例为broker

Kafka所有组件都依赖于Zookeeper集群保存一些元数据信息,来保证系统可用性

9、Hbase的rowKey怎么创建比较好?列簇怎么创建比较好?

rowKey最好要创建有规则的rowKey,即最好是有序的。

经常需要批量读取的数据应该让他们的rowkey连续;

将经常需要作为条件查询的关键词组织到rowkey中;

列族的创建:

按照业务特点,把数据归类,不同类别的放在不同列族

10、hadoop-metrics.properties文件的作用是?

hadoop-metrics.properties被用做“Reporting”,控制Hadoop报告,初始状态是“not to report”。

11、描述Hbase,ZooKeeper搭建过程

12、sqoop在导入数据到MySQL中,如何不重复导入数据,如果存在数据问题,sqoop如何处理?

13、Hadoop-env.sh文件当下的位置?

14、Masters由什么组成?

15、Hadoop的核心配置是什么?

16、我们使用Ubuntu及Cloudera,那么我们该去哪里下载Hadoop,或者是默认就与Ubuntu一起安装?

17、腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?

18、SSH工作的端口号是?

19、Hadoop集群可以运行的3个模式?

20、列族怎么创建比较好 <=2

21、hadoop框架怎么来优化

22、介绍一下join操作优化经验?

23、简单说一下hadoop和spark的shuffle过程

24、描述一下hadoop中,有哪些地方使用到了缓存机制,作用分别是什么?

25、说一下RDD 的Lineage血统

26、hbase内部机制是什么

27、当Job Tracker宕掉时,Namenode会发生什么?

28、如何检查Namenode是否正常运行?

29、Flume的工作及时是什么?

30、Hadoop需求什么样的网络?

31、Kafka的消费

32、hdfs运行原理

用心去做高质量的内容网站,欢迎 star ⭐ 让更多人发现