Hadoop大数据面试题

1、hadoop操作命令mv 对比copy?

mv 性能更高,copy会改变时间属性,mv不会。

 

2、操作HDFS有哪几种方式?

JAVA API 、Web UI 、Shell

 

3、MR的执行流程(yarn的工作流程、作业执行过程)?

客户端提交一个作业,ResourceManager为该作业分配第一个Container,并与对应的NodeManager通信,要求NodeManager在这个Container内启动作业的APPlicationMaster。

APPlicationMaster首先向ResourceManager注册自己,然后便采用轮询的方式通过RPC协议向ResourceManager申请资源。一旦成功便会与对应的NodeManager通信,要求它启动Container来运行Maptask和Reducetask。

NodeManager通过脚本启动任务后,任务会通过RPC协议向APPlicationMaster报告自己的进度和执行情况,客户端可以通过APPlicationMaster来获知任务信息。

任务完成后,APPlicationMaster向ResourceManager注销并关闭自己。

4、yarn的几个重要命令?

yarn application --list   列出任务

yarn application -kill 任务id  杀死任务

yarn application -status 任务id  查看任务状态

 

5、MR1对比MR2?

MR1 :计算+资源调度  两个进程 JobTracker  TaskTracker(Map Task  /Reduce Task)

MR2 :计算  写代码打成jar包提交到yarn上运行

 

6、Reduce任务开始运行时Map任务一定运行完了?

否 有些任务的Map任务和Reduce任务会共同运行的

 

7、一个MR任务完成,任务输出目录下输出文件有多少个?

一个_SUCCESS文件,表明任务执行成功

一个Reduce任务对应一个输出文件(假设输出文件都小于128MB),Reudce任务数量可以调整

故输出目录下文件个数为Reduce任务的数量加一

 

8、Hive中控制Map数?

一个input split分片对应一个Map,默认情况下,input split分片大小和hdfs上的blocksize一样大,分片存储的是不是数据本身,而是记录数据的位置的数组和分片长度

小文件太多将小文件合并后降低Map数提高效率

文件大小合适但可能只有一两个字段,每个字段对应千万条记录,将该文件拆分,增加Map数提高效率。

 

9、Hive中控制Reduce数?

Reduce多少个输出文件就有多少个

set hive.exec.reducers.bytes.per.reducer=100000000; 设置每个Reduce处理的数据量为100兆(默认为1G),这意味着120兆的Map输出文件会被拆分成两个Reduce

set mapred.reduce.tasks = 15; 设置任务的Reduce数量

 

10、什么情况下只有一个Reduce?

Reduce输入数据量小于每个Reduce处理的数据量、设置的Reduce数为1、没有groupby汇总、用了Order by 、有笛卡尔积

 

11、shuffle过程?

shuffle在MapReduce中有,在spark中也有,其实他们两个是不同的。
MapReduce中的shuffle是Map之后Reduce之前的一个操作。Map结束后数据会首先写入一个环形缓冲区中,这个环形缓冲区默认100M,每次当环形缓冲区达到80%满的时候,会先将数据进行一个二次快速排序(先按分区排,再按key排),然后将数据都会溢写到磁盘上生成一个新文件,每一个map对应的新文件可能有多个,在reduce开始前,会先将所有溢写生成的小文件进行一个merge操作,将它们合并成一个大文件,在这个大文件内包括数据索引和数据本身。如果在Reducer之前有Combiner操作的话,数据送入到Reducer之前还会进行Combiner操作。
Spark与Hadoop之间的Shuffle过程大致类似,Spark的Shuffle的前后也各有一次聚合操作。但是也有很明显的差别:Hadoop的shuffle过程是明显的几个阶段:map,spill,merge,shuffle,sort,reduce等,是按照流程顺次执行的,而Spark不一样,因为Spark的Shuffle没有这么明确的功能阶段,所有的这些功能都依靠算子完成。Spark与Hadoop的Shuffle之间第二个明显的差别是:Hadoop的Shuffle是sort-based类型的,而Spark的Shuffle是hash-based类型的,这意味着数据进入Reduce端时不会进行预排序。

12、hdfs文件读流程?
a、客户端打开dfs文件系统,dfs文件系统建立与NN的RPC通信机制,NN查询所需读取文件的元信息并将其返回给客户端。

    b、客户端打开一个输入流,输入流通过文件元信息在DN上查找对应数据块,查找完毕调用关闭输入流并将数据块拼成文件返回给客户端。

 

13、hdfs文件写流程?
 a、客户端打开dfs文件系统,dfs文件系统建立与NN的RPC通信机制,向NN请求写入文件,NN此时会创建一个空白文件条目。
      b、客户端打开一个输出流,输出流对文件进行切块,再按照特定算法将数据块循环上传到DN上(DN通过水平地址是数据块到达冗余度要求),上传完毕关闭输出流并刷新缓存。
      c、上传完毕后客户端通过DFS文件系统RPC通信机制告知NN文件上传完毕。

 

14、谈一谈你对hadoop的了解。
对hadoop可以分为广义上的和狭义上的两种。
狭义上的hadoop只是个hadoop这个开源软件本身,它包括支持其他hadoop模块的通用应用程序hadoop common、分布式文件系统hdfs、作业调度和集群资源管理框架yarn以及基于yarn的分布式计算系统mapreduce。

广义上的hadoop则知道的hadoop的生态圈,不仅包括狭义上的hadoop,还包括可扩展的、支持大表的结构化数据存储分布式数据库HBase,分布式协调服务框架ZooKeeper、基于内存的数据处理框架Spark、数据仓库软件Hive、可扩展的机器学习和数据挖掘框架Mahout等。

 

15、hadoop1.x和hadoop2.x的区别。
只要有两个大的区别:
一、hadoop1.x中没有提供单点故障的解决方案,一旦集群的最高层管理JobTracker挂掉,那么整个集群就瘫痪了。而在hadoop2.x中,我们可以通过Zookeeper来实现hadoop的HA,这样就完美地解决了单点故障问题。

二、hadoop1.x中作业调度与集群的资源管理由MapReduce来完成,这样就限制了hadoop的发展。在Hadoop2.x版本中,作业调度与集群的资源管理功能从MapReduce中剥离出来形成了yarn,这就使得hadoop能被完美地兼容Spark和Storm。

 

16、yarn的架构设计?

 

RM: 

        Resource Scheduler:为应用程序分配资源,资源以Container为单位,有多种Container,如FIFO Scheduler(先进先出,默认)、Capacity Scheduler(容器调度)、Fair Scheduler(公平调度,每个任务有相同的优先级)

        APPlications Manager:管理yarn集群的所有应用程序,有多个

NM: 

     Container:一个NM可以运行多个Container,一个Container只可以运行一个Container,可以是APPcalication Master|map task | reduce task三者之一,Container中封装有内存和CPU,分配资源以Container为单位。

APPcalication Master:

       一个应用程序只有一个APPcalication Master,运行在Container之中,负责为任务申请资源,监控任务的运行,任务失败时重启任务

 

17、虚拟内存与物理内存

 

A.高度计算 允许挂 不允许慢时,将vm.swappiness 的值设置较大,使yarn使用虚拟内存的积极性降低

B.一般计算 允许慢 不允许挂时,将vm.swappiness 的值可设置较小,使yarn使用虚拟内存的积极性增加

 

18、yarn的调优

 

 

19、cdh版本的hadoop和apache版本的hadoop有什么区别。
apache的hadoop是原生的hadoop,而cdh则是cloudera公司的hadoop发行版。CDH对Hadoop版本的
划分非常清晰,Apache版本则混乱得多。CDH比Apache在兼容性,安全性,稳定性上有增强。CDH支持Kerberos安全认证,Apache则使用简陋的用户

名匹配认证.CDH支持多种方式安装,Apache 只支持Tar包安装。

 

 

20、hdfs的启动顺序。
进程方面:NN->DN->SNN->RM->NM

 

启动过程:加载文件元信息->加载操作日志->保存检查点->进入安全模式->退出安全模式,启动完成

 

21、safemode?

你可能感兴趣的:(Hadoop,Hadoop核心技术)