Hadoop面试题汇总.docx

上传人:b****5 文档编号:6658728 上传时间:2023-01-08 格式:DOCX 页数:24 大小:32.81KB
下载 相关 举报
Hadoop面试题汇总.docx_第1页
第1页 / 共24页
Hadoop面试题汇总.docx_第2页
第2页 / 共24页
Hadoop面试题汇总.docx_第3页
第3页 / 共24页
Hadoop面试题汇总.docx_第4页
第4页 / 共24页
Hadoop面试题汇总.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

Hadoop面试题汇总.docx

《Hadoop面试题汇总.docx》由会员分享,可在线阅读,更多相关《Hadoop面试题汇总.docx(24页珍藏版)》请在冰豆网上搜索。

Hadoop面试题汇总.docx

Hadoop面试题汇总

单选题

1.下面哪个程序负责HDFS数据存储。

a)NameNodeb)Jobtrackerc)Datanoded)secondaryNameNodee)tasktracker

答案Cdatanode

2.HDfS中的block默认保存几份?

a)3份b)2份c)1份d)不确定

答案A默认3分

3.下列哪个程序通常与NameNode在一个节点启动?

a)SecondaryNameNodeb)DataNodec)TaskTrackerd)Jobtracker

答案D

4.Hadoop作者

a)MartinFowlerb)KentBeckc)Dougcutting

答案CDougcutting

5.HDFS默认BlockSize

a)32MBb)64MBc)128MB

答案:

1.X版本是64M

2.X版本是128M

6.下列哪项通常是集群的最主要瓶颈

a)CPUb)网络c)磁盘IOd)内存

答案:

C磁盘

7.DougCutting所创立的项目的名称都受到其家人的启发,以下项目不是由他创立的项目是

A.Hadoop

B.Nutch

C.Lucene

D.Solr

答案:

D

8.配置Hadoop时,JAVA_HOME包含在哪一个配置文件中

A.hadoop-default.xml

B.hadoop-env.sh

C.hadoop-site.xml

D.configuration.xsl

答案:

B

9.Hadoop配置文件中,hadoop-site.xml显示覆盖hadoop-default.xml里的内容。

在版本0.20中,hadoop-site.xml被分离成三个XML文件,不包括

A.conf-site.xml

B.mapred-site.xml

C.core-site.xml

D.hdfs-site.xml

答案:

A

10.HDFS默认的当前工作目录是/user/$USER,fs.default.name的值需要在哪个配置文件内说明

A.mapred-site.xml

B.core-site.xml

C.hdfs-site.xml

D.以上均不是

答案:

B

11.关于Hadoop单机模式和伪分布式模式的说法,正确是

A.两者都起守护进程,且守护进程运行在一台机器上

B.单机模式不使用HDFS,但加载守护进程

C.两者都不与守护进程交互,避免复杂性

D.后者比前者增加了HDFS输入输出以及可检查内存使用情况

答案:

D

12.下列关于HadoopAPI的说法错误的是

A.Hadoop的文件API不是通用的,只用于HDFS文件系统

B.Configuration类的默认实例化方法是以HDFS系统的资源配置为基础的

C.FileStatus对象存储文件和目录的元数据

D.FSDataInputStream是java.io.DataInputStream的子类

答案:

A

13.HDFS的NameNode负责管理文件系统的命名空间,将所有的文件和文件夹的元数据保存在一个文件系统树中,这些信息也会在硬盘上保存成以下文件:

A.日志

B.命名空间镜像

C.两者都是

答案:

C

14.HDFS的namenode保存了一个文件包括哪些数据块,分布在哪些数据节点上,这些信息也存储在硬盘上。

A.正确

B.错误

答案:

B

知识点:

在系统启动的时候从数据节点收集而成的

15.Secondarynamenode就是namenode出现问题时的备用节点

A.正确

B.错误

答案:

B

知识点:

它和元数据节点负责不同的事情。

其主要功能就是周期性将元数据节点的命名空间镜像文件和修改日志合并,以防日志文件过大。

合并过后的命名空间镜像文件也在Secondarynamenode保存了一份,以防namenode失败的时候,可以恢复。

16.HDFS的是基于流数据模式访问和处理超大文件的需求而开发的,默认的最基本的存储单位是64M,具有高容错、高可靠性、高可扩展性、高吞吐率等特征,适合的读写任务是

A.一次写入,少次读写

B.多次写入,少次读写

C.一次写入,多次读写

D.多次写入,多次读写

答案:

C

17.HDFS无法高效存储大量小文件,想让它能处理好小文件,比较可行的改进策略不包括

A.利用SequenceFile、MapFile、Har等方式归档小文件

B.多Master设计

C.Block大小适当调小

D.调大namenode内存或将文件系统元数据存到硬盘里

答案:

D

18.关于HDFS的文件写入,正确的是

A.支持多用户对同一文件的写操作

B.用户可以在文件任意位置进行修改

C.默认将文件块复制成三份存放

D.复制的文件块默认都存在同一机架上

答案:

C

19.Hadoopfs中的-get和-put命令操作对象是

A.文件

B.目录

C.两者都是

答案:

C

20.Namenode在启动时自动进入安全模式,在安全模式阶段,说法错误的是

A.安全模式目的是在系统启动时检查各个DataNode上数据块的有效性

B.根据策略对数据块进行必要的复制或删除

C.当数据块最小百分比数满足的最小副本数条件时,会自动退出安全模式

D.文件系统允许有修改

答案:

D

 

21.下列关于HDFS为存储MapReduce并行切分和处理的数据做的设计,错误的是

A.   FSDataInputStream扩展了DataInputStream以支持随机读

B.   为实现细粒度并行,输入分片(InputSplit)应该越小越好

C.   一台机器可能被指派从输入文件的任意位置开始处理一个分片

D.   输入分片是一种记录的逻辑划分,而HDFS数据块是对输入数据的物理分割

答案:

B

 

多选题

1.关于SecondaryNameNode哪项是正确的?

a)它是NameNode的热备

b)它对内存没有要求

c)它的目的是帮助NameNode合并编辑日志,减少NameNode启动时间

d)SecondaryNameNode应与NameNode部署到一个节点

答案CD

2.下列哪项可以作为集群的管理?

a)Puppetb)Pdshc)ClouderaManagerd)Zookeeper

答案1:

ABC

3.配置机架感知的下面哪项正确

a)如果一个机架出问题,不会影响数据读写

b)写入数据的时候会写到不同机架的DataNode中

c)MapReduce会根据机架获取离自己比较近的网络数据

答案ABC

具体可以参考

hadoop机架感知--加强集群稳固性,该如何配置hadoop机架感知

4.Client端上传文件的时候下列哪项正确

a)数据经过NameNode传递给DataNode

b)Client端将文件切分为Block,依次上传

c)Client只上传数据到一台DataNode,然后由NameNode负责Block复制工作

答案B

5.下列哪个是Hadoop运行的模式

a)单机版b)伪分布式c)分布式

答案ABC

6.Cloudera提供哪几种安装CDH的方法

a)Clouderamanagerb)Tarballc)Yumd)Rpm

答案:

ABCD具体可以参考

HadoopCDH四种安装方式总结及实例指导

 

简答题

1.Hadoop集群可以运行的3个模式?

1)单机(本地)模式;

2)伪分布式模式;

3)全分布式模式;

2.单机(本地)模式中的注意点?

在单机模式(standalone)中不会存在守护进程,所有东西都运行在一个JVM上。

这里同样没有DFS,使用的是本地文件系统。

单机模式适用于开发过程中运行MapReduce程序,这也是最少使用的一个模式。

3.伪分布模式中的注意点?

伪分布式(Pseudo)适用于开发和测试环境,在这个模式中,所有守护进程都在同一台机器上运行。

4.全分布模式又有什么注意点?

全分布模式通常被用于生产环境,这里我们使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之上。

这里会存在Namenode运行的主机,Datanode运行的主机,以及tasktracker运行的主机。

在分布式环境下,主节点和从节点会分开。

5.Hadoop是否遵循UNIX模式?

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

6.Hadoop的核心配置是什么?

Hadoop的核心配置通过两个xml文件来完成:

1,hadoop-default.xml;2,hadoop-site.xml。

这些文件都使用xml格式,因此每个xml中都有一些属性,包括名称和值,但是当下这些文件都已不复存在。

7.那当下又该如何配置?

Hadoop现在拥有3个配置文件:

1,core-site.xml;2,hdfs-site.xml;3,mapred-site.xml。

这些文件都保存在conf/子目录下。

8.fs.mapr.working.dir只是单一的目录?

fs.mapr.working.dir只是一个目录。

9.hdfs-site.xml的3个主要属性?

dfs.name.dir决定的是元数据存储的路径以及DFS的存储方式(磁盘或是远端)

dfs.data.dir决定的是数据存储的路径

fs.checkpoint.dir用于第二Namenode

10.如何退出输入模式?

退出输入的方式有:

1,按ESC;2,键入:

q(如果你没有输入任何当下)或者键入:

wq(如果你已经输入当下),并且按下Enter。

11.“jps”命令的用处?

这个命令可以检查Namenode、Datanode、TaskTracker、JobTracker是否正常工作。

12.如何重启Namenode?

点击stop-all.sh,再点击start-all.sh。

键入sudohdfs(Enter),su-hdfs(Enter),/etc/init.d/ha(Enter),及/etc/init.d/hadoop-0.20-namenodestart(Enter)。

13.Fsck的全名?

全名是:

FileSystemCheck。

14.mapred.job.tracker命令的作用?

可以让你知道哪个节点是JobTracker。

15./etc/init.d命令的作用是?

/etc/init.d说明了守护进程(服务)的位置或状态,其实是LINUX特性,和Hadoop关系不大。

16.如何在浏览器中查找Namenode?

如果你确实需要在浏览器中查找Namenode,你不再需要localhost:

8021,Namenode的端口号是50070。

17.hadoop-env.sh是用于做什么的?

hadoop-env.sh提供了Hadoop中.JAVA_HOME的运行环境。

18.Master文件是否提供了多个入口?

是的你可以拥有多个Master文件接口。

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

hadoop-env.sh现在位于conf。

20.在Hadoop_PID_DIR中,PID代表了什么?

PID代表了“ProcessID”。

21./var/hadoop/pids用于做什么?

/var/hadoop/pids用来存储PID。

22.Hadoop需求什么样的网络?

Hadoop核心使用Shell(SSH)来驱动从节点上的服务器进程,并在主节点和从节点之间使用password-lessSSH连接。

23.全分布式环境下为什么需求password-lessSSH?

这主要因为集群中通信过于频繁,JobTracker需要尽可能快的给TaskTracker发布任务。

24.SSH工作的端口号是?

SSH工作的端口号是NO.22,当然可以通过它来配置,22是默认的端口号。

25.为什么SSH本地主机需要密码?

在SSH中使用密码主要是增加安全性,在某些情况下也根本不会设置密码通信。

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

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

27.假如Namenode中没有数据会怎么样?

没有数据的Namenode就不能称之为Namenode,通常情况下,Namenode肯定会有数据

28.当JobTracker宕掉时,Namenode会发生什么?

当JobTracker失败时,集群仍然可以正常工作,只要Namenode没问题。

29.是否可以在Windows上运行Hadoop?

你最好不要这么做,RedHatLinux或者是Ubuntu才是Hadoop的最佳操作系统。

在Hadoop安装中,Windows通常不会被使用,因为会出现各种各样的问题。

因此,Windows绝对不是Hadoop的推荐系统。

30.简要描述如何安装配置一个apache开源版hadoop,描述即可,列出步骤更好

1.配置主机名

2.配置Hosts

3.配置面密码互通

4.安装JDK

5.安装hadoop

6.配置hadoop

(1)修改hadoop-env.sh

(2)修改core-site.xml

(3)修改hdfs-site.xml

(4)修改mapred-site.xml

(5)修改yarn-site.xml

(6)修改slaves

7.配置hadoop的环境变量

8.格式化namenode

32.请列出正常工作的hadoop集群中hadoop都需要启动哪些进程,他们的作用分别是什么?

NameNode--hdfs名字节点,存储hdfs元数据

SecondaryNameNode--辅助NameNode实现fsimage文件和edits文件的合并

DataNode--存储数据的节点

ResourceManager--负责集群中所有资源的统一管理和分,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序

NodeManager--是YARN中每个节点上的代理,它管理Hadoop集群中单个计算节点,包括与ResourceManger保持通信,监督Container的生命周期管理,监控每个Container的资源使用(内存、CPU等)情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务(auxiliaryservice)

33.请写出以下执行命令

1)杀死一个job?

hadoopjob–killjob_id

2)删除hdfs上的/tmp/aaa目录

hadoopfs-rmdir/tmp/aaa

3加入一个新的存储节点和删除一个计算节点需要刷新集群状态命令?

hadoopbalance

5.请列出你所知道的hadoop调度器,并简要说明其工作方法?

(1)默认的调度器FIFO

(2)计算能力调度器CapacityScheduler

(3)公平调度器FairScheduler

(4)适用于异构集群的调度器LATE

(5)适用于实时作业的调度器DeadlineScheduler和Constraint-basedScheduler

6.请列出在你以前工作中所使用过的开发mapreduce的语言?

Java

7.当前日志采样格式为

34.hive有哪些方式保存元数据,各有哪些特点?

Hive原生使用derby作为元数据库,无法并发调用hive

可以将Hive元数据保存在mysql数据库中

远程服务器模式,在服务器端启动一个MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer访问元数据库

35.请简述hadoop怎么样实现二级排序?

有两种方法进行二次排序,分别为:

bufferandinmemorysort和value-to-keyconversion。

对于bufferandinmemorysort,主要思想是:

在reduce()函数中,将某个key对应的所有value保存下来,然后进行排序。

这种方法最大的缺点是:

可能会造成outofmemory。

对于value-to-keyconversion,主要思想是:

将key和部分value拼接成一个组合key(实现WritableComparable接口或者调用setSortComparatorClass函数),这样reduce获取的结果便是先按key排序,后按value排序的结果,需要注意的是,用户需要自己实现Paritioner,以便只按照key进行数据划分

36.简述hadoop实现join的几种方法?

2.1reducesidejoin

reducesidejoin是一种最简单的join方式,其主要思想如下:

在map阶段,map函数同时读取两个文件File1和File2,为了区分两种来源的key/value数据对,对每条数据打一个标签(tag),比如:

tag=0表示来自文件File1,tag=2表示来自文件File2。

即:

map阶段的主要任务是对不同文件中的数据打标签。

在reduce阶段,reduce函数获取key相同的来自File1和File2文件的valuelist,然后对于同一个key,对File1和File2中的数据进行join(笛卡尔乘积)。

即:

reduce阶段进行实际的连接操作。

2.2mapsidejoin

之所以存在reducesidejoin,是因为在map阶段不能获取所有需要的join字段,即:

同一个key对应的字段可能位于不同map中。

Reducesidejoin是非常低效的,因为shuffle阶段要进行大量的数据传输。

Mapsidejoin是针对以下场景进行的优化:

两个待连接表中,有一个表非常大,而另一个表非常小,以至于小表可以直接存放到内存中。

这样,我们可以将小表复制多份,让每个maptask内存中存在一份(比如存放到hashtable中),然后只扫描大表:

对于大表中的每一条记录key/value,在hashtable中查找是否有相同的key的记录,如果有,则连接后输出即可。

为了支持文件的复制,Hadoop提供了一个类DistributedCache,使用该类的方法如下:

(1)用户使用静态方法DistributedCache.addCacheFile()指定要复制的文件,它的参数是文件的URI(如果是HDFS上的文件,可以这样:

hdfs:

//namenode:

9000/home/XXX/file,其中9000是自己配置的NameNode端口号)。

JobTracker在作业启动之前会获取这个URI列表,并将相应的文件拷贝到各个TaskTracker的本地磁盘上。

(2)用户使用DistributedCache.getLocalCacheFiles()方法获取文件目录,并使用标准的文件读写API读取相应的文件。

2.3SemiJoin

SemiJoin,也叫半连接,是从分布式数据库中借鉴过来的方法。

它的产生动机是:

对于reducesidejoin,跨机器的数据传输量非常大,这成了join操作的一个瓶颈,如果能够在map端过滤掉不会参加join操作的数据,则可以大大节省网络IO。

实现方法很简单:

选取一个小表,假设是File1,将其参与join的key抽取出来,保存到文件File3中,File3文件一般很小,可以放到内存中。

在map阶段,使用DistributedCache将File3复制到各个TaskTracker上,然后将File2中不在File3中的key对应的记录过滤掉,剩下的reduce阶段的工作与reducesidejoin相同。

2.4reducesidejoin+BloomFilter

在某些情况下,SemiJoin抽取出来的小表的key集合在内存中仍然存放不下,这时候可以使用BloomFiler以节省空间。

BloomFilter最常见的作用是:

判断某个元素是否在一个集合里面。

它最重要的两个方法是:

add()和contains()。

最大的特点是不会存在falsenegative,即:

如果contains()返回false,则该元素一定不在集合中,但会存在一定的truenegative,即:

如果contains()返回true,则该元素可能在集合中。

因而可将小表中的key保存到BloomFilter中,在map阶段过滤大表,可能有一些不在小表中的记录没有过滤掉(但是在小表中的记录一定不会过滤掉),这没关系,只不过增加了少量的网络IO而已。

37.请用Java实现非递归二分查找?

publicstaticintbinarySearch(Integer[]srcArray,intdes){

//第一个位置.

intlow=0;

//最高位置.数组长度-1,因为下标是从0开始的.

inthigh=srcArray.length-1;

//当low"指针"和high不重复的时候.

while(low<=high){

//中间位置计算,low+最高位置减去最低位置,右移一位,相当于除2.也可以用(high+low)/2

intmiddle=low+((high-low)>>1);

//与最中间的数字进行判断,是否相等,相等的话就返回对应的数组下标.

if(des==srcArray[middle]){

returnmiddle;

//如果小于的话则移动最高层的"指针"

}elseif(des

high=middle-1;

//移动最低的"指针"

}else{

low=middle+1;

}

}

return-1;

}

38.请简述mapreduce中,combiner,partition作用?

Partition:

分区操作是shuffle操作中的一个重要过程,作用就是将map的结果按照规则分发到不同reduce中进行处理,从而按照分区得到多个输出结果

Combiner:

每一个MapperTask可能会产生大量的输出,combiner的作用就是在MapperTask端对输出先做一次合并,以减少传输到reducerTask的数据量

39用mapreduce如何处理数据倾斜问题

1.增加reduce的jvm内存

2.增加reduce个数

3.customerpartition

4.其他优化的讨论.

5.reducesortmerge排序算法的讨论

6.正在实现中的hiveskewedjoin.

7.pipeline

8.distinct

9.index尤其是bitmapindex

40Hive中内部表和外部表的区别

内部表现有表后有数据,数据在hive的hdfs目录下管理

外部表先有数据后有表,数据不再hive

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1