hadoop面试题(20页).doc
《hadoop面试题(20页).doc》由会员分享,可在线阅读,更多相关《hadoop面试题(20页).doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-hadoop面试题-第 20 页Hadoop就业面试宝典1.0 简要描述如何安装配置apache的一个开源hadoop,只描述即可,无需列出具体步骤,列出具体步骤更好。答:第一题:1使用root账户登录2 修改IP3 修改host主机名4 配置SSH免密码登录5 关闭防火墙6 安装JDK6 解压hadoop安装包8 配置hadoop环境变量9 格式化 hadoop namenode-format2.0 请;列出正常的hadoop集群中hadoop都分别需要启动 哪些进程,他们的作用分别都是什么,请尽量列的详细一些。答:namenode:管理集群,存储数据的原信息,并管理记录datanode中
2、的文件信息。 Secondname:可以做冷备,对一定范围内数据做快照性备份。Datanode:存储数据Jobtracker :管理任务,并将任务分配给 tasktracker。Tasktracker: 执行JobTracker分配的任务。3.0请写出以下的shell命令 (1)杀死一个job(2)删除hdfs上的 /tmp/aaa目录(3) 加入一个新的存储节点和删除一个节点需要执行的命令答:(1)hadoop job list 得到job的id,然后执行 hadoop job -kill jobId就可以杀死一个指定jobId的job工作了。(2)hadoop fs -rmr /tmp/a
3、aa(3) 增加一个新的节点在新的几点上执行 Hadoop daemon.sh start datanode Hadooop daemon.sh start tasktracker然后在主节点中执行 hadoop dfsadmin -refreshnodes删除一个节点的时候,只需要在主节点执行 hadoop mradmin -refreshnodes4.0 请列出你所知道的hadoop调度器,并简要说明其工作方法答:Fifo schedular :默认,先进先出的原则Capacity schedular :计算能力调度器,选择占用最小、优先级高的先执行,依此类推。Fair schedular
4、:公平调度,所有的 job 具有相同的资源。5.0 请列出你在工作中使用过的开发mapreduce的语言答:java,hive6.0 当前日志采样格式为 a , b , c , d b , b , f , e a , a , c , f 请你用最熟悉的语言编写mapreduce,计算第四列每个元素出现的个数Static final String 答:public class WordCount1 public static final String INPUT_PATH = hdfs:/hadoop0:9000/in;public static final String OUT_PATH =
5、hdfs:/hadoop0:9000/out;public static void main(String args) throws Exception Configuration conf = new Configuration();FileSystem fileSystem = FileSystem.get(conf);if(fileSystem.exists(new Path(OUT_PATH)fileSystem.delete(new Path(OUT_PATH),true);Job job = new Job(conf,WordCount1.class.getSimpleName()
6、;/1.0读取文件,解析成key,value对FileInputFormat.setInputPaths(job,new Path(INPUT_PATH);/2.0写上自己的逻辑,对输入的可以,value进行处理,转换成新的key,value对进行输出job.setMapperClass(MyMapper.class);job.setMapOutputKeyClass(Text.class);lass);/4.0对分区后的数据进行排序,分组,相同key的value放到一个集合中/7.0 写上自己的reduce函数逻辑,对map输出的数据进行处理job.setReducerClass(MyRed
7、ucer.class);job.setOutputKeyClass(Text.class);ass(LongWritable.class);FileOutputFormat.setOutputPath(job, new Path(OUT_PATH);job.waitForCompletion(true);static class MyMapper extends MapperOverrideprotected void map(LongWritable k1, Text v1,org.apache.hadoop.mapreduce.Mapper.Context context)throws I
8、OException, InterruptedException String split = v1.toString().split(t);for(String words :split)context.write(split3, 1);static class MyReducer extends Reducerprotected void reduce(Text k2, Iterable v2,org.apache.hadoop.mapreduce.Reducer.Context context)throws IOException, InterruptedException Long c
9、ount = 0L;for(LongWritable time : v2)count += time.get();context.write(v2, new LongWritable(count);7.0 你认为用java , streaming , pipe方式开发map/reduce , 各有哪些优点就用过 java 和 hiveQL。Java 写 mapreduce 可以实现复杂的逻辑,如果需求简单,则显得繁琐。HiveQL 基本都是针对 hive 中的表数据进行编写,但对复杂的逻辑很难进行实现。写起来简单。8.0 hive有哪些方式保存元数据,各有哪些优点三种:内存数据库 derby,
10、挺小,不常用 。本地 mysql。常用远程端 mysql。不常用上网上找了下专业名称:single user mode.multi user mode.remote user mode9.0 请简述hadoop怎样实现二级排序第一种方法是,Reducer将给定key的所有值都缓存起来,然后对它们再做一个Reducer内排序。但是,由于Reducer需要保存给定key的所有值,可能会导致出现内存耗尽的错误。第二种方法是,将值的一部分或整个值加入原始key,生成一个合成key。这两种方法各有优势,第一种方法可能会更快一些(但有内存耗尽的危险),第二种方法则是将排序的任务交给MapReduce框架,
11、更符合Hadoop/Reduce的设计思想。这篇文章里选择的是第二种。我们将编写一个Partitioner,确保拥有相同key(原始key,不包括添加的部分)的所有数据被发往同一个Reducer,还将编写一个Comparator,以便数据到达Reducer后即按原始key分组。利用dataJoin来实现mapreduce的jion问题。11.0 请用java实现非递归二分查询1. publicclassBinarySearchClass2. publicstaticintbinary_search(intarray,intvalue)3. intbeginIndex=0;/低位下标4. int
12、endIndex=array.length-1;/高位下标5. intmidIndex=-1;6. while(beginIndex=endIndex)7. midIndex=beginIndex+(endIndex-beginIndex)/2;/防止溢出8. if(value=arraymidIndex)9. returnmidIndex;10. elseif(valuearraymidIndex)11. endIndex=midIndex-1;12. else13. beginIndex=midIndex+1;14. return-1;15. /找到了,返回找到的数值的下标,没找到,返回-
13、116. /start提示:自动阅卷起始唯一标识,请勿删除或增加。17. publicstaticvoidmain(Stringargs)18. System.out.println(Start.);19. intmyArray=newint1,2,3,5,6,7,8,9;20. System.out.println(查找数字8的下标:);21. System.out.println(binary_search(myArray,8);22. /end/提示:自动阅卷结束唯一标识,请勿删除或增加。12.0 请简述mapreduce中的combine和partion的作用答:combiner是发生
14、在map的最后一个阶段,其原理也是一个小型的reducer,主要作用是减少输出到reduce的个数,减少reducer的输入,提高reducer的执行效率。Partion的主要作用就是指定输出到reduce的个数的。13.0 hive内部表和外部表的区别Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。14. Hbase的rowKey怎么创建比较好?列簇怎么创建比较好?答:ro
15、wKey最好要创建有规则的rowKey,即最好是有序的。HBase中一张表最好只创建一到两个列族比较好,因为HBase不能很好的处理多个列族。15. 用mapreduce怎么处理数据倾斜问题在mapreduce聚合key中所有values的时候,如果一个key对应了很多values,就会产生数据倾斜的问题。数据倾斜主要就是某个key下面对应的value太多,导致某个reduce节点执行的数据过多,然后产生某个或者某几个reduce节点的执行效率过低,导致整个集群中的任务执行效率较慢,可以使用partion对数据过多的节点进行再划分,划分成多个小的数据块,输入到reduce进行处理。16. ha
16、doop框架怎么来优化答:hadoop优化的范围太宽泛了,可以从某个方面具体来谈一谈,比如说HBase的rowKey和列族的创建的来进行数据存储的优化,可以从网络的拷贝对数据的优化,可以从mapreduce对数据的处理来谈优化,可以从参数方面来说优化等。17. hbase内部机制是什么答:内部机制更多的是借助nosql数据的关系模型,是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。 18. 我们在开发分布式计算job的时候,是否可以去掉reduce阶段答:可以,例如我们的集群就是为了存储文件而设计的,不涉及到数据的计算,就可以将mapReduce都省掉。19
17、hdfs的数据压缩算法答:可以使用sequenceFile和mapFile来对小文件进行压缩,压缩成大文件,然后存储,减轻namenode的内存压力。20. mapreduce的调度模式答:公平调度模式和容量调度模式21. hive底层与数据库交互原理答:hive有一套自己的sql解析引擎,称为metastore,存储在mysql或者derby数据库中,可以将sql语句转化为mapreducejob任务执行。22. hbase过滤器实现原则答:过滤器必须实现HBase Jar包中的Filter接口,或者继承扩展一个实现了该接口的抽象类 23. reduce之后数据的输出量有多大24. 现场出问
18、题测试mapreduce掌握情况和hive的ql语言掌握情况答:在配置文件中设置文件副本数为1答:map阶段的最后一个过程。27. hdfs的体系结构答:HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据 28. flush的过程答:flush是在内存的基础上进行的,首先写入文件的时候,会先将文件写到内存中,当内存写满的时候,就会清空缓存中的文件,然后一次性的将文件全部都写到硬盘中去保存。29. 什
19、么是队列答:队列就是一个先进先出的过程。30. List与set的区别答:List和Set都是接口。他们各自有自己的实现类,有无顺序的实现类,也有有顺序的实现类。最大的不同就是List是可以重复的。而Set是不能重复的。List适合经常追加数据,插入,删除数据。但随即取数效率比较低。Set适合经常地随即储存,插入,删除。但是在遍历时效率比较低。答:第一范式()无重复的列第二范式(2NF)属性完全依赖于主键 消除部分子函数依赖第三范式(3NF)属性不依赖于其它非主属性 消除传递依赖32.三个datanode中当有一个datanode出现错误时会怎样?答:当有一个datanode出现错误的时候,n
20、amenode会将那个datanode上的数据拷贝到其他的节点去进行存储。33.sqoop在导入数据到mysql中,如何不重复导入数据,如果存在数据问题,sqoop如何处理?答:34.描述一下hadoop中,有哪些地方使用到了缓存机制,作用分别是什么?答:缓存机制就是DistributedCash,就是在job任务执行前,将需要的文件拷贝到Task机器上进行缓存,提高mapreduce的执行效率。答:(1.)设置合理的map和reduce的个数。(2. )避免出现数据倾斜(3. combine函数(4. 对数据进行压缩,避免大量的小文件36.请列举出曾经修改过的/etc/下面的文件,并说明修改
21、要解决什么问题?答:/etc/profile这个文件,主要是用来配置环境变量。让hadoop命令可以在任意目录下面执行。37.请描述一下开发过程中如何对上面的程序进行性能分析,对性能分析进行优化的过程。38. 现有 1 亿个整数均匀分布,如果要得到前 1K 个最大的数,求最优的算法。我先说下我的想法:分块,比如分 1W 块,每块 1W 个,然后分别找出每块最大值,从这最大的 1W 个值中找最大 1K 个,那么其他的 9K 个最大值所在的块即可扔掉,从剩下的最大的 1K 个值所在的块中找前 1K个即可。那么原问题的规模就缩小到了 1/10。问题:(1)这种分块方法的最优时间复杂度。(2)如何分块
22、达到最优。比如也可分 10W 块,每块 1000 个数。则问题规模可降到原来1/100。但事实上复杂度并没降低。答:主要分为八个步骤1.0读取文件,解析成key,value对6.0通过网络拷贝,将map输出的数据拷贝到reduce节点7.0自定义reduce函数,对map输入的key,value对进一步的处理40. combiner 和partion的作用答:combiner主要是用来减少输入到reduce阶段的数据Partion作用主要是对map处理的数据进行分区,可以解决数据倾斜的问题。41.用mapreduce实现sql语 select count (x) from a group by
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hadoop 试题 20
限制150内