Miles-hadoop面考试试题-简.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.0简要描述如何安装配置apache的一个开源hadoop ,只描述即可,无需列出具体步骤,列出具体步骤更好。

答:第一题:1使用root账户登录
2修改IP
3修改host主机名
4配置SSH免密码登录
5关闭防火墙
6安装JDK
6解压hadoop安装包
7 酉己置hadoop 的核文彳牛hadoop-env.sh , core-site.xml z mapred-site.xml , hdfs-site.xml
8配置hadoop环境变量
9格式化hadoop namenode ・format
10启动节点start-all.sh
3.0请写出以下的shell命令
(1)杀死一个job
(2 )删除hdfs上的/tmp/aaa目录
(3)加入一个新的存储节点和删除一个节点需要执行的命令
答:(1) hadoop job -list 得到job 的id ,然后执行hadoop job -kill jo bld就可以杀死一个指定jobld的job工作了。

(2 ) hadoop fs ・rmr/tmp/aaa
(3)增加一个新的节点在新的几点上执行
Hadoop daem on.sh start data node
Hadooop daem on.sh start tasktracker/no dema nager
下线时,要在conf目录下的excludes文件中列出要下线的datanode机器主机名
然后在主节点中执行hadoop dfsadmin・refreshnodes 5下线一个dat anode
删除一个节点的时候,只需要在主节点执行
hadoop mradmi n ・ refresh no des ・・・5 下线—tasktracker/nodemanager
4.0 请列出你所知道的hadoop调度器,并简要说明其工作方法
答:Fifo schedular :默认,先进先出的原则
Capacity schedular :计算能力调度器,选择占用最小、优先级高的先执行,依此类推。

Fair schedular:公平调度z所有的job具有相同的资源。

就用过java和hiveQL o
Java写mapreduce可以实现复杂的逻辑,如果需求简单,则显得繁琐。

HiveQL基本都是针对hive中的表数据进行编写,但对复杂的逻辑(杂)很难进行实现。

写起来简单。

10简述hadoop实现jion的几种方法
Map side join——大小表join的场景,可以借助distributed cache
Reduce side join
12.0 请简述mapreduce 中的combine 和partition 的作用
答:combiner是发生在map的最后一个阶段,其原理也是一个小型的reducer z主要作用是减少输出到reduce的数据量,缓解网络传输瓶颈,提高reducer的执行效率。

partition的主要作用将map阶段产生的所有kv对分配给不同的reducer task处理,可以将reduce阶段的处理负载进行分摊
18.我们在开发分布式计算job的时候,是否可以去掉reduce阶段
答:可以,例如我们的集群就是为了存储文件而设计的,不涉及到数据的计算,就可以将m叩Reduce都省掉。

比如,流量运营项目中的行为轨迹增强功能部分
怎么样才能实现去掉reduce阶段
去掉之后就不排序了 ,不进行shuffle操作了
19 hadoop中常用的数据压缩算法
答:
Lzo
Gzip
Default
Snapyy
如果要对数据进行压缩,最好是将原始数据转为SequenceFile或者Parquet File(s park) 20. mapreduce的调度模式(题意模糊,可以理解为yarn的调度模式,也可以理解为mr 的内部工作流程)
答:appmaster作为调度主管,管理maptask和reducetask
Appmaster 负责启动、监控maptask 和reducetask
Maptask处理完成之后,appmaster会监控到,然后将其输出结果通知给reducetas k ,然后reducetask从map端拉取文件,然后处理;当reduce阶段全部完成之后,appmaster还要向resourcemanager注销自己
25.datanode在什么t青况下不会备份数据
答:在客户端上传文件时指定文件副本数量为1
bine岀现在哪个过程
答:shuffle过程中
具体来说,是在maptask输出的数据从内存溢出到磁盘,可能会调多次Combiner使用时候要特别谨慎,不能影响最后的逻辑结果
27.hdfs的体系结构
答:
集群架构:
n amenode data node secondar yn ame node
(active n ame node ,sta nd by n ame node)jour naln ode zkfc
内部工作机制:
数据是分布式存储的
对外提供一个统一的目录结构
对外提供一个具体的响应者(namenode )
数据的block机制,副本机制
Namenode和datanode的工作职责和机制
读写数据流程
28. flush的过程
答:flush是在内存的基础上进行的,首先写入文件的时候,会先将文件写到内存中,当内存写满的时候,一次性的将文件全部都写到硬盘中去保存,并清空缓存中的文件,32.三个datanode中当有一个datanode出现错误时会怎样?
答:
Namenode会通过心跳机制感知到datanode下线
会将这个datanode上的block块在集群中重新复制一份,恢复文件的副本数量
会引发运维团队快速响应,派出同事对下线datanode进行检测和修复,然后重新上线
34.描述一下hadoop中,有哪些地方使用到了缓存机制,作用分别是什么?
答:
Shuffle 中
Hbase——客户端/regio nserver
35.MapReduce优化经验
答:(1J设置合理的map和reduce的个数。

合理设置blocksize
(2.)避免出现数据倾斜
(bine 函数
(4.对数据进行压缩
(5.小文件处理优化:事先合并成大文件,combineTextlnputformat,在hdfs上用m apreduce将小文件合并成SequenceFile大文件(key:文件名,value :文件内容) (6.参数优化
39.mapreduce的大致流程
答:主要分为八个步骤
1/对文件进行切片规划
2/启动相应数量的maptask进程
3/调用FilelnputFormat中的RecordReader,读一行数据并封装为klvl 4/调用自定义的m叩函数z并将klvl传给map
5/收集m叩的输出,进行分区和排序6/reduce task任务启动,并从map端拉取数据7/reduce task调用自定义的reduce函数进行处理
8/调用outputformat的recordwriter将结果数据输出
48,hadoop运行原理
答:hadoop的主要核心是由两部分组成,HDFS和m叩reduce ,首先HDFS的原理就是分布式的文件存储系统,将一个大的文件,分割成多个小的文件,进行存储在多台服务器上。

Mapreduce的原理就是使用JobTracker和TaskTracker来进行作业的执行。

M叩就是将任务展开“educe是汇总处理后的结果。

49.m叩reduce的原理
答:mapreduce的原理就是将一个MapReduce框架由一个单独的master JobTrac ker 和每个集群节点一个slave TaskTracker共同组成。

master负责调度构成一个作业的所有任务,这些的slave上,master监控它们的执行,重新执行已经失败的任务。

而slave 仅负责执行由maste指派的任务。

50.HDFS存储机制
答:HDFS主要是一个分布式的文件存储系统,由namenode来接收用户的操作请求, 然后根据文件大小,以及走义的block块的大小,将大的文件切分成多个block块来进行保存
52.如何确认hadoop集群的健康状况
答:有完善的集群监控体系(ganglia , nagios )
Hdfs dfsadmin -report
Hdfs haadmin -getServiceState rrnl
53.mapreduce作业z不让reduce输岀,用什么代:reduce的功能。

63.谈谈hadoopl和hadoop2的区别
答:hadoopl的主要结构是由HDFS和m叩reduce组成的,HDFS主要是用来存储数据, mapreduce主要是用来计算的,那么HDFS的数据是由namenode来存储元数据信息,datanode来存储数据的。

Jobtracker接收用户的操作请求之后去分配资源执行t ask 任务。

在hadoop2中,首先避免了namenode单点故障的问题,使用两个namenode来组成namenode feduration的机构,两个namenode使用相同的命名空间,一个是s tandby 状态,一个是active状态。

用户访问的时候,访问standby状态,并且,使用journalnode 来存储数据的原信息,一个namenode负责读取journalnode中的数据, —个
namenode负责写入journalnode中的数据,这个平台组成了hadoop的HA就是high availableAbility 高可靠。

然后在hadoop2中没有了jobtracker的概念了,统一的使用yarn平台来管理和调度资源,yarn平台是由resourceManager和NodeManager来共同组成的,Resourc eManager来接收用户的操作请求之后,去NodeManager上面启动一个主线程负责资源分配的工作,然后分配好了资源之后告知ResourceManager,然后ResourceMa nager 去对应的机器上面执行task任务。

67.文件大小默认为64M z改为128M有啥影响?
答:更改文件的block块大小,需要根据我们的实际生产中来更改block的大小,如果block定义的太小,大的文件都会被切分成太多的小文件,减慢用户上传效率,如果bl ock 定义的太大,那么太多的小文件可能都会存到一个block块中,虽然不浪费硬盘资
源,可是还是会增加namenode的管理内存压力。

69. RPC 原理?
答:
L调用客户端句柄;执行传送参数
2.调用本地系统内核发送网络消息
3.消息传送到远程主机
4.服务器句柄得到消息并取得参数
5.执彳旋程过程
6.执行的过程将结果返回服务器句柄
7.服务器句柄返回结果,调用远程系统内核
8.消息传回本地主机
9.客户句柄由内核接收消息
10.客户接收句柄返回的数据
70.对Hadoop有没有调优经验z没有什么使用心得?(调优从参数调优讲起)
dfs.block.size
Mapredure : io.sort.mb io.sort.spill.perce nt mapred」o cal.dir mapred.map.tasks &mapred.tasktracker.map.tasks.maximum mapred.reduce.tasks
&mapred.tasktracker.reduce.tasks.maximum mapred.reduce.max.attempts mapred.reduce.parallel.copies mapreduce.reduce.shuffle.maxfetchfailures mapred.child.java.opts mapred.reduce.tasks.speculative.executi on
press.map.output & pressi on .codec pleted.maps
72以你的实际经验,说下怎样预防全表扫描
答:
1.应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描
2.应尽量避免在where子句中使用!二或<>操作符,否则将引擎放弃使用索引而进行
全表扫
3.描应尽量避免在where子句中使用or来连接条件,否则将导致引擎放弃使用索引而进行
全表扫描
4.in和not in ,用具体的字段列表代替,不要返回用不到的任何字段。

"也要慎用, 否则会导致全表扫描
5.避免使用模糊查询
6.俗可地方都不要使用select* from t
76. HadoopHA集群中各个服务的启动和关闭的顺序?
答:
77.在hadoop开发过程中使用过哪些算法?其应用场景是什么?
答:排序,分组,topk Join z group
78.在实际工作中使用过哪些集群的运维工具,请分别阐述期作用。

答:nmon ganglia nagios
79.一台机器如何应对那么多的请求访问,高并发到底怎么实现,一个请求怎么产生的, 在服务端怎么处理的,最后怎么返回给用户的,整个的环节操作系统是怎么控制的?
81.问:你们的服务器有多少台?
100多台
82.问:你们服务器的内存多大?
128G或者64G的
88.你们处理数据是直接读数据库的数据还是读文本数据?
将日志数据导入到hdfs之后进行处理
89.你们写hive的hql语句,大概有多少条?
不清楚,我自己写的时候也没有做过统计
90.你们提交的job任务大概有多少个?这些job执行完大概用多少时间?(面试了三家,都问这个问题)
没统计过,加上测试的,会有很多
Sea阶段;一小时运行一个job z处理时间约12分钟
Etl阶段,有2千多个job ,从凌晨12:00开始次第执行,到早上5点左右全部跑完。

93.你在项目中遇到了哪些难题,是怎么解决的?
Storm获取实时位置信息动态端口的需求
101. job的运行流程(提交一个job的流程)?
105.解释"hadoop"和"hadoop生态系统〃两个概念
109. MapReduce 2.0"与"YARN"是否等同,尝试解释说明
MapReduce 2.0 ・・amapreduce + yarn
110.MapReduce 2.0 中,MRAppMaster 主要作用是什么,MRAppMaster 如何实现任务
容错的?
111.为什么会产生yarn,它解决了什么问题,有什么优势?
114.数据备份,你们是多少份,如果数据超过存储容量,你们怎么处理?
3份,多加几个节点
115.怎么提升多个JOB同时执行带来的压力,如何优化,说说思路?
增加运算能力
118.hadoop 中RecorderReader 的作用是什么???
1、在hadoop中走义的主要公用InputFormat中,哪个是默认值? FilelnputFor mat
2、两个类TextlnputFormat 和KeyValuelnputFormat 的区别是什么?
答:TextlnputFormat主要是用来格式化输入的文本文件的,KeyValuelnputFor mat则主要是用来指定输入输出的key,value类型的
3、在一个运行的hadoop任务中,什么是InputSplit ?
InputSplit是InputFormat中的一个方法,主要是用来切割输入文件的,将输入文件切分成多个小文件,
然后每个小文件对应一个map任务
4、Hadoop框架中文件拆分是怎么调用的?
InputFormat ・・> TextlnputFormat ・・>RecordReader —> LineRecordRe ader --> LineReade「
5、参考下列M/R系统的场景:hdfs块大小为64MB ,输入类为FilelnputFormat,
有3个文件的大小分别为64KB, 65MB, 127MB
会产生多少个maptask 4个65M这个文件只有一个切片《原因参见笔记汇总Tex tlnputformat源码分析部分》
& 如果没有自定义partitioned那数据在被送达reducer前是如何被分区的?
hadoop有一个默认的分区类,HashPartioer类z通过对输入的k2去hash值来确认map输出的k2,v2送到哪一个reduce中去执行。

10、分别举例什么情况要使用combiner,什么情况不使用?
求平均数的时候就不需要用combiner,因为不会减少reduce执行数量。

在其他的时候,可以依据t青况,使用combiner,来减少map的输出数量,减少拷贝到redu ce 的文件,从而减轻reduce的压力,节省网络开¥肖,提升执行效率
11、Hadoop中job和tasks之间的区别是什么?
Job是我们对一个完整的mapreduce程序的抽象封装
Task是job运行时,每一个处理阶段的具体实例,如map task # reduce task , ma ptask 和reduce task都会有多个并发运行的实例
12、hadoop中通过拆分任务到多个节点运行来实现并行计算,但某些节点运行较慢会拖慢整个任务的运行,hadoop采用全程机制应对这个情况?
Speculate推测执行
14、有可能使hadoop任务输出到多个目录中吗?如果可以,怎么做?
自定义outputformat或者用multioutputs工具
15、如何为一个hadoop任务设置mappers的数量?
Split机制
16、如何为一个hadoop任务设置要创建reduder的数量?
可以通过代码设置
具体设置多少个,应该根据硬件配置和业务处理的类型来决定
namenode :管理集群,并记录datanode文件信息。

Secondaryname:可以做冷备,对一定范围内数据做快照性备份。

Data node存储数据
ResourceManager负责集群中所有资源的统一管理和分配
NM是ResourceManager在每台机器上的代理,负责容器管理,并监控它们的资源使用情况,以及向ResourceManager/Scheduler 资源使用报告
6.Fifo schedular :默认,先进先出的原则
Capacity scheduler:计算能力调度器,选择占用最小、优先级高的先执行,依此类推。

Fair scheduler:尽可能保证所有的作业都能够获得等量的资源份额
13.
combiner:,接收map的值,经过计算后给reduce ,
partition:将输出的结果分别保存在不同的文件中
彩虹:
17.
(1)设置一个hash份数N ,用来对条数众多的key进行打散。

(2)对有多条重复key的那份数据进行处理从1到N将数字加在key后面作为新key , 如果需要和另一份数据关联的话,则要重写比较类和分发类。

如此实现多条key的平均分发。

18.hadoop框架怎么优化

1好的模型设计事半功倍。

2解决数据倾斜问题。

3减少job数。

4设置合理的map reduce的task数5自己动手写sql解决数据倾斜问题是个不错的选择。

6对count(distinct)采取漠视的方法,
7对小文件进行合并,
9 hadoop中常用的数据压缩算法
答:
Lzo
Gzip
Default
Snapyy
如果要对数据进行压缩,最好是将原始数据转为SequenceFile或者Parquet File (spark)
20.
可以
29hdfs体系结构(HDFS原理)
采用Master-Slave 模式:
NameNode中心服务器(Master):维护文件系统树、以及整棵树内的文件目录、负责整个数据集群的管理。

DataNode分布在不同的机架上(Slave ):在客户端或者NameNode的调度下,存储并检索数据块,并且定期向NameNode发送所存储的数据块的列表。

客户端与NameNode获取元数据;
与DataNode交互获取数据。

默认情况下,每个DataNode都保存了3个副本,其中两个保存在同一个机架的两个不同的节点上。

另一个副本放在不同机架上的节点上。

141机架感知
分布式的集群通常包含非常多的机器,由于受到机架槽位和交换机网口的限制,通常大型的分布式集群都会跨好几个机架,由多个机架上的机器共同组成一个分布式集群。

机架内的机器之间的网络速度通常都会高于跨机架机器之间的网络速度,并且机架之间机器的网络通信通常受到上层交换机间网络带宽的限制。

具体到Hadoop集群,由于hadoop的HDFS对数据文件的分布式存放是按照分块block存储,每个block会有多个副本(默认为3),并且为了数据的安全和高效,所
以hadoop默认对3个副本的存放策
第一个block副本放在和client所在的node里(如果client不在集群范围内,则这第—个node是随机选取的)。

第二个副本放置在与第一个节点不同的机架中的node中(随机选择)。

第三个副本似乎放置在与第一个副本所在节点同一机架的另一个节点上如果还有更多的副本就随机放在集群的node里。

143.HA
NameNode存在单点故障,每一个集群只有一个NameNode #如果这个机器或进程不可用,整个集群就无法使用,直到重启NameNode或者新启动一个NameNode节点HDFS的高可用性(HA)就可以解决上述问题,通过提供运行在同一集群中的〃主/备" 两个冗余NameNode ,允许在机器宕机或系统维护的时候,快速转移到另一个NameNode o 156.fsimage 和edits 的区别fsimage保存了最新的元数据检查点。

edits保存自最新检查点后的命名空间的变化。

HDFS原理、
MAPREDUCE 原理
HDFS读写流程

1、客户端发送请求,调用DistributedFileSystem API的open方法发送请求到Namenode z获得block的位置信息,因为真正的b l ock是存在Datanode节点上的, 而nomcnodc里存放了b l ock位置信息的元数据。

2、N amenode返回所有block的位置信息,并将这些信息返回给客户端。

3、客户端拿到block的位置信息后调用FSDatalnputStream API的read方法并行的读取block信息,图中4和5流程是并发的‘block默认有3个副本,所以每一个block 只需要从一个副本读取就可以。

4、d atanode返回给客户端。


1、客户端发送请求,调用DistributedFileSystem API的create方法去请求namenode
z并告诉namenode上传文件的文件名、文件大小、文件拥有者。

2、n amenode根据以上信息算出文件需要切成多少块block ,以及block要存放在哪个datanode上,并将这些信息返回给客户端。

3、客户端调用FSDatalnputStream API的write方法首先将其中一个block写在datanode上,每一个block默认者E有3个副本z是由已经上传了block的datanode 产生新的线程,由这个datanode按照放置副本规则往其它datanode写副本,这样的优
势就是快。

4、写完后返回给客户端一个信息,然后客户端在将信息反馈给namenode。

5、需要注意的是上传文件的拥有者就是客户端上传文件的用户名,举个例子用
w i ndows客户端上传文件,那么这个文杵的拥有者就是adm i n i stetor ,和li nux上的系统用户名不是一样的。

hadoopl 与hadoop2 的区别
(1)针对Hadoopl.O单NameNode制约HDFS的扩展性问题,提出HDFS Federation 尼让多个NameNode分管不同的目录进而实现访问隔离和横向扩展,同时彻底解决了NameNode单点故障问题;
(2 )针对Hadoopl.O中的MapReduce在扩展性和多框架支持等方面的不足,它将JobTracker中的资源管理和作业控制分开,分别由ResourceManager(负责所有应用程序的资源分配)和ApplicationMaster(负责管理一^应用程序)实现,即引入了资源管理框架Yarn。

(3 ) Yarn作为Hadoop2.0中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度,不仅限于MapReduce—种框架,也可以为其他框架使用,如Tez、Spark、Storm 等
配置文件目录hadoop-2.x 在$HADOOP_HOME/etc/hadoop 目录下
hadoop-l.x 在$HADOOP_HOME/conf 目录下。

相关文档
最新文档