Hadoop 面试题

hadoop组成?

MapReduce    计算

Yarn    资源调度

hdfs    数据存储

Common    辅助工具

如何安装hadoop?

1.安装jdk 安装hadoop

2.格式化 hadoop namenode-format

3.启动节点 start-all.sh

hadoop中需要哪些配置文件?

1)core-site.xml    全局配置

2)hdfs-site.xml    hdfs的局部配置

3)mapred-site.xml    mapred的局部配置

4)yarn-site.xml    yarn的局部配置

hadoop启动那些进程?他们的作用分别是什么?

1)NameNode 管理文件系统元数据

2)SecondaryNameNode 帮助NameNode合并镜像文件和编辑日志

3)DataNode 每个存储数据的节点都会运行一个dataNode守护进程

4)ResourceManager 负责调度DataNode上的工作

5)NodeManager 执行任务

hadoop几个默认端口及含义?

1)dfs.namenode.http-address:50070    web端查看HDFS文件系统

2)yarn.resourcemanager.webapp.address:8088    web端查看yarn

HDFS写入流程?

1)客户端向namenode请求上传文件,namenode检查目标文件是否已存在返回是否可以上传

2)客户端请求一个block上传到那几个datanode服务器上,namenode返回可上传的datanode节点

3)客户端请求datanode上传数据,datanode应答客户端是否可以上传数据

4)客户端开始往datanode上传第一个block,当一个block传输完成后,客户端再次请求上传第二个block

HDFS读取流程?

1)客户端向namenode请求下载文件,namenode通过查询元数据找到文件块所在的datanode地址

2)挑选一台datanode(就近原则)服务器,请求读取数据

3)datanode开始传输数据给客户端

4)客户端接收

NameNode与SecondaryNameNode区别?

1)NameNode    负责管理文件系统的元数据,以及每一个路径所对应的数据块信息

2)SecondaryNameNode    辅助NameNode工作,帮助NameNode合并镜像文件和编辑日志

3)NameNode    发生故障时,假如没有及时备份数据可以从SecondaryNameNode恢复数据,不是无损恢复

服役新节点和退役旧节点步骤?

1)服役新节点

    (1)将新节点添加到白名单

    (2)直接启动DataNode,即可关联到集群

2)退役旧节点

    (1)将退役节点添加到黑名单

    (2)刷新NameNode、刷新ResourceManager

namenode挂了怎么办?

使用-importCheckpoint选项启动namenode守护进程,将SecondaryNameNode中数据拷贝到namenode存储数据的目录

序列化反序列化以及自定义bean对象实现序列化?

hadoop自己开发了一套序列化机制,hadoop序列化特点:高效的使用了存储空间,读写数据快,可升级可扩展,支持多语言交互

自定义bean对象实现序列化接口:

1)实现Writable 接口

2)重写序列化 反序列化方法

3)反序列化必须有空参构造

4)注意反序列化的顺序和序列化的顺序完全一致

如何决定一个job的map和reduce的数量?

1)map数量是由切片数量决定的

2)reduce数量由job.setNumReduceTasks(x)设置,不设置默认1

MapReduce有几种排序?以及排序阶段?

部分排序,全排序,辅助排序,二次排序,自定义排序。

自定义排序实现WritableComparable接口,重写compareTo方法。

除了辅助排序其他都发生在map阶段,辅助排序发生在Reduce阶段。

如果没有定义partitioner,那么数据在被送达reducer前是如何被分区的?

如果没有自定义的partitioning,则默认的partition算法,即根据每一条数据的key的hashcode值模运算(%)reduce的数量,得到的数字就是分区号。

MapReduce怎么实现TopN?

可以自定义groupingcomparator,或者在map端对数据进行排序,然后在reduce输出时,控制只输出前n个数就达到了topn输出的目的。

有可能使Hadoop任务输出到多个目录中么?如果可以怎么做?

1)可以输出到多个目录中,采用自定义outputformat

2)实现步骤 自定义outputformat 然后 改写recordwriter,具体改写输出数据的方法write() 

简述hadoop实现join的几种方法及每种方法的实现?

1)reduce join

将来源不同的文件在map阶段打标记区分开,在reduce端进行合并

2)map join

在map端缓存多张表,提前处理业务逻辑,减少reduce端数据压力,

具体办法

//缓存普通文件

job.addCacheFile(new URI("file:/e/mapjoincache/pd.txt"));

hadoop怎么实现二级排序?

对map端输出的key进行排序,实现compareTo方法

shuffle工作机制?

如何优化shuffle?

分区,排序,溢写,拷贝到对应reduce机器上,增加combiner,压缩溢写文件


MapReduce工作流程?


MapTask工作机制?

Reduce工作机制?

自定义InputFormat流程?

1)自定义一个类继承FileInputFormat

2)改写RecordReader

SecondaryNameNode工作机制?

1)第一阶段:namenode启动

    第一次启动namenode格式化后,创建fsimage和edits文件

    客户端对元数据进行增删改的请求

    namenode记录操作日志,更新滚动日志

    namenode在内存中对数据进行增删改查

2)第二阶段:Secondary NameNode工作

    Secondary NameNode询问namenode是否需要checkpoint

    Secondary NameNode请求执行checkpoint

    namenode滚动正在写的edits日志

    将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode

    Secondary NameNode加载编辑日志和镜像文件到内存,并合并

    生成新的镜像文件fsimage.chkpoint

    拷贝fsimage.chkpoint到namenode

    namenode将fsimage.chkpoint重新命名成fsimage

简述hadoop1和hadoop2的架构异同?

加入了yarn解决资源调度的问题

加入了对zookeeper的支持实现比较可靠的高可用

为什么要有yarn解决了什么问题?有什么优势?

yarn上可以运行各种类型的分布式运算程序,比如mapreducer,spark程序等


MR作业提交全过程

1)yarn作业提交过程

2)MapReduce作业提交过程

3)作业提交过程之读数据

4)作业提交过程之写数据

HDFS的数据压缩算法?及每种算法的应用场景?

1)gzip压缩

优点:压缩率比较高,而且压缩/解压速度也比较快;hadoop本身支持,大部分linux系统都自带gzip命令

缺点:不支持split

应用场景:当每个文件压缩之后在130m以内的(1个块大小内),都可以考虑使用gzip压缩格式

2)Bzip2压缩

优点:支持split,具有很高的压缩率比gzip压缩率都高,hadoop本身支持,但不支持native,在linux系统下自带bzip2命令

缺点:压缩/解压速度慢,不支持native

应用场景:适合对速度要求不高,但需要较高压缩率的时候,可作为mapreduce作业的输出格式,或者数据比较大压缩以后数据用的比较少

3)Lzo压缩

优点:压缩/解压速度也比较快,合理的压缩率;支持split,是hadoop中最流行的压缩格式,可以在linux系统下安装lzop命令

缺点:压缩率比gzip要低一些;hadoop本身不支持,需要安装,在应用中对lzo格式的文件需要做一些特殊处理

应用场景:一个很大的文本文件,压缩之后还大于200m以上的可以考虑,而且单个文件越大lzo优点越明显

4)Snappy压缩

优点:高速压缩速度和合理的压缩率

缺点:不支持split,压缩率比gzip低,hadoop本身不支持,需要安装

应用场景:当mapreduce作业的map输出的数据比较大的时候,作为map到reduce的中间数据压缩格式;或者作为一个mapreduce作业的输出和另外一个mapreduce作业的输入

Hadoop调度器?

目前Hadoop调度器主要有三种:FIFO(先进先出调度器),Capacity Scheduler(容量调度器) 和 Fair Scheduler(公平调度器)。默认调度器是Capacity Scheduler

MapReducer跑的慢的原因?

mapreduce程序效率的瓶颈在于两点:

1)计算机性能

    CPU,内存,磁盘健康,网络

2)I/O操作优化

    数据倾斜,map和reduce数设置不合理,reduce等待过久,小文件过多,大量不可分块的超大文件,spill次数过多,merge次数过多等

MapReduce优化方法?

1)数据输入

    1.合并小文件:在执行mr任务前将小文件进行合并,大量的小文件会产生大量的map任务,增大map任务装载次数,而任务的装载比较耗时,从而导致mr运行较慢

    2.采用ConbinFileInputFormat来作为输入,解决输入端大量小文件场景

2)map阶段

    1.减少spill次数,通过调整io.sort.mb及sort.spill.percent参数值,增大触发spill的内存上限,减少spill次数,从而减少磁盘IO

    2.减少merge次数,通过调整io.sort.factor参数,增大merge的文件数目,减少merge的次数,从而缩短mr处理时间

    3.在map之后先进行combine处理,减少IO

3)reduce阶段

    1.合理设置map和reduce数,两个都不能设置太少,也不能设置太多。太少会导致task等待,延长处理时间。太多会导致map,reduce任务间竞争资源,造成处理超时等错误

    2.设置map,reduce共存,调整slowstart.completedmaps参数,使map运行到一定程度后,reduce也开始运行,减少reduce的等待时间

    3.规避使用reduce,因为reduce在用于连接数据集的时候将会产生大量的网络消耗

    4.合理设置reduce端的buffer,默认情况下,数据达到一个阈值的时候buffer中的数据就会写入磁盘,然后reduce会从磁盘中获得所有的数据。也就是说buffer和reduce是没有直接关联的,中间多个一个写磁盘->读磁盘的过程,既然有这个弊端,那么就可以通过参数来配置,使得buffer中的一部分数据可以直接输送到reduce,从而减少IO开销:mapred.job.reduce.input.buffer.percent,默认为0.0,当值大于0的时候会保留指定比例的内存读buffer中的数据直接拿给reduce使用。这样一来,设置buffer需要内存,读取数据需要内存,reduce计算也要内存,所以要根据作业的运行情况进行调整

4)IO传输

    1.采用数据压缩的方式,减少网络IO的时间。安装Snappy和LZOP压缩编码器

    2.使用SequenceFile二进制文件

5)数据倾斜问题

    1.数据倾斜现象

        数据频率倾斜——某一个区域的数据量要远远大于其他区域

        数据大小倾斜——部分记录的大小远远大于平均值

    2.减少数倾斜的方法

        抽样和范围分区

        自定义分区

        Combine

HDFS小文件优化方法?

1)Hadoop Archive

    是一个高效的将小文件放入HDFS块中的文件存档工具,它能够将多个小文件打包成一个HAR文件

2)Sequence file

    由一系列的二进制key/value组成,如果key为文件名,value为文件内容,则可以将大批小文件合并成一个大文件

3)CombineFileInputFormat

    是一种新的inputformat,用于将多个文件合并成一个单独的split,另外,他会考虑数据的存储位置

4)开启JVM重用

    对于大量小文件job,可以开启JVM重用会减少45%的运行时间

    具体设置:mapreduce.job.jvm.numtasks值在10-20之间

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339

推荐阅读更多精彩内容