大数据相关企业面试问题 一(hadoop、hive、hbase、flume)

大数据相关企业面试问题 (一)

1.Hadoop

1.mapreduce如果单纯的想增加map的数量提高并行度该怎么做?
答:①具体的数据分片是这样的,InputFormat在默认情况下会根据hadoop集群的DFS块大小进行分片,每一个分片会由一个map任务来进行处理;正常的map数量的大致是每一个Node是10~100个,对于CPU消耗较小的作业可以设置Map数量为300个左右,
但是由于hadoop的每一个任务在初始化时需要一定的时间,因此比较合理的情况是每个map执行的时间至少超过1分钟。
②当然用户还是可以通过参数mapred.min.split.size在作业提交客户端进行自定义设置。还有一个重要参数就是mapred.map.tasks,这个参数设置的map数量仅仅是一个提示,只有当InputFormat 决定了map任务的个数比mapred.map.tasks值小时才起作用。
③Map任务的个数也能通过使用JobConf 的conf.setNumMapTasks(int num)方法来手动地设置。这个方法能够用来增加map任务的个数,但是不能设定任务的个数小于Hadoop系统通过分割输入数据得到的值。
④为了提高集群的并发效率,可以设置一个默认的map数量,当用户的map数量较小或者比本身自动分割的值还小时可以使用一个相对交大的默认值,从而提高整体hadoop集群的效率。

2.hdfs的底层原理,hdfs的存储各组件以及作用
答:①各组件和作用
namenode:存储元数据,管理数据块映射;处理客户端的读写请求。一般会配置两台,一个active状态的,一个standby状态。
journalnode:负责两个状态的namenode进行数据同步,保持数据一致。
ZKFC:作用是HA自动切换。会将NameNode的active状态信息保存到zookeeper。
datanode:负责存储client发来的数据块block;执行数据块的读写操作。
②工作原理:hdfs的底层原理从读写流程来回答;

3.hadoop如何开启机架感知策略?
答:默认情况下,Hadoop机架感知是没有启用的,需要在NameNode机器 的hadoop-site.xml里配置一个选项,topology.script.file.name设置
/path/to/script这个配置选项的value指定为一个可执行程序,通常为一个脚本,该脚本接受一个参数,输出一个值。接受的参数通常 为datanode机器的ip地址,而输出的值通常为该ip地址对应的datanode 所在的rackID,例如”/rack1”。Namenode启动时,会判断该配置选项是否 为空,如果非空,则表示已经启用机架感知的配置,此时namenode会根据 配置寻找该脚本,并在接收到每一个datanode的heartbeat时,将该 datanode的ip地址作为参数传给该脚本运行,并将得到的输出作为该 datanode所属的机架,保存到内存的一个map中。

4.Hdfs常用API
答:递归打印并且最大单位打印文件hadoop fs -ls -h -R /绝对路径绝对路径目录
上传HDFS目录中有同名文件会被覆盖hadoop fs -put -f ~/hadoop/test.txt /绝对路径目录
下载文件并重命名。可以简写hadoop fs -get /test.txt ~/hadoop/test.txt
同时创建父级目录hadoop fs -mkdir -p /newpkg/newpkg2/newpkg3

5.yarn调度的流程(MR提交任务到yarn的流程)及三种调度策略,任务调度时的内存占用情况
答:
I yarn调度流程:
1.应用程序通client类向ResourceManager提交程序,Application运行所需要的入口类,出口类,运行的命令,运行所需要的cpu资源和内存资源,jar包资源。
2.ResourceManager通过内部的调度器,去集群中寻找资源,找到资源后与NodeManager进行通信,去启动相应的ApplicationMaster,AM会按照事先的规划将任务切分为许多的task任务。
3.ApplicationMaster之后向ResourceManager进行申请资源,RM会将资源进行动态的分配。
4.ApplicationMaster获得资源后会再将资源进一步分配给内部的task.
5.之后,ApplicationMaster会向NodeManager进行请求,让NodeManager给启动Task封装到Container中运行。
II 三种策略如下:
①FIFO策略:有两个任务,第一个是任务需要大量资源;第二个需要少 量资源,但是紧急重要任务,此时第二个需要等待第一个执行完,才能执行第二个。弊端:由于顺序执行任务,如果第一个是大量资源,后续任务需要等待。没有做到资源共享。
②容量调度策略:属于共享调度策略。将集群资源,给队列分配部分资源,每个队列互不干涉;
弊端:某个队列突然来个大的任务,那这个大的任务不会占用其他队列资源,执行时间长,效率低。
改良:可以设置弹性队列,当配置弹性队列,A队列需要很大的资源运行任务的时候,会占用其他队列的资源,这个是可以配置的。
当其他队列资源空闲的时候(没有任务运行),就可以占用,运行完成后,就还回。
③公平调度策略:队列间可以互相共享资源,如果权重高的任务来了,权重低的任务会分给权重高的任务部分资源,必要时,可kill掉权重低的任务。
公平调度器支持抢占功能。所谓抢占,就是允许调度器终止那些占用资源超过了其公平份额的队列的容器,这些容器资源释放后可以分配给资源数量低于应得份额的队列。
抢占会降低整个集群的效率,因为被终止的containers 需要重新执行。
III 任务调度时内存占用情况
通过yarn的webUI查看,8088端口。可以手动kill掉占用资

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值