hadoop面试题Word文档下载推荐.docx

上传人:b****6 文档编号:21294305 上传时间:2023-01-29 格式:DOCX 页数:27 大小:39.13KB
下载 相关 举报
hadoop面试题Word文档下载推荐.docx_第1页
第1页 / 共27页
hadoop面试题Word文档下载推荐.docx_第2页
第2页 / 共27页
hadoop面试题Word文档下载推荐.docx_第3页
第3页 / 共27页
hadoop面试题Word文档下载推荐.docx_第4页
第4页 / 共27页
hadoop面试题Word文档下载推荐.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

hadoop面试题Word文档下载推荐.docx

《hadoop面试题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《hadoop面试题Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。

hadoop面试题Word文档下载推荐.docx

删除一个节点的时候,只需要在主节点执行hadoopmradmin-refreshnodes

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

Fifoschedular:

默认,先进先出的原则

Capacityschedular:

计算能力调度器,选择占用最小、优先级高的先执行,依此类推。

Fairschedular:

公平调度,所有的job具有相同的资源。

5.0请列出你在工作中使用过的开发mapreduce的语言

java,hive

6.0当前日志采样格式为

a,b,c,d

b,b,f,e

a,a,c,f

请你用最熟悉的语言编写mapreduce,计算第四列每个元素出现的个数

StaticfinalString

publicclassWordCount1{

publicstaticfinalStringINPUT_PATH="

hdfs:

//hadoop0:

9000/in"

;

publicstaticfinalStringOUT_PATH="

9000/out"

publicstaticvoidmain(String[]args)throwsException{

Configurationconf=newConfiguration();

FileSystemfileSystem=FileSystem.get(conf);

if(fileSystem.exists(newPath(OUT_PATH))){}

fileSystem.delete(newPath(OUT_PATH),true);

Jobjob=newJob(conf,WordCount1.class.getSimpleName());

//1.0读取文件,解析成key,value对

FileInputFormat.setInputPaths(job,newPath(INPUT_PATH));

//2.0写上自己的逻辑,对输入的可以,value进行处理,转换成新的key,value对进行输出

job.setMapperClass(MyMapper.class);

job.setMapOutputKeyClass(Text.class);

job.setMapOutputValueClass(LongWritable.class);

//3.0对输出后的数据进行分区

//4.0对分区后的数据进行排序,分组,相同key的value放到一个集合中

//5.0对分组后的数据进行规约

//6.0对通过网络将map输出的数据拷贝到reduce节点

//7.0写上自己的reduce函数逻辑,对map输出的数据进行处理

job.setReducerClass(MyReducer.class);

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(LongWritable.class);

FileOutputFormat.setOutputPath(job,newPath(OUT_PATH));

job.waitForCompletion(true);

}

staticclassMyMapperextendsMapper<

LongWritable,Text,Text,LongWritable>

{

@Override

protectedvoidmap(LongWritablek1,Textv1,

org.apache.hadoop.mapreduce.Mapper.Contextcontext)

throwsIOException,InterruptedException{

String[]split=v1.toString().split("

\t"

);

for(Stringwords:

split){

context.write(split[3],1);

}

}

staticclassMyReducerextendsReducer<

Text,LongWritable,Text,LongWritable>

protectedvoidreduce(Textk2,Iterable<

LongWritable>

v2,

org.apache.hadoop.mapreduce.Reducer.Contextcontext)

Longcount=0L;

for(LongWritabletime:

v2){

count+=time.get();

context.write(v2,newLongWritable(count));

}

7.0你认为用java,streaming,pipe方式开发map/reduce,各有哪些优点

就用过java和hiveQL。

Java写mapreduce可以实现复杂的逻辑,如果需求简单,则显得繁琐。

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

起来简单。

8.0hive有哪些方式保存元数据,各有哪些优点

三种:

内存数据库derby,挺小,不常用。

本地mysql。

常用

远程端mysql。

不常用

上网上找了下专业名称:

singleusermode..multiusermode...remoteusermode

9.0请简述hadoop怎样实现二级排序

第一种方法是,Reducer将给定key的所有值都缓存起来,然后对它们再做一个Reducer内排序。

但是,由于Reducer需要保存给定key的所有值,可能会导致出现内存耗尽的错误。

第二种方法是,将值的一部分或整个值加入原始key,生成一个合成key。

这两种方法各有优势,第一种方法可能会更快一些(但有内存耗尽的危险),第二种方法则是将排序的任务交给MapReduce框架,更符合Hadoop/Reduce的设计思想。

这篇文章里选择的是第二种。

我们将编写一个Partitioner,确保拥有相同key(原始key,不包括添加的部分)的所有数据被发往同一个Reducer,还将编写一个Comparator,以便数据到达Reducer后即按原始key分组。

10.简述hadoop实现jion的几种方法

利用dataJoin来实现mapreduce的jion问题。

11.0请用java实现非递归二分查询

1.public 

class 

BinarySearchClass 

 

2.{ 

3. 

4. 

public 

static 

int 

binary_search(int[] 

array, 

value) 

5. 

6. 

beginIndex 

0;

// 

低位下标 

7. 

endIndex 

array.length 

1;

高位下标 

8. 

midIndex 

-1;

9. 

while 

(beginIndex 

<

endIndex) 

10. 

(endIndex 

beginIndex) 

2;

//防止溢出 

11. 

if 

(value 

== 

array[midIndex]) 

12. 

return 

midIndex;

13. 

else 

14. 

15. 

16. 

17. 

18. 

19. 

20. 

//找到了,返回找到的数值的下标,没找到,返回-1 

21. 

22. 

23. 

24. 

//start 

提示:

自动阅卷起始唯一标识,请勿删除或增加。

25. 

void 

main(String[] 

args) 

26. 

27. 

System.out.println("

Start..."

28. 

int[] 

myArray 

new 

1, 

2, 

3, 

5, 

6, 

7, 

8, 

};

29. 

查找数字8的下标:

"

30. 

System.out.println(binary_search(myArray, 

8));

31. 

32. 

//end 

//提示:

自动阅卷结束唯一标识,请勿删除或增加。

33.} 

12.0请简述mapreduce中的combine和partion的作用

combiner是发生在map的最后一个阶段,其原理也是一个小型的reducer,主要作用是减少输出到reduce的个数,减少reducer的输入,提高reducer的执行效率。

Partion的主要作用就是指定输出到reduce的个数的。

13.0hive内部表和外部表的区别

Hive创建内部表时,会将数据移动到数据仓库指向的路径;

若创建外部表,仅记录数据所在的路径, 

不对数据的位置做任何改变。

在删除表的时候,内部表的元数据和数据会被一起删除, 

而外部表只删除元数据,不删除数据。

这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。

14.Hbase的rowKey怎么创建比较好?

列簇怎么创建比较好?

rowKey最好要创建有规则的rowKey,即最好是有序的。

HBase中一张表最好只创建一到两个列族比较好,因为HBase不能很好的处理多个列族。

15.用mapreduce怎么处理数据倾斜问题

在mapreduce聚合key中所有values的时候,如果一个key对应了很多values,就会产生数据倾斜的问题。

数据倾斜主要就是某个key下面对应的value太多,导致某个reduce节点执行的数据过多,然后产生某个或者某几个reduce节点的执行效率过低,导致整个集群中的任务执行效率较慢,可以使用partion对数据过多的节点进行再划分,划分成多个小的数据块,输入到reduce进行处理。

16.hadoop框架怎么来优化

hadoop优化的范围太宽泛了,可以从某个方面具体来谈一谈,比如说HBase的rowKey和列族的创建的来进行数据存储的优化,可以从网络的拷贝对数据的优化,可以从mapreduce对数据的处理来谈优化,可以从参数方面来说优化等。

17.hbase内部机制是什么

内部机制更多的是借助nosql数据的关系模型,是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。

18.我们在开发分布式计算job的时候,是否可以去掉reduce阶段

可以,例如我们的集群就是为了存储文件而设计的,不涉及到数据的计算,就可以将mapReduce都省掉。

19hdfs的数据压缩算法

可以使用sequenceFile和mapFile来对小文件进行压缩,压缩成大文件,然后存储,减轻namenode的内存压力。

20.mapreduce的调度模式

公平调度模式和容量调度模式

21.hive底层与数据库交互原理

hive有一套自己的sql解析引擎,称为metastore,存储在mysql或者derby数据库中,可以将sql语句转化为mapreducejob任务执行。

22.hbase过滤器实现原则

过滤器必须实现HBaseJar包中的Filter接口,或者继承扩展一个实现了该接口的抽象类

23.reduce之后数据的输出量有多大

24.现场出问题测试mapreduce掌握情况和hive的ql语言掌握情况

25.datanode在什么情况下不会备份数据

在配置文件中设置文件副本数为1

bine出现在哪个过程

map阶段的最后一个过程。

27.hdfs的体系结构

HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。

其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;

集群中的DataNode管理存储的数据

28.flush的过程

flush是在内存的基础上进行的,首先写入文件的时候,会先将文件写到内存中,当内存写满的时候,就会清空缓存中的文件,然后一次性的将文件全部都写到硬盘中去保存。

29.什么是队列

队列就是一个先进先出的过程。

30.List与set的区别

List和Set都是接口。

他们各自有自己的实现类,有无顺序的实现类,也有有顺序的实现类。

最大的不同就是List是可以重复的。

而Set是不能重复的。

List适合经常追加数据,插入,删除数据。

但随即取数效率比较低。

Set适合经常地随即储存,插入,删除。

但是在遍历时效率比较低。

31.数据的三范式

第一范式()无重复的列

第二范式(2NF)属性完全依赖于主键[消除部分子函数依赖]

第三范式(3NF)属性不依赖于其它非主属性[消除传递依赖]

32.三个datanode中当有一个datanode出现错误时会怎样?

当有一个datanode出现错误的时候,namenode会将那个datanode上的数据拷贝到其他的节点去进行存储。

33.sqoop在导入数据到mysql中,如何不重复导入数据,如果存在数据问题,sqoop如何处理?

34.描述一下hadoop中,有哪些地方使用到了缓存机制,作用分别是什么?

缓存机制就是DistributedCash,就是在job任务执行前,将需要的文件拷贝到Task机器上进行缓存,提高mapreduce的执行效率。

35.MapReduce优化经验

(1.)设置合理的map和reduce的个数。

(2.)避免出现数据倾斜

(bine函数

(4.对数据进行压缩,避免大量的小文件

36.请列举出曾经修改过的/etc/下面的文件,并说明修改要解决什么问题?

/etc/profile这个文件,主要是用来配置环境变量。

让hadoop命令可以在任意目录下面执行。

37.请描述一下开发过程中如何对上面的程序进行性能分析,对性能分析进行优化的过程。

38.现有1亿个整数均匀分布,如果要得到前1K个最大的数,求最优的算法。

我先说下我的想法:

分块,比如分1W块,每块1W个,然后分别找出每块最大值,从这最

大的1W个值中找最大1K个,

那么其他的9K个最大值所在的块即可扔掉,从剩下的最大的1K个值所在的块中找前1K

个即可。

那么原问题的规模就缩小到了1/10。

问题:

(1)这种分块方法的最优时间复杂度。

(2)如何分块达到最优。

比如也可分10W块,每块1000个数。

则问题规模可降到原来

1/100。

但事实上复杂度并没降低。

39.mapreduce的大致流程

主要分为八个步骤

1.0读取文件,解析成key,value对

2.0自定义map函数

3.0对map输出的数据进行分区

4.0对分区后的数据进行排序分组

5.0对分组后的数据进行规约

6.0通过网络拷贝,将map输出的数据拷贝到reduce节点

7.0自定义reduce函数,对map输入的key,value对进一步的处理

8.0对处理后的数据进行输出

40.combiner和partion的作用

combiner主要是用来减少输入到reduce阶段的数据

Partion作用主要是对map处理的数据进行分区,可以解决数据倾斜的问题。

41.用mapreduce实现sql语selectcount(x)fromagroupbyb;

42.用mapreduce如何实现两张表连接,有哪些方法。

43.知道mapreduce大致流程,map,shuffle,reduce

44.搭建hadoop集群,master和slaves都运行哪些服务

master主要是运行我们的主节点,slaves主要是运行我们的从节点。

45.hadoop参数调优

46.pig,latin,hive语法有什么不同

47.描述Hbase,ZooKeeper搭建过程

48.hadoop运行原理

hadoop的主要核心是由两部分组成,HDFS和mapreduce,首先HDFS的原理就是分布式的文件存储系统,将一个大的文件,分割成多个小的文件,进行存储在多台服务器上。

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

Map就是将任务展开,reduce是汇总处理后的结果。

49.mapreduce的原理

mapreduce的原理就是将一个MapReduce框架由一个单独的masterJobTracker和每个集群节点一个slaveTaskTracker共同组成。

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

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

50.HDFS存储机制

HDFS主要是一个分布式的文件存储系统,由namenode来接收用户的操作请求,然后根据文件大小,以及定义的block块的大小,将大的文件切分成多个block块来进行保存

51.举一个例子说明mapreduce是怎么运行的。

52.如何确认hadoop集群的健康状况

使用JPS命令来查看各个节点运行的进程是否正常。

53.mapreduce作业,不让reduce输出,用什么代替reduce的功能。

54.hive如何调优

hive最终都会转化为mapreduce的job来运行,要想hive调优,实际上就是mapreduce调优,可以有下面几个方面的调优。

解决收据倾斜问题,减少job数量,设置合理的map和reduce个数,对小文件进行合并,优化时把我整体,单个task最优不如整体最优。

按照一定规则分区。

55.hive如何控制权限

56.

56.HBase写数据的原理是什么?

57.hive能像关系型数据库那样建多个库吗?

当然能了。

58.HBase宕机如何处理

宕机分为HMaster宕机和HRegisoner宕机,如果是HRegisoner宕机,HMaster会将其所管理的region重新分布到其他活动的RegionServer上,由于数据和日志都持久在HDFS中,该操作不会导致数据丢失。

所以数据的一致性和安全性是有保障的。

如果是HMaster宕机,HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的MasterElection机制保证总有一个Master运行。

即ZooKeeper会保证总会有一个HMaster在对外提供服务。

59.假设公司要建一个数据中心,你会如何处理?

60.单项选择题

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

答案C

a)NameNodeb)Jobtrackerc)Datanoded)secondaryNameNodee)tasktracker

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

答案A

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

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

答案C

a)SecondaryNameNodeb)DataNodec)TaskTrackerd)Jobtracker

4.Hadoop作者答案D

a)MartinFowlerb)KentBeckc)Dougcutting

5.HDFS默认BlockSize答案B

a)32MBb)64MBc)128MB

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

编者QQ:

1040195253

19

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

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

当前位置:首页 > 初中教育 > 政史地

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

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