1、hadoop面试题解读Hadoop就业面试宝典1.0 简要描述如何安装配置apache的一个开源hadoop,只描述即可,无需列出具体步骤,列出具体步骤更好。答:第一题:1使用root账户登录2 修改IP3 修改host主机名4 配置SSH免密码登录5 关闭防火墙6 安装JDK6 解压hadoop安装包7 配置hadoop的核心文件 hadoop-env.sh,core-site.xml , mapred-site.xml , hdfs-site.xml8 配置hadoop环境变量9 格式化 hadoop namenode-format10 启动节点 start-all.sh2.0 请;列出正
2、常的hadoop集群中hadoop都分别需要启动 哪些进程,他们的作用分别都是什么,请尽量列的详细一些。 答:namenode:管理集群,存储数据的原信息,并管理记录datanode中的文件信息。 Secondname:可以做冷备,对一定范围内数据做快照性备份。Datanode:存储数据Jobtracker :管理任务,并将任务分配给 tasktracker。Tasktracker: 执行JobTracker分配的任务。3.0请写出以下的shell命令 (1)杀死一个job(2)删除hdfs上的 /tmp/aaa目录(3) 加入一个新的存储节点和删除一个节点需要执行的命令答:(1)hadoop
3、 job list 得到job的id,然后执 行 hadoop job -kill jobId就可以杀死一个指定jobId的job工作了。(2)hadoop fs -rmr /tmp/aaa(3) 增加一个新的节点在新的几点上执行 Hadoop daemon.sh start datanode Hadooop daemon.sh start tasktracker 然后在主节点中执行 hadoop dfsadmin -refreshnodes 删除一个节点的时候,只需要在主节点执行 hadoop mradmin -refreshnodes4.0 请列出你所知道的hadoop调度器,并简要说明其
4、工作方法答:Fifo schedular :默认,先进先出的原则Capacity schedular :计算能力调度器,选择占用最小、优先级高的先执行,依此类推。Fair schedular:公平调度,所有的 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 publ
5、ic static final String INPUT_PATH = hdfs:/hadoop0:9000/in; public static final String OUT_PATH = 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_PAT
6、H) fileSystem.delete(new Path(OUT_PATH),true); Job job = new Job(conf,WordCount1.class.getSimpleName(); /1.0读取文件,解析成key,value对 FileInputFormat.setInputPaths(job,new Path(INPUT_PATH); /2.0写上自己的逻辑,对输入的可以,value进行处理,转换成新的key,value对进行输出 job.setMapperClass(MyMapper.class); job.setMapOutputKeyClass(Text.cl
7、ass); 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.c
8、lass); FileOutputFormat.setOutputPath(job, new Path(OUT_PATH); job.waitForCompletion(true); static class MyMapper extends Mapper Override protected void map(LongWritable k1, Text v1, org.apache.hadoop.mapreduce.Mapper.Context context) throws IOException, InterruptedException String split = v1.toStri
9、ng().split(t); for(String words :split) context.write(split3, 1); static class MyReducer extends Reducer protected void reduce(Text k2, Iterable v2, org.apache.hadoop.mapreduce.Reducer.Context context) throws IOException, InterruptedException Long count = 0L; for(LongWritable time : v2) count += tim
10、e.get(); context.write(v2, new LongWritable(count); 7.0 你认为用java , streaming , pipe方式开发map/reduce , 各有哪些优点就用过 java 和 hiveQL。Java 写 mapreduce 可以实现复杂的逻辑,如果需求简单,则显得繁琐。HiveQL 基本都是针对 hive 中的表数据进行编写,但对复杂的逻辑很难进行实现。写起来简单。 8.0 hive有哪些方式保存元数据,各有哪些优点 三种:内存数据库 derby,挺小,不常用 。本地 mysql。常用远程端 mysql。不常用上网上找了下专业名称:si
11、ngle user mode.multi user mode.remote user mode9.0 请简述hadoop怎样实现二级排序 第一种方法是,Reducer将给定key的所有值都缓存起来,然后对它们再做一个Reducer内排序。但是,由于Reducer需要保存给定key的所有值,可能会导致出现内存耗尽的错误。第二种方法是,将值的一部分或整个值加入原始key,生成一个合成key。这两种方法各有优势,第一种方法可能会更快一些(但有内存耗尽的危险),第二种方法则是将排序的任务交给MapReduce框架,更符合Hadoop/Reduce的设计思想。这篇文章里选择的是第二种。我们将编写一个Pa
12、rtitioner,确保拥有相同key(原始key,不包括添加的部分)的所有数据被发往同一个Reducer,还将编写一个Comparator,以便数据到达Reducer后即按原始key分组。10.简述hadoop实现jion的几种方法 利用dataJoin来实现mapreduce的jion问题。11.0 请用java实现非递归二分查询1. publicclassBinarySearchClass2. 3. 4. publicstaticintbinary_search(intarray,intvalue)5. 6. intbeginIndex=0;/低位下标7. intendIndex=arr
13、ay.length-1;/高位下标8. intmidIndex=-1;9. while(beginIndex=endIndex)10. midIndex=beginIndex+(endIndex-beginIndex)/2;/防止溢出11. if(value=arraymidIndex)12. returnmidIndex;13. elseif(valuearraymidIndex)14. endIndex=midIndex-1;15. else16. beginIndex=midIndex+1;17. 18. 19. return-1;20. /找到了,返回找到的数值的下标,没找到,返回-1
14、21. 22. 23. 24. /start提示:自动阅卷起始唯一标识,请勿删除或增加。25. publicstaticvoidmain(Stringargs)26. 27. System.out.println(Start.);28. intmyArray=newint1,2,3,5,6,7,8,9;29. System.out.println(查找数字8的下标:);30. System.out.println(binary_search(myArray,8);31. 32. /end/提示:自动阅卷结束唯一标识,请勿删除或增加。33. 12.0 请简述mapreduce中的combine和
15、partion的作用答:combiner是发生在map的最后一个阶段,其原理也是一个小型的reducer,主要作用是减少输出到reduce的个数,减少reducer的输入,提高reducer的执行效率。Partion的主要作用就是指定输出到reduce的个数的。13.0 hive内部表和外部表的区别Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。14. Hbase的rowKe
16、y怎么创建比较好?列簇怎么创建比较好?答:rowKey最好要创建有规则的rowKey,即最好是有序的。HBase中一张表最好只创建一到两个列族比较好,因为HBase不能很好的处理多个列族。15. 用mapreduce怎么处理数据倾斜问题在mapreduce聚合key中所有values的时候,如果一个key对应了很多values,就会产生数据倾斜的问题。数据倾斜主要就是某个key下面对应的value太多,导致某个reduce节点执行的数据过多,然后产生某个或者某几个reduce节点的执行效率过低,导致整个集群中的任务执行效率较慢,可以使用partion对数据过多的节点进行再划分,划分成多个小的数
17、据块,输入到reduce进行处理。16. hadoop框架怎么来优化答:hadoop优化的范围太宽泛了,可以从某个方面具体来谈一谈,比如说HBase的rowKey和列族的创建的来进行数据存储的优化,可以从网络的拷贝对数据的优化,可以从mapreduce对数据的处理来谈优化,可以从参数方面来说优化等。17. hbase内部机制是什么答:内部机制更多的是借助nosql数据的关系模型,是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。 18. 我们在开发分布式计算job的时候,是否可以去掉reduce阶段答:可以,例如我们的集群就是为了存储文件而设计的,不涉及到数据的
18、计算,就可以将mapReduce都省掉。19 hdfs的数据压缩算法答:可以使用sequenceFile和mapFile来对小文件进行压缩,压缩成大文件,然后存储,减轻namenode的内存压力。20. mapreduce的调度模式答:公平调度模式和容量调度模式21. hive底层与数据库交互原理答:hive有一套自己的sql解析引擎,称为metastore,存储在mysql或者derby数据库中,可以将sql语句转化为mapreducejob任务执行。22. hbase过滤器实现原则答:过滤器必须实现HBase Jar包中的Filter接口,或者继承扩展一个实现了该接口的抽象类 23. re
19、duce之后数据的输出量有多大24. 现场出问题测试mapreduce掌握情况和hive的ql语言掌握情况25.datanode在什么情况下不会备份数据答:在配置文件中设置文件副本数为1bine出现在哪个过程答:map阶段的最后一个过程。27. hdfs的体系结构答:HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据 28. flush的过程答:flush是在内存的基础上进行的,首先写入文件的时候,
20、会先将文件写到内存中,当内存写满的时候,就会清空缓存中的文件,然后一次性的将文件全部都写到硬盘中去保存。29. 什么是队列答:队列就是一个先进先出的过程。30. List与set的区别答:List和Set都是接口。他们各自有自己的实现类,有无顺序的实现类,也有有顺序的实现类。最大的不同就是List是可以重复的。而Set是不能重复的。List适合经常追加数据,插入,删除数据。但随即取数效率比较低。Set适合经常地随即储存,插入,删除。但是在遍历时效率比较低。31.数据的三范式答:第一范式()无重复的列第二范式(2NF)属性完全依赖于主键 消除部分子函数依赖第三范式(3NF)属性不依赖于其它非主属
21、性 消除传递依赖32.三个datanode中当有一个datanode出现错误时会怎样?答:当有一个datanode出现错误的时候,namenode会将那个datanode上的数据拷贝到其他的节点去进行存储。33.sqoop在导入数据到mysql中,如何不重复导入数据,如果存在数据问题,sqoop如何处理?答:34.描述一下hadoop中,有哪些地方使用到了缓存机制,作用分别是什么?答:缓存机制就是DistributedCash,就是在job任务执行前,将需要的文件拷贝到Task机器上进行缓存,提高mapreduce的执行效率。35.MapReduce优化经验答:(1.)设置合理的map和red
22、uce的个数。(2.)避免出现数据倾斜(bine函数(4.对数据进行压缩,避免大量的小文件36.请列举出曾经修改过的/etc/下面的文件,并说明修改要解决什么问题?答:/etc/profile这个文件,主要是用来配置环境变量。让hadoop命令可以在任意目录下面执行。37.请描述一下开发过程中如何对上面的程序进行性能分析,对性能分析进行优化的过程。38. 现有 1 亿个整数均匀分布,如果要得到前 1K 个最大的数,求最优的算法。我先说下我的想法:分块,比如分 1W 块,每块 1W 个,然后分别找出每块最大值,从这最大的 1W 个值中找最大 1K 个,那么其他的 9K 个最大值所在的块即可扔掉,
23、从剩下的最大的 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对进一步
24、的处理8.0对处理后的数据进行输出40. combiner 和partion的作用答:combiner主要是用来减少输入到reduce阶段的数据Partion作用主要是对map处理的数据进行分区,可以解决数据倾斜的问题。41.用mapreduce实现sql语 select count (x) from a group by b;42.用mapreduce 如何实现两张表连接,有哪些方法。43.知道mapreduce 大致流程,map , shuffle , reduce44.搭建hadoop集群 , master和slaves都运行哪些服务答:master主要是运行我们的主节点,slaves主
25、要是运行我们的从节点。45. hadoop参数调优46. pig , latin , hive语法有什么不同答:47.描述Hbase,ZooKeeper搭建过程48.hadoop运行原理答:hadoop的主要核心是由两部分组成,HDFS和mapreduce,首先HDFS的原理就是分布式的文件存储系统,将一个大的文件,分割成多个小的文件,进行存储在多台服务器上。Mapreduce的原理就是使用JobTracker和TaskTracker来进行作业的执行。Map就是将任务展开,reduce是汇总处理后的结果。49.mapreduce的原理答:mapreduce的原理就是将一个MapReduce框架
26、由一个单独的master JobTracker和每个集群节点一个slave TaskTracker共同组成。master负责调度构成一个作业的所有任务,这些的slave上,master监控它们的执行,重新执行已经失败的任务。而slave仅负责执行由maste指派的任务。50.HDFS存储机制答:HDFS主要是一个分布式的文件存储系统,由namenode来接收用户的操作请求,然后根据文件大小,以及定义的block块的大小,将大的文件切分成多个block块来进行保存51.举一个例子说明mapreduce是怎么运行的。52.如何确认hadoop集群的健康状况答:使用JPS命令来查看各个节点运行的进程
27、是否正常。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宕机和HR
28、egisoner宕机,如果是HRegisoner宕机,HMaster会将其所管理的region重新分布到其他活动的RegionServer上,由于数据和日志都持久在HDFS中,该操作不会导致数据丢失。所以数据的一致性和安全性是有保障的。如果是HMaster宕机,HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。即ZooKeeper会保证总会有一个HMaster在对外提供服务。59.假设公司要建一个数据中心,你会如何处理?60. 单项选择题 1. 下面哪个程序负责 HDFS 数据存储。 答案
29、 Ca)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker2. HDfS 中的 block 默认保存几份? 答案 Aa)3 份 b)2 份 c)1 份 d)不确定3. 下列哪个程序通常与 NameNode 在一个节点启动? 答案Ca)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker4. Hadoop 作者 答案Da)Martin Fowler b)Kent Beck c)Doug cutting 5. HDFS 默认 Block Size 答案 Ba)32MB b)64MB c)128MB6. 下列哪项通常是集群的最主要瓶颈 答案D编者 QQ:104019525319a)CPU b)网络 c)磁盘
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1