Hadoop面试题.docx
- 文档编号:6686989
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:15
- 大小:33.14KB
Hadoop面试题.docx
《Hadoop面试题.docx》由会员分享,可在线阅读,更多相关《Hadoop面试题.docx(15页珍藏版)》请在冰豆网上搜索。
Hadoop面试题
1.Hadoop集群可以运行的3个模式?
单机(本地)模式
伪分布式模式
全分布式模式
2.单机(本地)模式中的注意点?
在单机模式(standalone)中不会存在守护进程,所有东西都运行在一个JVM上。
这里同样没有DFS,使用的是本地文件系统。
单机模式适用于开发过程中运行MapReduce程序,这也是最少使用的一个模式。
3.伪分布模式中的注意点?
伪分布式(Pseudo)适用于开发和测试环境,在这个模式中,所有守护进程都在同一台机器上运行。
4.VM是否可以称为Pseudo?
不是,两个事物,同时Pseudo只针对Hadoop。
5.全分布模式又有什么注意点?
全分布模式通常被用于生产环境,这里我们使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之上。
这里会存在Namenode运行的主机,Datanode运行的主机,以及tasktracker运行的主机。
在分布式环境下,主节点和从节点会分开。
6.Hadoop是否遵循UNIX模式?
是的,在UNIX用例下,Hadoop还拥有“conf”目录。
7.Hadoop安装在什么目录下?
Cloudera和Apache使用相同的目录结构,Hadoop被安装在cd/usr/lib/hadoop-0.20/。
8.Namenode、Jobtracker和tasktracker的端口号是?
Namenode,70;Jobtracker,30;Tasktracker,60。
9.Hadoop的核心配置是什么?
Hadoop的核心配置通过两个xml文件来完成:
1,hadoop-default.xml;2,hadoop-site.xml。
这些文件都使用xml格式,因此每个xml中都有一些属性,包括名称和值,但是当下这些文件都已不复存在。
10.那当下又该如何配置?
Hadoop现在拥有3个配置文件:
1,core-site.xml;2,hdfs-site.xml;3,mapred-site.xml。
这些文件都保存在conf/子目录下。
11.RAM的溢出因子是?
溢出因子(Spillfactor)是临时文件中储存文件的大小,也就是Hadoop-temp目录。
12.fs.mapr.working.dir只是单一的目录?
fs.mapr.working.dir只是一个目录。
13.hdfs-site.xml的3个主要属性?
dfs.name.dir决定的是元数据存储的路径以及DFS的存储方式(磁盘或是远端)
dfs.data.dir决定的是数据存储的路径
fs.checkpoint.dir用于第二Namenode
14.如何退出输入模式?
退出输入的方式有:
1,按ESC;2,键入:
q(如果你没有输入任何当下)或者键入:
wq(如果你已经输入当下),并且按下Enter。
15.当你输入hadoopfsck/造成“connectionrefusedjavaexception’”时,系统究竟发生了什么?
这意味着Namenode没有运行在你的VM之上。
16.我们使用Ubuntu及Cloudera,那么我们该去哪里下载Hadoop,或者是默认就与Ubuntu一起安装?
这个属于Hadoop的默认配置,你必须从Cloudera或者Edureka的dropbox下载,然后在你的系统上运行。
当然,你也可以自己配置,但是你需要一个Linuxbox,Ubuntu或者是RedHat。
在Cloudera网站或者是Edureka的Dropbox中有安装步骤。
17.“jps”命令的用处?
这个命令可以检查Namenode、Datanode、TaskTracker、JobTracker是否正常工作。
18.如何重启Namenode?
点击stop-all.sh,再点击start-all.sh。
键入sudohdfs(Enter),su-hdfs(Enter),/etc/init.d/ha(Enter),及/etc/init.d/hadoop-0.20-namenodestart(Enter)。
19.Fsck的全名?
全名是:
FileSystemCheck。
20.如何检查Namenode是否正常运行?
如果要检查Namenode是否正常工作,使用命令/etc/init.d/hadoop-0.20-namenodestatus或者就是简单的jps。
21.mapred.job.tracker命令的作用?
可以让你知道哪个节点是JobTracker。
22./etc/init.d命令的作用是?
/etc/init.d说明了守护进程(服务)的位置或状态,其实是LINUX特性,和Hadoop关系不大。
23.如何在浏览器中查找Namenode?
如果你确实需要在浏览器中查找Namenode,你不再需要localhost:
8021,Namenode的端口号是50070。
24.如何从SU转到Cloudera?
从SU转到Cloudera只需要键入exit。
25.启动和关闭命令会用到哪些文件?
Slaves及Masters。
26.Slaves由什么组成?
Slaves由主机的列表组成,每台1行,用于说明数据节点。
27.Masters由什么组成?
Masters同样是主机的列表组成,每台一行,用于说明第二Namenode服务器。
28.hadoop-env.sh是用于做什么的?
hadoop-env.sh提供了Hadoop中.JAVA_HOME的运行环境。
29.Master文件是否提供了多个入口?
是的你可以拥有多个Master文件接口。
30.Hadoop-env.sh文件当下的位置?
hadoop-env.sh现在位于conf。
31.在Hadoop_PID_DIR中,PID代表了什么?
PID代表了“ProcessID”。
32./var/hadoop/pids用于做什么?
/var/hadoop/pids用来存储PID。
33.hadoop-metrics.properties文件的作用是?
hadoop-metrics.properties被用做“Reporting”,控制Hadoop报告,初始状态是“nottoreport”。
34.Hadoop需求什么样的网络?
Hadoop核心使用Shell(SSH)来驱动从节点上的服务器进程,并在主节点和从节点之间使用password-lessSSH连接。
35.全分布式环境下为什么需求password-lessSSH?
这主要因为集群中通信过于频繁,JobTracker需要尽可能快的给TaskTracker发布任务。
36.这会导致安全问题吗?
完全不用担心。
Hadoop集群是完全隔离的,通常情况下无法从互联网进行操作。
与众不同的配置,因此我们完全不需要在意这种级别的安全漏洞,比如说通过互联网侵入等等。
Hadoop为机器之间的连接提供了一个相对安全的方式。
37.SSH工作的端口号是?
SSH工作的端口号是NO.22,当然可以通过它来配置,22是默认的端口号。
38.SSH中的注意点还包括?
SSH只是个安全的shell通信,可以把它当做NO.22上的一种协议,只需要配置一个密码就可以安全的访问。
39.为什么SSH本地主机需要密码?
在SSH中使用密码主要是增加安全性,在某些情况下也根本不会设置密码通信。
40.如果在SSH中添加key,是否还需要设置密码?
是的,即使在SSH中添加了key,还是需要设置密码。
41.假如Namenode中没有数据会怎么样?
没有数据的Namenode就不能称之为Namenode,通常情况下,Namenode肯定会有数据。
42.当JobTracker宕掉时,Namenode会发生什么?
当JobTracker失败时,集群仍然可以正常工作,只要Namenode没问题。
43.是客户端还是Namenode决定输入的分片?
这并不是客户端决定的,在配置文件中以及决定分片细则。
44.是否可以自行搭建Hadoop集群?
是的,只要对Hadoop环境足够熟悉,你完全可以这么做。
45.是否可以在Windows上运行Hadoop?
你最好不要这么做,RedHatLinux或者是Ubuntu才是Hadoop的最佳操作系统。
在Hadoop安装中,Windows通常不会被使用,因为会出现各种各样的问题。
因此,Windows绝对不是Hadoop的推荐系统。
Hadoop就业面试宝典
1.0简要描述如何安装配置apache的一个开源hadoop,只描述即可,无需列出具体步骤,列出具体步骤更好。
答:
1使用root账户登录2修改IP3修改host主机名4配置SSH免密码登录5关闭防火墙6安装JDK7解压hadoop安装包8配置hadoop的核心文件hadoop-env.sh,core-site.xml,mapred-site.xml,hdfs-site.xml9配置hadoop环境变量10格式化hadoopnamenode-format11启动节点start-all.sh
2.0请;列出正常的hadoop集群中hadoop都分别需要启动哪些进程,他们的作用分别都是什么,请尽量列的详细一些。
答:
namenode:
管理集群,存储数据的原信息,并管理记录datanode中的文件信息。
Secondname:
可以做冷备,对一定范围内数据做快照性备份。
Datanode:
存储数据Jobtracker:
管理任务,并将任务分配给tasktracker。
Tasktracker:
执行JobTracker分配的任务。
3.0请写出以下的shell命令
(1)杀死一个job
(2)删除hdfs上的/tmp/aaa目录(3)加入一个新的存储节点和删除一个节点需要执行的命令答:
(1)hadoopjob–list得到job的id,然后执行hadoopjob-killjobId就可以杀死一个指定jobId的job工作了。
(2)hadoopfs-rmr/tmp/aaa(3)增加一个新的节点在新的几点上执行Hadoopdaemon.shstartdatanodeHadooopdaemon.shstarttasktracker然后在主节点中执行hadoopdfsadmin-refreshnodes删除一个节点的时候,只需要在主节点执行hadoopmradmin-refreshnodes
4.0请列出你所知道的hadoop调度器,并简要说明其工作方法答:
Fifoschedular:
默认,先进先出的原则Capacityschedular:
计算能力调度器,选择占用最小、优先级高的先执行,依此类推。
Fairschedular:
公平调度,所有的job具有相同的资源。
5.0请列出你在工作中使用过的开发mapreduce的语言答:
java,hive
6.0当前日志采样格式为a,b,c,db,b,f,ea,a,c,f请你用最熟悉的语言编写mapreduce,计算第四列每个元素出现的个数StaticfinalString
答:
publicclassWordCount1{publicstaticfinalStringINPUT_PATH="hdfs:
//hadoop0:
9000/in";publicstaticfinalStringOUT_PATH="hdfs:
//hadoop0:
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
String[]split=v1.toString().split("\t");for(Stringwords:
split){context.write(split[3],1);}}}staticclassMyReducerextendsReducer
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.publicclassBinarySearchClass2.{3.4.publicstaticintbinary_search(int[]array,intvalue)5.{6.intbeginIndex=0;//低位下标7.intendIndex=array.length-1;//高位下标8.intmidIndex=-1;9.while(beginIndex<=endIndex){10.midIndex=beginIndex+(endIndex-beginIndex)/2;//防止溢出11.if(value==array[midIndex]){12.returnmidIndex;13.}elseif(value 自动阅卷起始唯一标识,请勿删除或增加。 25.publicstaticvoidmain(String[]args)26.{27.System.out.println("Start...");28.int[]myArray=newint[]{1,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和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管理存储的数据 100.假设我们有其他的日志是不是可以对这个日志有其他的业务分析? 这些业务分析都有什么? 101.job的运行流程(提交一个job的流程)? 102Hadoop生态圈中各种框架的运用场景? 103.hive中的压缩格式RCFile、TextFile、SequenceFile各有什么区别? 以上3种格式一样大的文件哪个占用空间大小..等等 104假如: Flume收集到的数据很多个小文件,我
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hadoop 试题