Hadoop 面试题

  • 目录
    • 概 述
  • 小结
  • 参考资料和推荐阅读

LD is tigger forever,CG are not brothers forever, throw the pot and shine forever.
Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, and stay away from poor people.
talk is cheap, show others the code and KPI, Keep progress,make a better result.
Survive during the day and develop at night。

目录

概 述

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

C datanode

HDfS 中的 block 默认保存3份

Jobtracker通常与NameNode在一个节点启动。

1.4.HDFS 默认 Block Size,64MB

磁盘是集群的最主要瓶颈。

SecondaryNameNode 应与 NameNode 部署到一个节点

Client 向 NameNode 发起文件写入的请求。NameNode 根据文件大小和文件块配置情况,返回给 Client 它所管理部分 DataNode 的信息。Client 将文件划分为多个 Block,根据 DataNode 的地址信息,按顺序写入到每一个DataNode 块中。

1.9.下列哪个是 Hadoop 运行的模式
a)单机版 b)伪分布式 c)分布式

Hadoop的核心配置是什么?
Hadoop的核心配置通过两个xml文件来完成:1,hadoop-default.xml;2,hadoop-site.xml。这些文件都使用xml格式,因此每个xml中都有一些属性,包括名称和值,但是当下这些文件都已不复存在。

2.2.那当下又该如何配置?
Hadoop现在拥有3个配置文件:1,core-site.xml;2,hdfs-site.xml;3,mapred-site.xml。这些文件都保存在conf/子目录下。

2.3.“jps”命令的用处?
这个命令可以检查Namenode、Datanode、Task Tracker、 Job Tracker是否正常工作。

2.4.mapreduce的原理?
2.5. HDFS存储的机制?

1、client链接namenode存数据
2.namenode记录一条数据位置信息(元数据),告诉client存哪。
3.client用hdfs的api将数据块(默认是64M)存储到datanode上。
4.datanode将数据水平备份。并且备份完将反馈client。
5.client通知namenode存储块完毕。
6.namenode将元数据同步到内存中

2.5.2.读流程:

1、client链接namenode,查看元数据,找到数据的存储位置。
2.client通过hdfs的api并发读取数据。
3.关闭连接。

2.6.举一个简单的例子说明mapreduce是怎么来运行的 ?
wordcount的例子

2.7.用mapreduce来实现下面需求?
现在有10个文件夹,每个文件夹都有1000000个url.现在让你找出top1000000url。

2.8 hadoop中Combiner的作用?
combiner是reduce的实现,在map端运行计算任务,减少map端的输出数据。
作用就是优化。
但是combiner的使用场景是mapreduce的map和reduce输入输出一样。

2.9 简述hadoop安装:
在这里插入图片描述

2.10.请列出hadoop进程名:
namenode:管理集群:冰记录datanode文件
Secondname:可以被冷备,对一定范围内的数据做快照行备份。
Datanode:存储数据:
Jobtracker:管理任务,并将任务分配给tasktracker.
Tasktracker:任务执行方。

简述Hadoop的调度器:
FIFO schedular:默认,县级先出
Capacity scedualr计算能力调取起,选择占用最小,优先级高的先执行,依次类推。
Fair schedular: 公平调度,所有的job具有相同的资源:

2.14 列出你开发mapreduec的语言
java

2.15 书写程序:
wordcount:

2.16 同语言的优缺点
hadoop是java写的,java的集成效果最好,并且平台环境统一。

2.17 hive 有哪些保存元数据的方式
1、内存数据库derby,安装小,但是数据存在内存,不稳定
2、mysql数据库,数据存储模式可以自己设置,持久化好,查看方便。
combiner是reduce的实现,在map端运行计算任务,减少map端的输出数据。
作用就是优化。
但是combiner的使用场景是mapreduce的map输出结果和reduce输入输出一样。

2.18 2.18.combiner和partition的作用
combiner是reduce的实现,在map端运行计算任务,减少map端的输出数据。
作用就是优化。
但是combiner的使用场景是mapreduce的map输出结果和reduce输入输出一样。

partition的作用是将数据分到不同的reduce进行计算,加快计算效果。

数据倾斜:map /reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完,此称之为数据倾斜。

用hadoop程序进行数据关联时,常碰到数据倾斜的情况,这里提供一种解决方法。自己实现partition类,用key和value相加取hash值:

public int getPartition(K key, V value,int numReduceTasks) {return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;}

2.22.hadoop框架中怎么来优化
(1) 从应用程序角度进行优化。由于mapreduce是迭代逐行解析数据文件的,怎样在迭代的情况下,编写高效率的应用程序,是一种优化思路。
(2) 对Hadoop参数进行调优。当前hadoop系统有190多个配置参数,怎样调整这些参数,使hadoop作业运行尽可能的快,也是一种优化思路。

(3) 从系统实现角度进行优化。这种优化难度是最大的,它是从hadoop实现机制角度,发现当前Hadoop设计和实现上的缺点,然后进行源码级地修改。该方法虽难度大,但往往效果明显。
(4)linux内核参数调整

2.22.1.从应用程序角度进行优化
(1) 避免不必要的reduce任务
如果mapreduce程序中reduce是不必要的,那么我们可以在map中处理数据, Reducer设置为0。这样避免了多余的reduce任务。

2.2.2 对参数进行调优
查看linux的服务,可以关闭不必要的服务
ntsysv
停止打印服务
#/etc/init.d/cups stop
#chkconfig cups off
关闭ipv6
#vim /etc/modprobe.conf
添加内容
alias net-pf-10 off
alias ipv6 off

调整文件最大打开数:
查看: ulimit -a 结果:open files (-n) 1024
临时修改: ulimit -n 4096
持久修改:
vi /etc/security/limits.conf在文件最后加上:

  • soft nofile 65535
  • hard nofile 65535
  • soft nproc 65535
  • hard nproc 65535

修改Linux内核参数:
vi /etc/sysctl.conf
net.core.somaxconn = 32768
web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。

调整swap分区什么时候使用:
查看:cat /proc/sys/vm/swappiness
设置:vi /etc/sysctl.conf
在这个文档的最后加上这样一行: vm.swappiness=10
表示物理内存使用到90%(100-10=90)的时候才使用swap交换区
关闭noatime
vi /etc/fstab
/dev/sda2 /data ext3 noatime,nodiratime 0 0

槽位数是在各个tasktracker上的mapred-site.xml上设置的,默认都是2

mapred.tasktracker.map.tasks.maximum #++++maptask的最大数
2

mapred.tasktracker.reduce.tasks.maximum #++++reducetask的最大数
2

调整心跳间隔:
集群规模小于300时,心跳间隔为300毫秒:
mapreduce.jobtracker.heartbeat.interval.min 心跳时间
mapred.heartbeats.in.second 集群每增加多少节点,时间增加下面的值
mapreduce.jobtracker.heartbeat.scaling.factor 集群每增加上面的个数,心跳增多少

mapreduce.tasktracker.outofband.heartbeat 默认是false
mapreduce.local.dir
mapred.job.tracker.handler.count 默认是10,可以改成50,根据机器的能力

配置HTTP线程数目
tasktracker.http.threads 默认是40,可以改成100 根据机器的能力
选择合适的压缩方式
以snappy为例:

mapred.compress.map.output
true

mapred.map.output.compression.codec
org.apache.hadoop.io.compress.SnappyCodec

启用推测执行机制
推测执行(Speculative Execution)是指在分布式集群环境下,因为程序BUG,负载不均衡或者资源分布不均等原因,造成同一个job的多个task运行速度不一致,有的task运行速度明显慢于其他task(比如:一个job的某个task进度只有10%,而其他所有task已经运行完毕),则这些task拖慢了作业的整体执行进度,为了避免这种情况发生,Hadoop会为该task启动备份任务,让该speculative task与原始task同时处理一份数据,哪个先运行完,则将谁的结果作为最终结果。
推测执行优化机制采用了典型的以空间换时间的优化策略,它同时启动多个相同task(备份任务)处理相同的数据块,哪个完成的早,则采用哪个task的结果,这样可防止拖后腿Task任务出现,进而提高作业计算速度,但是,这样却会占用更多的资源,在集群资源紧缺的情况下,设计合理的推测执行机制可在多用少量资源情况下,减少大作业的计算时间。
mapred.map.tasks.speculative.execution 默认是true
mapred.rduce.tasks.speculative.execution 默认是true

启动jvm重用功能
mapred.job.reuse.jvm.num.tasks 默认值1,表示只能启动一个task,若为-1,表示可以最多运行数不限制

设置任务超时时间
mapred.task.timeout 默认值600000毫秒,也就是10分钟。
合理的控制reduce的启动时间
mapred.reduce.slowstart.completed.maps 默认值0.05 表示map任务完成5%时,开始启动reduce任务

合理的控制reduce的启动时间
mapred.reduce.slowstart.completed.maps 默认值0.05 表示map任务完成5%时,开始启动reduce任务

跳过坏记录
当任务失败次数达到该值时,才会进入skip mode,即启用跳过坏记录数功能,也就是先试几次,不行就跳过
mapred.skip.attempts.to.start.skipping 默认值 2
map最多允许跳过的记录数
mapred.skip.map.max.skip.records 默认值0,为不启用
reduce最多允许跳过的记录数
mapred.skip.reduce.max.skip.records 默认值0,为不启用
mapred.skip.out.dir 默认值${mapred.output.dir}/_logs/

我们开发job时,是否可以去掉reduce阶段
可以。设置reduce数为0 即可。

2.24.datanode在什么情况下不会备份
datanode在强制关闭或者非正常断电不会备份。
出现在map阶段的map方法后。

hdfs有namenode、secondraynamenode、datanode组成。
为n+1模式
namenode负责管理datanode和记录元数据
secondraynamenode负责合并日志
datanode负责存储数据

2.27.3个datanode中有一个datanode出现错误会怎样?
这个datanode的数据会在其他的datanode上重新做备份。

2.28.描述一下hadoop中,有哪些地方使用了缓存机制,作用分别是什么?
在mapreduce提交job的获取id之后,会将所有文件存储到分布式缓存上,这样文件可以被所有的mapreduce共享。

2.29.如何确定hadoop集群的健康状态
通过页面监控,脚本监控。
通过页面监控,脚本监控。

小结

参考资料和推荐阅读

1.链接: 参考资料.

Hadoop 面试题相关推荐

  1. Hadoop 面试题之Hbase

    Hadoop 面试题之九 16.Hbase 的rowkey 怎么创建比较好?列族怎么创建比较好? 答: 19.Hbase 内部是什么机制? 答: 73.hbase 写数据的原理是什么? 答: 75.h ...

  2. hadoop面试题答案

    hadoop面试题答案 Hadoop 面试题,看看书找答案,看看你能答对多少(2) 1. 下面哪个程序负责 HDFS 数据存储. a)NameNode b)Jobtracker c)Datanode  ...

  3. 大数据面试题(一)----HADOOP 面试题

    "无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.". 大数 ...

  4. Hadoop面试题和答案

    Hadoop面试题和答案 1.什么是 Hadoop? Hadoop是一个分布式计算平台. 它是用 Java 编写的. 它由 Google 文件系统和 MapReduce 等功能组成. 2.运行 Had ...

  5. 100 道常见 Hadoop 面试题及答案解析

    100 道常见 Hadoop 面试题及答案解析 目录 1 单选题 ................................................................... ...

  6. Hadoop面试题汇总-20221031

    Hadoop面试题汇总 HDFS部分 1.请描述HDFS的写流程. 答: 首先由客户端向 NameNode 发起文件上传请求,NameNode 检查文件要上传的目录,并鉴权. 如果上传用户对此目录有权 ...

  7. Hadoop面试题 (网上收集版带答案)

    1.列出安装Hadoop流程步骤 a) 创建hadoop账号 b) 更改ip c) 安装Java 更改/etc/profile 配置环境变量 d) 修改host文件域名 e) 安装ssh 配置无密码登 ...

  8. Hadoop期末试题复习题

    文章目录 单选 多选题 判断题 部分知识点 来源 预判老师的预判,考试了,复习用 单选 目前,Hadoop的最高版本是哪个? A.Hadoop3.x B.Hadoop2.x C.Hadoop4.x D ...

  9. 成为大数据顶尖程序员,先过了这些Hadoop面试题!(附答案解析)

    导读:在大数据开发岗位的需求下,工资待遇水涨船高,不少编程人员在面对职业瓶颈期的时候,会选择转编程方向发展. 你是否已经意识这是你人生中的一个重要转机?能不能抓住这个时代的机遇,就在于你对大数据信息的 ...

  10. hadoop面试题 5 ---有用

    1.0 简要描述如何安装配置apache的一个开源hadoop,只描述即可,无需列出具体步骤,列出具体步骤更好. 答:第一题:1使用root账户登录 2 修改IP 3 修改host主机名 4 配置SS ...

最新文章

  1. Python必须要掌握的高端语法
  2. LinkExtractor
  3. python 麦克风人声检测_【录音技巧】如何为人声录音 ,防止喷麦
  4. 【JUC】JDK1.8源码分析之ConcurrentLinkedQueue(五)
  5. linux netbeans 中文乱码,浅谈Linux Netbeans字体反锯齿处理
  6. MongoDB主键是您的朋友
  7. java sca视频教程_如何进入Java SCA软件的开发
  8. c语言中执行一次的函数once,iOS只执行一次的方法
  9. nginx 跨服务器显示图片,centos6.6下nginx配置远程服务器上图片访问
  10. 【SpringBoot 】SpringBoot注解详解
  11. 5种全局ID生成方式、优缺点及改进方案
  12. 大项目微服务架构设计
  13. Windows 10 IoT Serials 11 – 如何设置微软认知服务中EndPoint
  14. NYOJ845 - 无主之地1
  15. 传输信道加密Stunnel配置
  16. oracle sql中查询语句where中字段不为空用if怎么写_MyBatis手把手跟我做系列(三) --- 动态SQL标签...
  17. 3lcd和dlp怎么选,DLP和3LCD投影机的选择对比
  18. Arcgis字段计算器实现自动编码
  19. EPLAN P2.7安装教程
  20. 目前找到的对龙枪最清晰的介绍。

热门文章

  1. latex中Winedt和Sumatra PDF互联设置及失效解决
  2. 【深度首发】图森未来CEO陈默:我们并非在主机厂上游兜售技术,而是立足下游,做卡车运输业的智能服务商丨Xtecher 封面
  3. Addressable 增量包
  4. 第一章 Maxwell 概述
  5. Tableau商业智能与可视化应用实战系列视频教程(史上最全)
  6. VMware+Ubuntu安装过程,含秘钥
  7. snmpwalk , snmpget
  8. 如何快速把英语单词导入有道词典
  9. MODIS数据下载流程之地理空间数据云
  10. 2021.7.28魔鬼训练报告